91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何實現視頻的批量剪輯功能

發布時間:2023-03-23 11:46:35 來源:億速云 閱讀:169 作者:iii 欄目:開發技術

今天小編給大家分享一下C#如何實現視頻的批量剪輯功能的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

一,采用預置數據data.txt,記錄【視頻文件名,起點時間,終止時間】,此為單獨一行,多個文件就多行,如下圖

C#如何實現視頻的批量剪輯功能

二,一個videocut類

class VideoCut
    {
        public string file;
        public string begin;
        public string end;
        public VideoCut(string f,string b,string w)
        {
            file = f;
            begin = b;
            end = w; 
        }
    }

三,解析數據文件data.txt,生成videocut的列表

        count = 0;
            listbox.Items.Clear();
            logno("開始解析數據文件....");
            if (!System.IO.File.Exists("data.txt"))
            {
                log("找不到數據文件data.txt");
                return;
            }
            List<VideoCut> list = new List<VideoCut>();
            string[] ary;
            TimeSpan begin;
            TimeSpan end;
            int i = 0;
            foreach (string line in System.IO.File.ReadLines("data.txt"))
            {
                ary = line.Trim().Split(',');
                log("第" + ++i + "行:" + line.Trim());
                if(ary.Length!=3)
                {
                    log("數據:"+line.Trim()+",格式不對");
                        continue;
                }
                if (!System.IO.File.Exists(ary[0]))
                {
                    log("文件:"+ary[0].Trim()+",不存在");
                    continue;
                }
                if (!TimeSpan.TryParse(ary[1].Trim(), out begin))
                {
                    log("起點時間:" + ary[1].Trim() + ",格式不對");
                    continue;
                }
                if (!TimeSpan.TryParse(ary[2].Trim(), out end))
                {
                    log("截止時間:" + ary[2].Trim() + ",格式不對");
                    continue;
                }
                if (end <= begin)
                {
                    log("截止時間應該大于起點時間!!!!!");
                    continue;
                }
                list.Add(new VideoCut(ary[0], ary[1], (end-begin).ToString()));
            }
            logno("解析數據文件完畢,成功解析文件:"+list.Count+"個...");
            if (list.Count < 1)
            {
                log("沒有數據,退出");
            }

 四,一個ffmpeg的剪輯類

class FFMEPG
    {
        //視頻切割
        public static string Cut(string OriginFile/*視頻源文件*/, string startTime/*開始時間*/, string endTime/*結束時間*/)
        {
            string DstFile = OriginFile.Replace(".", "a.");
            string strCmd = " -ss "+ startTime
                +" -i " + OriginFile 
                + " -to " +endTime
                + " -vcodec copy -acodec copy " + DstFile + " -y ";
            if (System.IO.File.Exists(DstFile))System.IO.File.Delete(DstFile);
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "ffmpeg.exe";//要執行的程序名稱
            p.StartInfo.Arguments = " " + strCmd;
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = false;//可能接受來自調用程序的輸入信息
            p.StartInfo.RedirectStandardOutput = false;//由調用程序獲取輸出信息
            p.StartInfo.RedirectStandardError = false;//重定向標準錯誤輸出
            p.StartInfo.CreateNoWindow = false;//不顯示程序窗口
 
            p.Start();//啟動程序
            p.WaitForExit();//等待程序執行完退出進程
 
            if (System.IO.File.Exists(DstFile))
            {
                return DstFile;
            }
            return "";
        }
    }

五,循環調用videocut列表

VideoCut c;
            string file;
            for (i = 0; i < list.Count; i++)
            {
                logno("開始剪切第【" +i + "】個文件...");
                c=list[i];
                file = FFMEPG.Cut(c.file, c.begin, c.end);
                if (file.Length > 0)
                {
                    log("剪切成功,輸出文件:"+file);
                }
                else log("剪切失敗.....");
            }
            log("");
            log("");
            log("剪切完成......");

六,大致就這樣了,運行如下圖

C#如何實現視頻的批量剪輯功能

 ffmpeg命令要能夠調用哈,放到同目錄或都windows系統目錄都行。

以上就是“C#如何實現視頻的批量剪輯功能”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新密市| 东平县| 长泰县| 金沙县| 堆龙德庆县| 长顺县| 上高县| 金寨县| 钟山县| 塔河县| 济阳县| 延长县| 南皮县| 奉新县| 确山县| 广元市| 宁明县| 秭归县| 景德镇市| 新丰县| 波密县| 临夏县| 托里县| 永登县| 文水县| 仲巴县| 新安县| 东光县| 广南县| 松江区| 筠连县| 巴彦淖尔市| 无锡市| 瓮安县| 林甸县| 天等县| 卢龙县| 砀山县| 黔西县| 长治县| 射阳县|