1. 程式人生 > >TS流批量下載工具

TS流批量下載工具

工具目錄下有3個檔案

ffmpeg.exe: 主要用來 處理TS檔案轉為PM4檔案用到,可以自行到相關網站下載 http://ffmpeg.org/


OnlineFilm.exe  主要執行程式
FilesDownLoad.dll 下載模組
 


新建
     新建 TS檔案的索引檔案,*.M3u8,怎麼獲取,參照“Ts檔案說明”。

M3U8檔案如果是本地的檔案,需要填寫 通用地址。


修改

刪除

    直接刪除這條記錄,可以多選刪除

統計
  
   統計已經下載完成的記錄數

下載

   彈出下載的視窗,進行下載。每個資原始檔都需要開啟該介面進行下載。


開啟資料夾

  開啟該下載的資料夾


讀取M3u8

 批量讀取檔案  

讀取的批量檔案為 DetailList.txt,並放置到 和工具一個目錄下。
格式為:名稱|地址(URL),一行一條記錄。

美麗 | https://www.abc/xxx/index.m3u8
直播 | https://www.abc/yyy/index.m3u8


合併TS檔案

  如果多個TS檔案,沒有自動合併,可以使用該功能進行合併操作

 

  TS檔案轉換為MP4檔案,需要用到 ffmpeg.exe

 

 

1、TS 檔案合併

        private void Merge()
        {
            CmdHelper c = new CmdHelper();

            //>copy/b f:\ts\11\*.ts f:\ts\11\temp\new.ts


            string newpath = _entity.RootFilePath + "\\" + _entity.FileName + "\\";
            string newpath1 = _entity.RootFilePath + "\\" + _entity.FileName + "\\tmp\\";

            if (!Directory.Exists(newpath1)) //判斷是否存在
            {
                Directory.CreateDirectory(newpath1); //建立新路徑  
            }

            if (File.Exists(newpath1 + _entity.FileName + ".ts"))
            {
                File.Delete(newpath1 + _entity.FileName + ".ts");
            }


            string cmd = @"copy/b " + newpath + "*.ts " + newpath1 + _entity.FileName + ".ts";

            string s = c.RunCmd(cmd);

            //  MessageBox.Show("合併完成");
        }

        /// <summary>
        /// 執行CMD語句
        /// </summary>
        /// <param name="cmd">要執行的CMD命令</param>
        public string RunCmd(string cmd)
        {
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.FileName = "cmd.exe";
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.RedirectStandardError = true;
            proc.StartInfo.RedirectStandardInput = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.Start();
            proc.StandardInput.WriteLine(cmd);
            proc.StandardInput.WriteLine("exit");
            string outStr = proc.StandardOutput.ReadToEnd();
            proc.Close();
            return outStr;
        }

2、TS轉MP4

        string fullFileName = System.IO.Path.Combine(Application.StartupPath, "ffmpeg.exe");  

        /// <summary>
        /// TS -->Mp4
        /// </summary>
        private void TsToMP4()
        {
            // ffmpeg -y -i F:\Ts\11\tmp\11.ts -c:v libx264 -c:a copy -bsf:a aac_adtstoasc F:\Ts\11\tmp\11.mp4  
            //ffmpeg -y -i in.ts -c:v libx264 -c:a copy -bsf:a aac_adtstoasc output.mp4
            //ffmpeg -y -i F:\Ts\11\tmp\11.ts -c:v libx264 -c:a copy -bsf:a aac_adtstoasc F:\Ts\11\tmp\11.mp4        

            if (!File.Exists(_path))
            {
                return;
            }  
            
            string Mp4File = System.IO.Path.GetDirectoryName(_path) + "\\" +System.IO.Path.GetFileNameWithoutExtension(_path) + ".mp4";    

            string para = string.Format("-y -i {0} -c:v libx264 -c:a copy -bsf:a aac_adtstoasc {1}", _path, Mp4File);

            CmdHelper.RunMyProcess(para, fullFileName);      
        }


        /// <summary>
        /// 
        /// </summary>
        /// <param name="Parameters">執行引數</param>
        /// <param name="FFmpegPath">ffmpeg.exe 路徑</param>
        public static void RunMyProcess(string Parameters, string FFmpegPath)
        {
            var p = new Process();
            p.StartInfo.FileName = FFmpegPath;
            p.StartInfo.Arguments = Parameters;
            //是否使用作業系統shell啟動
            p.StartInfo.UseShellExecute = false;
            //不顯示程式視窗
            p.StartInfo.CreateNoWindow = true;
            p.Start();  
            p.WaitForExit();
            p.Close();
        }

 

 

工具下載地址:https://download.csdn.net/download/yunfan555/10788464

 

歡迎交流。