如何解决使用ffmpeg生成复杂视频性能低的问题?
How to solve the problem of low performance of complex video generation using ffmpeg?
我使用 ffmpeg 生成一个复杂的视频。
本视频包含以下素材:
原视频
视频配音
背景音乐
副标题
我的代码逻辑如下
将'Original video'和'Video dub'合并为'Video A'
副标题 'Video A' 为 'Video B'
为 'Video B' 添加 'Background music' 作为 'Video C'
'Video C'是我要的视频
我的代码
// Step1:
ffmpeg -i VideoDub.mp3 -i OriginalVideo.mp4 VideoA.mp4
// Step2:
ffmpeg -i VideoA.mp4 -vf subtitles=Subtitle.srt -y VideoB.mp4
// Step3:
ffmpeg -i VideoB.mp4 -i BackgroundMusic.mp3 -filter_complex "[1:a]aloop=loop=-1:size=2e+09[out];[out][0:a]amix" -ss 0 -t 100 -y VideoC.mp4
设计缺陷
- 我觉得我的代码很冗余
- 表现不佳
- 编码次数多
- 生成这样的视频耗时太长
- CPU 使用率已达到 100%。
我的问题
如何解决以上问题?
使用 filter_complex 在一个命令中执行所有过滤。
ffmpeg -i OriginalVideo.mp4 -i VideoDub.mp3 -stream_loop -1 -i BackgroundMusic.mp3 -filter_complex "[0:v]subtitles=Subtitle.srt;[2][1]amix" -ss 0 -t 100 VideoC.mp4 -y
我使用 ffmpeg 生成一个复杂的视频。
本视频包含以下素材:
原视频
视频配音
背景音乐
副标题
我的代码逻辑如下
将'Original video'和'Video dub'合并为'Video A'
副标题 'Video A' 为 'Video B'
为 'Video B' 添加 'Background music' 作为 'Video C'
'Video C'是我要的视频
我的代码
// Step1:
ffmpeg -i VideoDub.mp3 -i OriginalVideo.mp4 VideoA.mp4
// Step2:
ffmpeg -i VideoA.mp4 -vf subtitles=Subtitle.srt -y VideoB.mp4
// Step3:
ffmpeg -i VideoB.mp4 -i BackgroundMusic.mp3 -filter_complex "[1:a]aloop=loop=-1:size=2e+09[out];[out][0:a]amix" -ss 0 -t 100 -y VideoC.mp4
设计缺陷
- 我觉得我的代码很冗余
- 表现不佳
- 编码次数多
- 生成这样的视频耗时太长
- CPU 使用率已达到 100%。
我的问题
如何解决以上问题?
使用 filter_complex 在一个命令中执行所有过滤。
ffmpeg -i OriginalVideo.mp4 -i VideoDub.mp3 -stream_loop -1 -i BackgroundMusic.mp3 -filter_complex "[0:v]subtitles=Subtitle.srt;[2][1]amix" -ss 0 -t 100 VideoC.mp4 -y