MP4视频拼接

问题和思路


从央视CNTV上面抓取的视频每一集都分了好多段,得想办法把每一集合并成一个文件才行。MP4文件不像ts文件可以直接用copy /B input1+input2+... output,合并的结果并不是想要的。
最近刚接触了开源神器ffmpeg,就看了看官方的manual和FFmpeg Basics这本书,了解了个大概,结合前辈的解决方法,用python自动读取文件名,然后生成bat代码(当然也可以直接用python执行cmd命令,命令有点多,效率问题,就用批处理啦)。

解决过程


先看现在下来的文件,一共10集,每集分成了8段:


原视频文件

直接上代码:

import os
dlist = os.listdir() #获取文件列表
f = open('process.bat','w',encoding = 'utf-8') #创建批处理文件
for n in range(0,10):  
    for i in dlist[0+n*8:8+n*8]:
        f.write('ffmpeg -i "%s" -codec copy -vbsf h264_mp4toannexb "%s.ts" \n'%(i,i[-6]))
    f.write('ffmpeg -i "concat:0.ts|1.ts|2.ts|3.ts|4.ts|5.ts|6.ts|7.ts" -codec copy -absf aac_adtstoasc "%s.mp4"\n' \
            %(dlist[n*8][-16:-8].replace(' ','')))
    f.write('del *.ts\n')
f.close() 

生成的批处理文件:


process.bat

在powershell中切换路径到指定文件夹,运行python脚本生成批处理文件,然后直接运行批处理文件。(cmd不好使,真不好使,呼...)
处理完成后:


处理后

问题就解决了

推荐阅读更多精彩内容