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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手把手教你搭建个人博客!

    作者:dimsky链接:https://www.jianshu.com/p/4eaddcbe4d12 三步完成免费个人博客搭建, 这是一篇小白也能看懂的文章,本文主要针对mac O…

    2021年6月22日
    127
  • 使用Docker部署MySQL[通俗易懂]

    使用Docker部署MySQL[通俗易懂]在Docker下部署MySQL

    2025年6月25日
    5
  • SDN介绍(什么是SDN)

    SDN介绍(什么是SDN)SDN 介绍一 什么是 SDN 二 SDN 解决什么问题 三 传统网络概念和结构体系传统网络数据控制与转发 传统网络架构 四 SDN 概述 SDN SoftwareDefi 软件定义网络 SDN 的分类五 SDN 网络架构 SDN 网络体系架构的三层模型 SDN 网络部署方式六 SDN 的价值网络业务快速创新 简化网络 网络设备白牌化 业务自动化 网络路径流量优化 一 什么是 SDN SD

    2025年6月29日
    1
  • navicat15激活码linux_在线激活

    (navicat15激活码linux)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWN…

    2022年3月26日
    64
  • mysql的慢查询日志_docker查看日志最后100行

    mysql的慢查询日志_docker查看日志最后100行一.慢查询介绍MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过指定阀值的SQL语句,运行时间超过long_query_time值的SQL,会被记录到慢查询日志中。默认情况下,MySQL数据库并不启动慢查询日志,需要手动开启。如果不是调优需要的话,一般不建议开启,因为开启慢查询日志会或多或少带来一定的性能影响。在SQLServer中我们利用S…

    2022年10月10日
    2
  • [Motion]MPU9250的详细功能

    简述接下来的内容将对MPU9250的基本的功能进行详细的介绍,主要会分模块进行阐述。时钟MPU9250有两个内部时钟源,以及一个PLL。内部时钟源:时钟源说明内部振荡器功耗低,但时钟精度略差X,Y或Z方向的GyroMEMS时钟,功耗较高,但时钟精确(只要Gyro一经启用,就会使用该时钟源)时钟的选择需要综合平衡时钟精度和功耗两个因素,所以从MPU9250的性

    2022年4月8日
    39

发表回复

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

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