簡體   English   中英

使用 filter_complex 時如何使用 ffmpeg 修剪視頻?

[英]how to trim videos with ffmpeg when using a filter_complex?

我正在使用帶有 ffmpeg 的 complex_filter 來加入多個視頻文件。

ffmpeg -i video1.webm -i video2.webm -v debug -strict -2 -filter_complex "[0:v] [0:a:0] [1:v] [1:a:0] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mp4

這對我有用。 但是現在我想為每個輸入視頻選擇一個起點和一個終點,以便我可以剪切每個視頻。

我已經試過了

ffmpeg -i video1.webm -ss 00:00:01.000 -t 00:00:05.658 -i video2.webm -ss 00:00:01.000 -t 00:00:05.658 -v debug -strict -2 -filter_complex "[0:v] [0:a:0] [1:v] [1:a:0] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mp4

但這並沒有按預期工作。 -to 參數也不起作用。

是否可以使用復雜的過濾器來做到這一點?

Oculus 的 John Carmack 說你可以使用這個( https://mediamachine.io/blog/ffmpeg-series-complex-filters-trim-concat/ ):

ffmpeg \
-i "$INPUT_FILE_1" \
-i "$INPUT_FILE_2" \
-i "$INPUT_FILE_3" \
-filter_complex \
"[0:v]trim=start=5:duration=10,setpts=PTS-STARTPTS[v0]; \
 [0:a]atrim=start=5:duration=10,asetpts=PTS-STARTPTS[a0]; \
 [1:v]trim=start=20:duration=10,setpts=PTS-STARTPTS[v1];
 [1:a]atrim=start=20:duration=10,asetpts=PTS-STARTPTS[a1]; \
 [2:v]trim=start=20:duration=10,setpts=PTS-STARTPTS[v2];
 [2:a]atrim=start=20:duration=10,asetpts=PTS-STARTPTS[a2]; \
 [v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[final]" \
-map "[final]" concat-video.mp4

所以,對於你的例子

ffmpeg -i video1.webm -i video2.webm  -v debug -strict -2
-filter_complex 
"[0:v]trim=start=1:duration=4.658[v0]
[0:a:0]atrim=start=1:duration=4.658[a0]
[1:v]trim=start=1:duration=4.658[v1]
[1:a:0]atrim=start=1:duration=4.658[a1]
[v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]"
-map "[v]" -map "[a]" output.mp4

如果您的視頻是從不同的起始位置修剪的,我很確定您只需要 setpts 內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM