Ffmpeg
有人使用 ffmpeg 獲得了開關“-segment_times”嗎?
在搜尋 U&L 時,我注意到有很多問題詢問如何編寫
ffmpeg
命令行生成腳本,如下所示:ffmpeg -i video.mp4 -ss 00:00:00 -t 00:10:00 -c copy 01.mp4 ffmpeg -i video.mp4 -ss 00:10:00 -t 00:10:00 -c copy 02.mp4 ffmpeg -i video.mp4 -ss 00:20:00 -t 00:10:00 -c copy 03.mp4
在為此研究解決方案時,我在問題跟踪器中偶然發現了這張票
ffmpeg
,標題為:將輸入影片拆分為多個輸出影片塊。這張票突出顯示了一個更新檔,它使您最終能夠提供一個時間點列表,以使用單個命令行將影片切割成更小的部分,如下所示:
$ ffmpeg -i input.avi -f segment -segment_times 10,20,40,50,90,120,180 \ -vcodec copy output02%d.avi
該更新檔似乎已在此版本的程式碼儲存庫中發布:
commit 2058b52cf8a4eea9bf046f72b98e89fe9b36d3e3 Author: Stefano Sabatini <stefasab@gmail.com> Date: Sat Jan 28 22:36:38 2012 +0100 lavf/segment: add -segment_times option Address trac ticket #1504.
我從ffmpeg 站點下載了這個靜態建構的ffmpeg.static.64bit.2013-10-05.tar.gz
ffmpeg
版本,但它顯然不包括該開關。$ ./ffmpeg --help |& grep segment $
有沒有人能讓這個新開關工作?
是因為缺少
-map
選項,它將輸入流指定為輸出文件的源。我正在使用 ffmpeg 2.6.1 並且能夠使用以下方式分割影片-segment_times
:ffmpeg -i foo.mp4 -segment_times 10,20,30,40 -c copy -map 0 -f segment %03d.mp4
如果您需要更精細的分割,您可以使用 OpenCV 讀取原始影片並將所需幀寫入新分割。查看這些:“使用 OpenCV 創建影片”和“根據多個開始和結束幀索引將影片拆分為多個塊”