从.m3u8到.mp4:使用批处理脚本完成视频处理的完整指南
微wx笑
2025-02-23【运维日志】
0
0关键字:
m3u8 mp4 bat 批处理
这里介绍一个Windows批处理脚本(Windows Batch Script),主要用于处理 .m3u8 ts 视频文件的下载和合并功能。以下是程序的主要功能和逻辑流程:功能概述参数检查与路径处理: 检查
这里介绍一个Windows批处理脚本(Windows Batch Script),主要用于处理 .m3u8 ts 视频文件的下载和合并功能。
以下是程序的主要功能和逻辑流程:
功能概述
参数检查与路径处理:
检查是否传递了文件或文件夹路径作为参数。
判断传递的路径是文件还是文件夹,并根据路径切换到相应的目录。
文件处理逻辑:
如果目标目录中存在
.m3u8
文件(如index.m3u8
或以当前目录名命名的.m3u8
文件),程序会解析该文件。根据
.m3u8
文件中的内容,提取有效的文件链接(如.ts
文件的 URL)。文件下载:
使用
aria2c
工具批量下载.m3u8
文件中列出的文件(如.ts
文件)。下载的文件会保存到当前目录。
文件合并:
使用
ffmpeg
将下载的文件片段(如.ts
文件)合并为一个完整的视频文件(如.mp4
文件)。清理操作:
提供选项删除下载的片段文件、临时文件(如
newindex.m3u8
、links.list
等)。根据用户选择,保留或删除这些文件。
错误处理与用户交互:
检查目标文件是否已存在,并提示用户是否需要重新生成。
如果
.m3u8
文件或目标文件已存在,程序会询问用户是否覆盖。如果下载或合并过程中出现错误,程序会提示用户。
详细逻辑流程
参数检查:
如果未传递参数,程序提示用户并退出。
如果传递了参数,程序会判断路径是文件还是文件夹。
目录切换:
如果路径是文件夹,程序切换到该文件夹。
如果路径是文件,程序切换到文件所在的目录。
解析
.m3u8
文件:程序会尝试解析
index.m3u8
或以当前目录名命名的.m3u8
文件。提取文件链接(如
.ts
文件的 URL)并保存到links.list
文件中。如果
.m3u8
文件中包含加密信息(如 AES-128 密钥链接),程序会提取并处理这些链接。文件下载:
使用
aria2c
根据links.list
文件中的链接批量下载文件。下载的文件会保存到当前目录。
文件合并:
使用
ffmpeg
将下载的文件片段(如.ts
文件)合并为一个.mp4
文件。提供多种
ffmpeg
命令选项,用户可以根据需要选择合适的命令。清理操作:
提供选项删除下载的片段文件、临时文件(如
newindex.m3u8
、links.list
等)。用户可以选择保留或删除这些文件。
错误处理与用户交互:
如果目标文件已存在,程序会提示用户是否重新生成。
如果
.m3u8
文件或目标文件已存在,程序会询问用户是否覆盖。如果下载或合并过程中出现错误,程序会提示用户。
应用场景
该脚本主要用于处理视频片段的下载和合并,通常用于处理
.m3u8
格式的视频文件(如在线视频、直播回放等)。用户可以通过传递文件或文件夹路径作为参数,让脚本自动完成下载和合并操作。
脚本提供了用户交互功能,允许用户根据需要选择是否覆盖文件或删除临时文件。
注意事项
程序依赖于外部工具
aria2c
和ffmpeg
,需要确保这些工具已安装并配置在系统路径中。程序的逻辑较为复杂,涉及文件路径处理、文件下载、文件合并等多个步骤,需要谨慎使用。
用户在运行脚本时需要确保传递的参数正确,否则可能导致程序无法正常运行。
完整的程序代码
如何使用呢?
将以上内容保存为 “ts2mp4.bat”,放在系统目录下,比如:C:\Windows,这样你就可以在任何一个目录调用它了;
首先你得知道如何拿到视频的 .m3u8 文件的URL地址 ,下载到本地;
然后就可以使用上面的bat下载ts切片并合并为 mp4视频文件了,例如: ts2mp4 index.m3u8
你也可以将以下内容导入注册表:
这样在 .m3u8 文件上点击鼠标右键时,就可以通过右键菜单的形成调用 ts2mp4 了;
该程序目前还存在一个问题 :如果 .m3u8 文件中的ts切片url地址是相对的,不是完整的url的话,无法实现下载;
编写该bat文件遇到的坑:
echo 后面输出的内容中有变量(并且变量中包含特殊字符,比如小括号)的情况必须使用双引号将输出内容括起来,否则即使程序没有执行到那一行,而是执行到那个程序块的话也是会报错停止执行,这给查找问题发生的位置带来不小的麻烦
bat的字符查找功能比较弱,要要找字符串的话实现起来比较麻烦;
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/service/2025-02-23/2029.html