使用ffmpeg拼接視頻踩坑記錄

      網友投稿 1412 2022-05-29

      最近在工作中遇到一個FFmpeg的坑,特此記錄下。我們在工作中,有個需求是將分段存儲的視頻拼接成一個完整的視頻,發現使用ffmpeg拼接后視頻時長不對。舉個列子,我用ffmpeg將4個半小時的mp4視頻拼接后,得到的視頻長度遠超過2小時,觀看后發現在視頻的連接點,會出現長時間的卡頓,導致最終視頻時間超長。

      在ffmpeg官方文檔Concatenating media files中,介紹了三種視頻拼接的方式,分別如下:

      1. 針對同種編碼的視頻

      可以將所有視頻文件名列到一個文本文件中,格式如下:

      file '/path/to/file1.wav' file '/path/to/file2.wav' file '/path/to/file3.wav'

      然后使用命令ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.wav 完成對視頻的拼接,這種方式也是拼接最快的方式。大致原理是直接將視頻首位相接,不會涉及到編解碼,整體執行的時間主要是磁盤IO的時間,我們實測100個文件,拼接成一個5g大的長視頻,也只需要幾十秒的時間。

      但是,這種拼接方式有自己的局限,首先它只能拼接相同編碼的視頻,比如都是mp4。而且,這種方式也有bug,拼接mp4視頻文件得出來的視頻時長不對,就是我開頭所說的問題,因為這個bug我們差點改業務需求。不過這個bug可以繞過去,就是將所有mp4文件先轉成ts文件,然后對ts文件拼接,拼接ts視頻不會出現這個bug。

      mp4轉ts文件的命令如下:

      ffmpeg -i input.mp4 -c:v copy ouput.ts

      因為mp4轉ts的過程也不涉及到視頻編解碼,所以也很快,我們也是用這種方式繞開了bug,完成了整個需求。 其實視頻拼接還有兩種方式,對我們都不太合適,后續會說到。

      2.使用concat協議

      ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy output.ts

      這個方式我們沒有具體測試,貌似不會涉及到編解碼,所以應該也挺快的,但網上說這個命令執行的條件也比較苛刻,也不推薦使用。我們沒有用的原因單純是因為需要拼接上百個視頻,這種方式需要拼一個非常長的命令行。

      3. 使用Concat filter

      ffmpeg -i input1.mp4 -i input2.webm -i input3.mov -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mkv

      這種使用方式還是偏復雜,具體可以參考下官方文檔Concatenating media files。該方法的優點就是效果穩定、且支持不同格式的視頻,所以也是最推薦的視頻拼接方式。但缺點也很明顯,需要涉及到視頻的編解碼,所以會非常耗性能,就是因為性能問題,我們也拋棄這種方案了。

      使用ffmpeg拼接視頻踩坑記錄

      說下我們實測的數據,我們用通用服務器,拼接60分鐘的視頻需要20-30分鐘(和服務器配置有關),看著還行,但我們每天有數千小時的視頻需要拼接,需要幾十臺服務器24小時滿負荷工作才能完成,對于我們當下來說成本還是偏高。 我們也委托別人試了使用GPU加速的拼接效果,確實快了很多,1小時視頻1分鐘內就可以完成。

      總結

      我們當前沒有GPU資源,所以當下還是選擇了使用第一種視頻拼接方式,第一種方式目前最大的瓶頸只在于網絡IO(視頻下載上傳)上,但這種方案也限制了我們只能完成對視頻的拼接,無法調整其分辨率以達到降低存儲的目的。長期來看我們肯定得考慮使用硬件加速的方式完成超大視頻量的處理。

      視頻

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:用python實現新詞發現程序——基于凝固度和自由度
      下一篇:一文教你快速了解并安裝IntelliJ IDEA及其目錄介紹
      相關文章
      大胆亚洲人体视频| 亚洲а∨天堂久久精品9966| 久久综合久久综合亚洲| 亚洲伊人久久大香线蕉苏妲己| 国产亚洲精品成人a v小说| 国产成人精品亚洲一区| 亚洲av中文无码乱人伦在线观看| 久久久久亚洲国产| 亚洲日本成本人观看| 亚洲色成人四虎在线观看| 国产亚洲精品影视在线| 亚洲综合在线一区二区三区| 99999久久久久久亚洲| 色偷偷女男人的天堂亚洲网| 2020久久精品亚洲热综合一本| 7777久久亚洲中文字幕| 亚洲国产精品嫩草影院| 亚洲av无码一区二区三区在线播放| 亚洲精品国产suv一区88| 日韩国产精品亚洲а∨天堂免| 亚洲AV无码一区二区三区鸳鸯影院| 日韩国产精品亚洲а∨天堂免| 日韩色视频一区二区三区亚洲| 国产精品亚洲小说专区| 亚洲精品视频在线观看你懂的| 亚洲天堂在线视频| 亚洲色无码专区在线观看| 精品国产亚洲一区二区三区| 图图资源网亚洲综合网站| 亚洲专区先锋影音| 亚洲成年人电影在线观看| 亚洲制服丝袜第一页| 亚洲一区二区三区写真 | 成人婷婷网色偷偷亚洲男人的天堂| 亚洲AV永久无码精品放毛片| 国产亚洲综合视频| 亚洲色婷婷综合久久| 亚洲国产一区二区三区青草影视| 亚洲成人福利网站| 亚洲一日韩欧美中文字幕在线| 亚洲 自拍 另类小说综合图区|