FFmpeg学习(7)—— 给视频添加背景音乐

1,708 阅读1分钟

blog.csdn.net/tianshan201…

有时自己录制的视频课件想添加一个背景音乐,操作方法如下:

新建一个bat文件1.bat如下:

@echo off
title 正在转换,mp4视频添加循环背景音乐
ffmpeg -i %1 -i E:\softs\ffmpeg-4.2.2-win64-static\bin\2.mp3 -filter_complex [1:a]aloop=loop=-1:size=2e+09[out];[out][0:a]amix -ss 0 -t 60 -y out.mp4
ping -n 5 127.0.0.1 >nul

参数说明:

ffmpeg 
 
//输入视频,最好选一个大于一分钟的尝试
-i %1
 
//输入背景音,最好短一点,方便测试是否循环
-i E:\softs\ffmpeg-4.2.2-win64-static\bin\2.mp3
 
-filter_complex 
 
//将背景音无限循环
[1:a]aloop=loop=-1:size=2e+09[out];
 
//将背景音和视频中的音频混合
[out][0:a]amix 
 
//裁剪总时长,裁剪到60秒
-ss 0 -t 60 
 
//输出
-y result.mp4

代码示例:

#coding=utf-8
import os
import subprocess
import re

# 视频转换进度>>>
def compute_progress_and_send_progress(process):
    while process.poll() is None:
        line = process.stderr.readline().strip()
        if line:
            print(line)


# 获取ffmpeg目录绝对路径
global FFmpeg
FFmpeg = os.path.abspath('./ffmpeg/ffmpeg')

video_path = "E:\pyvideo\TestVideo\\1"

# 添加背景音乐
cmd = FFmpeg + ' -i %s\\out.mp4 -i %s\\2.mp3 -filter_complex "[0:a]volume=1[a0];[1:a]volume=0.2[a1];[a0][a1]amix=inputs=2[a]" -map 0:v -map "[a]" -c:v copy -c:a aac -shortest %s\\output2.mp4' % (video_path, video_path, video_path)
process = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdin=subprocess.PIPE, stdout=subprocess.PIPE,universal_newlines=True, shell=True)
videoInfo = compute_progress_and_send_progress(process)
print(videoInfo)

com = FFmpeg + ' -i %s\\1.mp3 -i %s\\out.ts -filter_complex "[0:a]aloop=loop=-1:size=2e+09[out];[out][1:a]amix" -ss 0 -t 52 %s\\output.ts' % (video_path, video_path, video_path)
#os.system(com)

com1 = FFmpeg + ' -i %s\\out.mp4 -i %s\\1.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=0 %s\\output.mp4' % (video_path, video_path, video_path)
#os.system(com1)

com2 = FFmpeg + ' -i %s\\out.mp4 -c copy -vbsf h264_mp4toannexb %s\\out.ts' % (video_path, video_path)
#os.system(com2)

com3 = FFmpeg + ' -i %s\\output.ts -c copy -absf aac_adtstoasc %s\\output.mp4' % (video_path, video_path)
#os.system(com3)