示例#1
0
        public static Cutlist GetCuts(string input)
        {
            Cutlist Cuts = new Cutlist();
            IEnumerable <Chapter> chapters = Mpeg.GetChapters(input);

            List <Chapter> ads = chapters.Where(c => c.tag.value == "Video").ToList();

            foreach (Chapter chapter in ads)
            {
                Cut cut = new Cut()
                {
                    Start = chapter.start_time + 2, End = chapter.end_time - 2
                };
                if (Cuts.Count == 0)
                {
                    cut.Start += 4;
                }
                if (chapter == ads.Last())
                {
                    cut.End -= 5;
                }
                if (cut.End > cut.Start)
                {
                    Cuts.Add(cut);
                }
            }
            return(Cuts);
        }
示例#2
0
        public static void Trim(string input, string output)
        {
            string outDir = Path.GetDirectoryName(output);

            if (!Directory.Exists(outDir))
            {
                Directory.CreateDirectory(outDir);
            }
            Cutlist Cuts = GetCuts(input);

            //if (Cuts.Count ==0)
            //{
            //	double duration = Mpeg.GetDuration(input);
            //	Cuts.Add(new Cut() { Start = 6, End = duration - 7 });
            //}
            if (Cuts.Count > 0)
            {
                string meta = Mpeg.GetMetadata(input);
                Mpeg.RemoveChapters(meta);
                List <string> files = new List <string>();
                foreach (Cut cut in Cuts)
                {
                    string mp4 = GetTempMP4Name();
                    Mpeg.Trim(input, mp4, cut);
                    files.Add(mp4);
                }
                string temp = GetTempMP4Name();
                Mpeg.combine(files, output, meta, Cuts.Sum(c => c.End - c.Start));
//				Mpeg.addMeta(temp, output, meta);
                foreach (string file in files)
                {
                    File.Delete(file);
                }
                File.Delete(meta);
                File.Delete(temp);
            }
            else
            {
                double duration = Mpeg.GetDuration(input);
                Cut    cut      = new Cut()
                {
                    Start = 6, End = duration - 7
                };
                Mpeg.Trim(input, output, cut);
            }
        }