問題和思路
從央視CNTV上面抓取的視頻每一集都分了好多段,得想辦法把每一集合并成一個文件才行。MP4文件不像ts文件可以直接用copy /B input1+input2+... output
,合并的結(jié)果并不是想要的。
最近剛接觸了開源神器ffmpeg
,就看了看官方的manual和FFmpeg Basics這本書,了解了個大概,結(jié)合前輩的解決方法,用python自動讀取文件名,然后生成bat
代碼(當然也可以直接用python執(zhí)行cmd命令,命令有點多,效率問題,就用批處理啦)。
解決過程
先看現(xiàn)在下來的文件,一共10集,每集分成了8段:
原視頻文件
直接上代碼:
import os
dlist = os.listdir() #獲取文件列表
f = open('process.bat','w',encoding = 'utf-8') #創(chuàng)建批處理文件
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不好使,真不好使,呼...)
處理完成后:
處理后
問題就解決了