TS流批量下载工具

TS流批量下载工具工具目录下有3个文件ffmpeg.exe:主要用来处理TS文件转为PM4文件用到,可以自行到相关网站下载http://ffmpeg.org/OnlineFilm.exe 主要执行程序FilesDownLoad.dll下载模块 新建   新建TS文件的索引文件,*.M3u8,怎么获取,参照“Ts文件说明”。M3U8文件如果是本地的文件,需要填写通用地址。…

大家好,又见面了,我是你们的朋友全栈君。

工具目录下有3个文件

ffmpeg.exe: 主要用来 处理TS文件转为PM4文件用到,可以自行到相关网站下载 http://ffmpeg.org/

OnlineFilm.exe  主要执行程序
FilesDownLoad.dll 下载模块
 

TS流批量下载工具
新建
     新建 TS文件的索引文件,*.M3u8,怎么获取,参照“Ts文件说明”。

M3U8文件如果是本地的文件,需要填写 通用地址。

修改

删除

    直接删除这条记录,可以多选删除

统计
  
   统计已经下载完成的记录数

下载

   弹出下载的窗口,进行下载。每个资源文件都需要打开该界面进行下载。

TS流批量下载工具
打开文件夹

  打开该下载的文件夹

读取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/10812630

 

 

欢迎交流。

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161203.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 差分数组模板

    差分数组模板参考于labuladong:论那些小而美的算法技巧:差分数组一、什么时候使用差分数组呢?相信很多人都遇到过这类题:给定一个原数组长度为n,查询次数m,每次查询给定一个区间[l,r]和一个整数k,使得原数组介于[l,r]之间的元素同时增(或减)k输出最终的数组num[8,2,6,3,1]m=2131023注:第一次查询num=83741第二次查询num=1161041最终num=1

    2022年6月7日
    34
  • Louvain算法_算法问题

    Louvain算法_算法问题Louvain算法一种基于模块度的图算法模型,与普通的基于模块度和模块度增益不同的是,该算法速度很快,而且对一些点多边少的图,进行聚类效果特别明显。算法流程:1、初始时将每个顶点当作一个社区,社区个数与顶点个数相同。2、依次将每个顶点与之相邻顶点合并在一起,计算它们的模块度增益是否大于0,如果大于0,就将该结点放入该相邻结点所在社区。3、迭代第二步,直至算法稳定,即所有顶点所属社区不再变…

    2025年7月21日
    0
  • taro编译小程序问题_taro支付宝小程序要注意什么

    taro编译小程序问题_taro支付宝小程序要注意什么项目地址:https://github.com/kakaoG/taro-small-program

    2025年6月22日
    4
  • c语言贪吃蛇(简易版本含完整代码)

    c语言贪吃蛇(简易版本含完整代码)这个贪吃蛇是在我学完C语言的基本部分在跟着哈工大的c语言程序设计Mooc课程完了之后做的因为学完C语言很迷茫不晓得应该学什么学校里面的题库感觉刷起来又没有实际我能看到的东西我认为在阶段性的学习过程中应该找到自己能够看得到的成果才能刺激自己继续往前进继续学习不然很枯燥的学习谁都坚持不下去这也是在看了视频教程后自己一步步敲出来的其实还是建议大家在看懂了代码后自己实现因为不要怕自己忘不忘这又不是理论知识敲出来的代码就是自己的一步步的提升加油qwq这里是head.h头文件因为

    2022年6月28日
    28
  • Android 完全退出app程序

    Android 完全退出app程序Android完全退出app程序(不保留历史打开app记录)finishAndRemoveTask();//该方法在APIlevel21之后添加。System.exit(0);android.os.Process.killProcess(android.os.Process.myPid());

    2022年7月17日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号