将大量ts文件合并为mp4
先看Python源代码
import subprocess
import os
def Final_merge(write_url,name,):
cmdLine = f'ffmpeg -allowed_extensions ALL -i {write_url}{name}.m3u8 -c copy {write_url}{name}.mp4 -y'
subprocess.call(cmdLine, shell=True)
for each in os.listdir(write_url):
file_data = write_url + "\\" + each # 目标文件夹下的所有东西的绝对路径
if file_data.endswith(".ts") or file_data.endswith(".m3u8") : # 将所有ts文件以及m3u8文件删除
os.remove(file_data)
if __name__ == '__main__':
write_url = f"./video/BadG/" ##ts文件所在地址
m3u8_name = f"BadG_1" ##m3u8文件要与ts文件在同一个文件夹
Final_merge(write_url, m3u8_name)
print("***********************************************************8")
上述源代码需要下载ffmpeg,以及ts文件相对应的m3u8文件(爬取ts文件时顺便在网址中爬取就行了)
下载ffmpeg
爬取了上百个ts文件后要做的就是讲将ts文件合并。本人尝试了很多合并ts文件的方法,安装ffmpeg是效果最好的。
ffmpeg安装教程点击这里就好了。
安装完后,再下载subprocess库,确保ts文件和m3u8文件放在指定文件夹,就可以运行上述程序了。如果有报错就可以看看下面的介绍。
m3u8文件
m3u8文件在爬取ts文件时顺便爬取就可以了。值得一提的是,m3u8文件是一个索引纯文本文件,文件中包含的是所有ts文件的参数数据以及ts文件名。
例如:
所以不能更改网址中的ts文件名!原网址中ts文件名字是什么,下载到本地后依然不要变。如果已经更改,要么将所有ts文件名字改回来,要么自己再人工写一个txt文件替代m3u8,要么干脆把所有ts文件重新下载一遍。
人工写一个txt文件的方法点击这里就可以了。按照链接中的样例,构建自己的txt文件,然后运行就可以了。