有人在 ffmpeg 中使用了「-segment_times」開關嗎?

有人在 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 <[email protected]>
Date:   Sat Jan 28 22:36:38 2012 +0100

    lavf/segment: add -segment_times option

    Address trac ticket #1504.

我下載了這個靜態建置的版本ffmpegffmpeg.static.64bit.2013-10-05.tar.gz來自ffmpeg 站點,但它顯然不包括該開關。

$ ./ffmpeg --help |& grep segment
$

有人能讓這個新開關正常運作嗎?

答案1

是不是因為失蹤了-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 創建影片”“根據多個起始和結束幀索引將視訊分割為多個區塊”

相關內容