Python调用FFmpeg实现视频添加背景音乐及音量调节

Noah
Noah
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍如何利用Python脚本结合FFmpeg工具,为视频添加背景音乐并精确控制音量。通过subprocess模块执行FFmpeg命令,利用filter_complex参数中的volume和amix滤镜,实现主视频音频与背景音乐的混合、音量独立调节及时长同步。文中提供了多种场景下的具体命令示例,包括常规叠加、纯音频处理及视频循环背景音乐添加,并附带隐藏调试信息的技巧。

Python实现视频添加背景音乐与音量调节

本文旨在分享如何在视频处理中添加背景音乐,并具备调节音量的功能。记录此方法,供遇到相同需求的开发者参考。

基础视频与背景音乐叠加及音量控制


import subprocess

inmp4='E:/PycharmProjects/untitled2/hecheng/191030_232_xs.mp4'
inmp3='E:/PycharmProjects/untitled2/hecheng/bg.mp3'
inmp32='E:/PycharmProjects/untitled2/hecheng/bg2.mp3'
outmp3='E:/PycharmProjects/untitled2/hecheng/bg_out.mp3'
outmp4='E:/PycharmProjects/untitled2/hecheng/191030_232_xs_bg.mp4'


cmd='ffmpeg -y -i '+ inmp4 +' -i '+ inmp3 +' -filter_complex \
"[0:a]volume=10dB[a0]; \
[1:a]volume=-10dB[a1]; \
[a0][a1]amix=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -shortest '+ outmp4

p = subprocess.call(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

# 查看音轨信息
print('*'*80)
cmd='ffmpeg -i '+ outmp3 +' -filter_complex volumedetect -c:v copy -f null /dev/null'
P = subprocess.call(cmd)

以下记录几个常用的FFmpeg命令行操作示例。

进阶场景:纯音频混合与视频循环背景音乐


# 分别降低音量后叠加
cmd='ffmpeg -y -i '+ inmp4 +' -i '+ inmp3 +' -filter_complex \
"[0:a]volume=10dB[a0]; \
[1:a]volume=-30dB[a1]; \
[a0][a1]amix=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -shortest '+ outmp4

# 纯音频,叠加,可控制音量,并且设置一个循环,并按照第一个截取时间
cmd='ffmpeg -y -i '+ mp4p3 +' -i '+ inmp3 +' -filter_complex \
"[0:a]volume=10dB[a0]; \
[1:a]aloop=loop=-1:size=2e+09[a1]; \
[a1]volume=-15dB[a12]; \
[a0][a12]amix=inputs=2:duration=first:dropout_transition=2" ' + outmp4mp3

# 视频添加循环音乐
cmd='ffmpeg -y -i '+ inmp4 +' -i '+ inmp3 +' -filter_complex \
"[0:a]volume=10dB[a0]; \
[1:a]aloop=loop=-1:size=2e+09[a1]; \
[a1]volume=-15dB[a12]; \
[a0][a12]amix=inputs=2:duration=first:dropout_transition=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -shortest '+ outmp4

FFmpeg中用于隐藏调试信息的参数设置。

隐藏FFmpeg调试信息


-loglevel quiet

参考资料

参考资料来源:

https://stackoverflow.com/questions/13780736/ffmpeg-unable-to-find-a-suitable-output-format-for-i

https://stackoverflow.com/questions/44712868/ffmpeg-set-volume-in-amix

至此,关于Python结合FFmpeg实现视频添加背景音乐及音量调节的方法介绍完毕。如需了解更多相关内容,建议查阅本站过往文章或继续浏览后续章节。感谢支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表