一、功能需求
把视频文件video.mp4 和音频文件audio.wav融合在一起,输出视频文件output.mp4
二、操作指令
ffmpeg -i video.mp4 -i audio.wav -c:v copy -map 0:v:0 -map 1:a:0 output.mp4
三、参数说明
ffmpeg
: 这是用于执行FFmpeg命令行工具的命令。-i video.mp4
: 这指定了输入文件的名称,即需要替换音频的视频文件。-i audio.wav
: 这指定了要替换的新音频文件。-c:v copy
: 这表示视频流将被直接拷贝到输出文件,而不进行重新编码。-map 0:v:0
: 这指定了从第一个输入文件(input.mp4)中选择第一个视频流。-map 1:a:0
: 这指定了从第二个输入文件(new.mp3)中选择第一个音频流。output.mp4
: 这是输出文件的名称,即包含替换音频的新视频文件。
四、程序设计
def generate_noise_depressed_video(audio_paths: List[str]):
# print('audio_paths=',audio_paths)
noise_depressed_audios_dir = r"D:\data2\fine_data\lm_video_audios_ND"
videos_dir2 = r"D:\data2\fine_data\lm_video_audios_depressed"
videos_dir = r"D:\data2\fine_data\lm_12k"
for audio_path in audio_paths:
# video_path = audio_path.replace(noise_depressed_audios_dir, videos_dir)[:-3] + "mp4"
audioname = os.path.basename(audio_path)
videoname = os.path.splitext(audioname)[0] + '.mp4'
video_path = os.path.join(videos_dir, videoname)
noise_depressed_video_path = os.path.join(videos_dir2, videoname)
print('video_path=', video_path)
print('audio_path=', audio_path)
# 执行音频文件和视频文件合并
# ffmpeg -i 视频文件名.mp4 -i 音频文件名.mp3 -c:v copy -c:a aac -strict experimental 输出文件名.mp4
cmd2 = f"ffmpeg -i {video_path} -i {audio_path} -c:v copy -map 0:v:0 -map 1:a:0 {noise_depressed_video_path}"
subprocess.run(cmd2, check=True)