FFmpeg精確時間拆分視頻文件

如果視頻文件太大,因為項目原因需要拆分成多個文件,如下,就可以拆分視頻
ffmpeg -ss [start] -t [duration] -accurate_seek -i [in].mp4 -codec copy [out].mp4

[start]:為需要截取內(nèi)容的開始時間
[duration]:為需要截取的時長
[in]:為輸入視頻文件名
[out]:為輸出視頻文件名

這種截取的好處是特別快,因為不會對視頻重新編碼,但是這種方式會導(dǎo)致:如果視頻結(jié)尾不是關(guān)鍵幀,那么視頻最后就會出現(xiàn)一段空白。

這個時候,你可以加入-avoid_negative_ts 1變成這樣:

ffmpeg -ss [start] -t [duration] -accurate_seek -i [in].mp4 -codec copy -avoid_negative_ts 1 [out].mp4

這樣截取視頻之后,時間不會精確截取,他會找到附近對關(guān)鍵幀,補全這個視頻,但是這樣也會有問題,連續(xù)分割的視頻之間存在細微的交集。

最后詳細看了下FFmpeg的文檔,如果你需要精確截取視頻,避免關(guān)鍵幀的丟失并精確截取時間,這個時候最好是重新編碼視頻。就變成這樣了:

ffmpeg -ss [start] -t [duration] -i [in].mp4 -c:v libx264 -c:a aac -strict experimental -b:a 98k [out].mp4

最后,你可以寫一段腳本,把整個視頻拆分:

import os
import json

with open("timeline.json") as f:
    times = json.loads(f.read())
    
times = times["timeline"]

for i in range(len(times)):
    start = times[i]["time"]
    try:
        length = times[i+1]["time"] - times[i]["time"]
    except:
        length = 1000
    os.system('ffmpeg -ss %s -i small.mp4 -t %s -c:v libx264 -c:a aac -strict experimental -b:a 98k %s.mp4' % (start,length,str(i+1)))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容