gpt4 book ai didi

FFMPEG修剪视频(使用选择)不影响整体持续时间

转载 作者:行者123 更新时间:2023-12-04 23:33:08 26 4
gpt4 key购买 nike

对于使用 FFMPEG 来说是全新的,我想要实现的是在某些位置和时间应用叠加图形,并剪切单个输入视频的部分。
我已经计算出覆盖图形,所以这段代码有效:

ffmpeg -i /Users/username/projectdir/static/video.mp4 \
-i overlay.png -i overlay2.png \
-filter_complex "[0:v][1:v] overlay=192:108:enable='between(t, 0, 5)'[ov0];
[ov0] overlay=192:108:enable='between(t, 5, 10)'" \
-pix_fmt yuv420p output_overlayed.mp4
但是当我尝试使用此代码剪切部分时:
ffmpeg -i /Users/username/projectdir/static/video.mp4 \
-i overlay.png -i overlay2.png \
-filter_complex "[0:v][1:v] overlay=192:108:enable='between(t, 0, 5)'[ov0]; \
[ov0] overlay=192:108:enable='between(t, 5, 10)', \
select='between(t,0,5)+between(t,10,15)', \
setpts='N/FRAME_RATE/TB'" \
-pix_fmt yuv420p output_overlayed_trimmed.mp4
似乎剪切正确,因此原始视频从 0 秒开始播放到 5 秒,然后从 10 秒播放到 15 秒并中断。但是在视频剪切之后,它只是视频持续时间的黑屏。我似乎无法让它工作,所以它会影响视频的整体持续时间。
(顺便说一下,传入的值只是示例,例如。我让它开始覆盖 5 秒,但也切入 5 秒)
我有覆盖应该出现在未修剪视频上的时间戳,因此应该先进行覆盖,然后再进行修剪。如果先修剪视频,则叠加层将出现在错误的时间。
目前可行的实现此目的的另一种方法是执行第一行代码(它只生成一个带有叠加层的新视频文件),然后单独获取这个新文件并独立执行修剪:
ffmpeg -ss 0 -to 5 -i /Users/username/projectdir/static/output_overlayed.mp4 \
-ss 15 -to 20 -i /Users/username/projectdir/static/output_overlayed.mp4 \
-filter_complex "[0][1]concat=n=2:v=1:a=1" output_trimmed.mp4
但这意味着使用 2 个单独的文件,然后必须在第二次执行完成后删除第一个文件。理想情况下,我会将它们组合成一个不会产生多个文件的命令。
将不胜感激任何帮助 - 谢谢!

最佳答案

如何使用不同的修剪获得两次输入(因此视频和音频同步剪切)然后在叠加后连接?像这样:

ffmpeg -t 5 -i /Users/username/projectdir/static/video.mp4 \
-ss 10 -to 15 -i /Users/username/projectdir/static/video.mp4 \
-i overlay.png -i overlay2.png \
-filter_complex "[0:v][2:v] overlay=192:108[ov0]; \
[1:v][3:v] overlay=192:108[ov1]; \
[ov0][0:a][ov1][1:a] concat=n=2:v=2:a=2[vout][aout] \
-map [vout] -map[aout] -pix_fmt yuv420p output_overlayed_trimmed.mp4

关于FFMPEG修剪视频(使用选择)不影响整体持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72113458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com