video - 使用 filter_complex 时如何使用 ffmpeg 修剪视频?

标签 video ffmpeg trim

我正在使用带有 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 的东西。

关于video - 使用 filter_complex 时如何使用 ffmpeg 修剪视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28157404/

相关文章:

video - 将 S3 对象访问限制为来自特定域的请求

iphone - iOS 视频 : More than 4 simultaneous AVAssetReaders possible?

java - 没有成功链接这两个 ffmpeg 命令

ruby-on-rails - ActiveRecord:除非另有说明,否则在保存之前使所有文本字段都调用 strip

mysql - 修剪比 MySQL 中的列长度长的数据

java - 如何删除Java中二维数组中的空格?

javascript - YouTube 视频继续播放由 JavaScript 触发的 CSS 弹出窗口

video - 如何使用 Lightworks 打开 mp4 文件并对其进行裁剪

node.js - 使用 NodeJS 逐帧处理视频

windows - 使用 ffmpeg 和 Windows 命令行批处理 NOT LINUX 连接/加入 MP4 文件