用ffmpeg对视频添加语音、背景音乐和字幕的方法

先看代码:

bash 复制代码
ffmpeg.exe ^
-i "D:/test/video.mp4" ^
-i "D:/test/voice.mp3" ^
-i "D:/test/music.mp3" ^
-i "D:/test/voice.srt" ^
-filter_complex "[1:a]volume=1.0,asetpts=PTS-STARTPTS[a_voice];[2:a]volume=0.5,asetpts=PTS-STARTPTS[a_music];[a_voice][a_music]amix=inputs=2:duration=first[audio_mixed];[0:v]subtitles='D\:/test/voice.srt':force_style='Fontsize=24,Fontcolor=white'[vout]" ^
-map "[vout]" ^
-map "[audio_mixed]" ^
-c:v libx264 -crf 23 -preset veryfast -c:a aac -b:a 128k ^
-disposition:a:0 default ^
"D:/test/output_final.mp4"
以上代码成功完成了添加语音、背景音乐和字幕,完美。

再看解释:

这个复杂滤镜链由多个部分组成,用分号(;)分隔,每个部分负责处理不同的输入流或组合它们。

调整语音音量及时间戳:

  • [1:a]volume=1.0,asetpts=PTS-STARTPTS[a_voice]

    [1:a] 指的是第二个输入文件(voice.mp3)的音频部分。

    volume=1.0 设置音量为原始音量的100%(无增减)。

    asetpts=PTS-STARTPTS 重置音频的时间戳,确保与视频同步。

    最后 [a_voice] 是这个处理后的音频流的标签。

    调整背景音乐音量及时间戳:

  • [2:a]volume=0.5,asetpts=PTS-STARTPTS[a_music]

    类似地,处理第三个输入文件(music.mp3)的音频。

    volume=0.5 将音量设置为原始的一半。

    同样使用asetpts重置时间戳。

    [a_music] 标记处理后的音频流。

    音频混合:

  • [a_voice][a_music]amix=inputs=2:duration=first[audio_mixed]

    [a_voice] 和 [a_music] 被送入amix滤镜进行混合。

    inputs=2 指明有两个输入流参与混合。

    duration=first 确保混合后的音频长度与第一个输入([a_voice])相同,这样如果voice.mp3的长度与视频匹配,则音频不会过长。

    字幕叠加到视频:

  • [0:v]subtitles='D:/test/voice.srt':force_style='Fontsize=24,Fontcolor=white'[vout]

    [0:v] 表示第一个输入文件(video.mp4)的视频流。

    subtitles='D:/test/voice.srt' 将指定的SRT字幕文件叠加到视频上。

    force_style='Fontsize=24,Fontcolor=white' 设置字幕样式:字体大小为24,颜色为白色。

    [vout] 标签表示处理后的视频流,包含叠加了字幕的视频。

  • 其他重要参数

    -map "[vout]" -map "[audio_mixed]" 指定最终输出使用哪些流:处理过的视频流[vout]和混合后的音频流[audio_mixed]。

    -t $(ffprobe ...) 动态获取视频的时长,并将其作为输出的持续时间,确保输出与源视频时长相符。

    其余参数涉及视频和音频的编码设置,如使用H.264编码器(-c:v libx264)、CRF值(-crf 23)、预设(-preset veryfast)、AAC音频编码(-c:a aac)和音频比特率(-b:a 128k)等,用于控制输出文件的质量和兼容性。

综上所述,这段命令通过精细的音频处理和视频字幕叠加,实现了按照video.mp4的时长来输出一个包含调整音量的语音、背景音乐和字幕的最终视频文件。

相关推荐
weixin_3077791313 小时前
流媒体娱乐服务平台在AWS上使用Presto作为大数据的交互式查询引擎的具体流程和代码
大数据·python·音视频·aws
職場上的造物主14 小时前
高清种子资源获取指南 | ✈️@seedlinkbot
python·ios·php·音视频·视频编解码·视频
程序猿玖月柒14 小时前
全志开发板 视频输入框架
音视频
cuijiecheng201816 小时前
音视频入门基础:RTP专题(7)——RTP协议简介
音视频
cuijiecheng201818 小时前
音视频入门基础:RTP专题(8)——使用Wireshark分析RTP
测试工具·wireshark·音视频
struggle20252 天前
2025开源DouyinLiveRecorder全平台直播间录制工具整合包,多直播同时录制、教学直播录制、教学视频推送、简单易用不占内存
图像处理·计算机视觉·开源·音视频·语音识别
追光天使2 天前
Mac M1 源码安装FFmpeg,开启enable-gpl 和 lib x264
macos·ffmpeg
硬件学长森哥2 天前
音视频多媒体编解码器基础-codec
驱动开发·嵌入式硬件·音视频
小镇拾光3 天前
PPT演示设置:插入音频&同步切换&播放时长计算
powerpoint·音视频·ppt播放设置
cuijiecheng20183 天前
FFmpeg源码:av_base64_decode函数分析
ffmpeg