问题和思路
从央视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不好使,真不好使,呼...)
处理完成后:
处理后
问题就解决了
网友评论