将第一个视频静音第二个视频的长度 ffmpeg
大家好,我正在为 ffmpeg 创建此命令,其目标是创建 2 个视频和几个图像的叠加,但现在我需要在播放第二个视频时将第一个视频静音。这是否可以在单个过滤器复合体中的 ffmpeg 中完成,而不必运行 ffmpeg 来静音,然后再次运行它以进行覆盖?
我当前的过滤器复合体,如果它有助于理解我在做什么,
-filter_complex
"[0]crop='min(ih,iw)':'min(ih,iw)':'iw/2':'ih/2'[cropped];
[1]trim=end_frame=1,
geq='st(3,pow(X-(W/2),2)+pow(Y-(H/2),2));if(lte(ld(3),pow(min(W/2,H/2),2)),255,0)':128:128,
setpts=N/FRAME_RATE/TB[mask];
[1][mask]alphamerge[cutout];
[cropped][cutout]overlay=x='{x}':y='{y}'[v];
[0][1]amix=2[a]"
-map "[v]"
-map "[a]
我正在寻找一种将第一个视频静音第二个视频的总长度,然后取消静音的方法。
Hey guys so I'm making this command for ffmpeg which objective is to create a overlay of 2 videos and a couple images but now I need to mute the first video while the second one is playing. Would this be possible to do in ffmpeg in a single filter complex with out having to run ffmpeg to mute and then run it again for the overlays?
My current filter complex in case it helps understand what im doing
-filter_complex
"[0]crop='min(ih,iw)':'min(ih,iw)':'iw/2':'ih/2'[cropped];
[1]trim=end_frame=1,
geq='st(3,pow(X-(W/2),2)+pow(Y-(H/2),2));if(lte(ld(3),pow(min(W/2,H/2),2)),255,0)':128:128,
setpts=N/FRAME_RATE/TB[mask];
[1][mask]alphamerge[cutout];
[cropped][cutout]overlay=x='{x}':y='{y}'[v];
[0][1]amix=2[a]"
-map "[v]"
-map "[a]
Very resumed what Im looking for is a way to mute the first video for the total length of the second video and then unmute.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
几个想法。您需要知道叠加的开始和结束时间
asegment
和anullsink
然后在纯音频输入上设置
-ss
/-t
/-to
以仅加载您想听到的内容,并使用adelay
过滤器使音频在-ss
过滤器指定的时间开始。如果 video2 进入输出视频的中间,您需要为第二个 video1 音频段添加另一个纯音频输入。
2a.使用
-f concat
或concat
使用多次指定输入文件的想法,您可以使用各种 流连接方法。
asendcmd
和astreamselect
video2放置在video1的中间,需要使用
asendcmd
的start-stop [enter] ..., [leave] ...
命令。很想看看其他人是否有更好的解决方案。
A couple ideas. Both of which you need to know the start and end time of the overlay
asegment
andanullsink
Then set
-ss
/-t
/-to
on the audio-only input to only load what you want to hear, and useadelay
filter to make the audio start at the time specified by-ss
filter.If video2 goes into the middle of the output video, you need to add another audio-only input for the second video1 audio segment.
2a. Use
-f concat
orconcat
Using this idea of specifying input file multiple times, you can use various stream concatenation methods.
asendcmd
andastreamselect
Video2 placed in the middle of video1, you need to use
start-stop [enter] ..., [leave] ...
command forasendcmd
.Curious to see if others have a better solution.