使用 Python 为视频文件添加音频和提取音频的简单方法

 


随着短视频和多媒体内容的普及,音视频的处理已经成为了一个常见需求。今天我们将学习如何使用 Python 的强大库 MoviePy,通过简单的代码完成两项常见的任务:从视频中提取音频 和 为视频添加背景音乐。

环境准备

在开始之前,请确保你的 Python 环境中已经安装了 MoviePy。你可以通过以下命令安装它:

pip install moviepy

从视频中提取音频:

以下是一个简单的脚本,用于从视频中提取音频并保存为 MP3 文件。

from moviepy.editor import VideoFileClip # 获取用户输入的视频文件名和输出音频文件名 video_file = input("请输入要提取音频的视频文件名(例如:input_video.mp4):") output_audio_file = input("请输入输出音频文件名(例如:output_audio.mp3):") # 加载视频文件 video_clip = VideoFileClip(video_file) # 提取音频并保存为 mp3 文件 video_clip.audio.write_audiofile(output_audio_file, codec="mp3") print(f"音频已成功提取并保存为 '{output_audio_file}'")

实现步骤

  1. 用户输入:脚本通过 input 获取视频文件和输出音频文件的名称。
  2. 加载视频:使用 VideoFileClip 加载视频文件。
  3. 提取音频:通过 video_clip.audio.write_audiofile() 方法将音频保存为 MP3 文件。
  4. 提示用户:操作完成后,会输出成功提示。

运行效果

运行脚本时,按照提示输入:

请输入要提取音频的视频文件名(例如:input_video.mp4):sample_video.mp4 请输入输出音频文件名(例如:output_audio.mp3):extracted_audio.mp3

完成后,你会在当前目录下看到一个名为 extracted_audio.mp3 的音频文件。


为视频添加背景音乐:

以下脚本将背景音乐添加到视频中并输出一个新的视频文件:

from moviepy.editor import VideoFileClip, AudioFileClip, CompositeAudioClip import os # 获取用户输入的视频和音频文件名 video_file = input("请输入视频文件的名称(例如:input_video.mp4):") audio_file = input("请输入背景音乐文件的名称(例如:background_music.mp3):") output_file = input("请输入输出文件的名称(例如:output_video_with_music.mp4):") # 检查文件是否存在 if not os.path.exists(video_file): print(f"错误:视频文件 '{video_file}' 不存在。请检查文件名和路径。") elif not os.path.exists(audio_file): print(f"错误:音频文件 '{audio_file}' 不存在。请检查文件名和路径。") else: # 加载视频和音频文件 video_clip = VideoFileClip(video_file) # 设置音频的时长以匹配视频 background_music = AudioFileClip(audio_file).subclip(0, video_clip.duration) # 将音频添加到视频 final_clip = video_clip.set_audio(background_music) # 导出视频,并保持高质量 final_clip.write_videofile(output_file, codec="libx264", audio_codec="aac", bitrate="5000k") print(f"视频已成功导出到 '{output_file}'")

实现步骤

  1. 用户输入:通过 input 输入视频文件、背景音乐文件和输出文件名称。
  2. 文件校验:通过 os.path.exists 检查视频和音频文件是否存在。
  3. 加载视频和音频:分别使用 VideoFileClipAudioFileClip 加载输入的多媒体文件。
  4. 音频匹配视频时长:通过 .subclip(0, video_clip.duration) 截取背景音乐的长度以匹配视频时长。
  5. 添加音频:通过 set_audio 方法为视频设置新的音频。
  6. 导出新视频:使用 write_videofile 导出视频,同时指定编码格式和比特率。
  7. 成功提示:操作完成后提示用户输出文件的保存路径。

运行效果

运行脚本并输入:

请输入视频文件的名称(例如:input_video.mp4):sample_video.mp4 请输入背景音乐文件的名称(例如:background_music.mp3):music.mp3 请输入输出文件的名称(例如:output_video_with_music.mp4):final_video.mp4

脚本运行完成后,会生成一个添加了背景音乐的新视频文件 final_video.mp4

注意事项

  1. 文件路径:确保输入的文件路径正确。如果文件不在当前目录,可以使用绝对路径。
  2. 背景音乐时长:脚本会自动截取音频以匹配视频时长,但请确保音频内容适合视频场景。
  3. 编码格式:导出视频时,使用 libx264 编码和 aac 音频编码,可以保证高质量输出。如果对文件大小有要求,可以调整 bitrate

总结

通过 MoviePy,我们可以轻松地完成常见的音视频处理任务。无论是提取音频还是为视频添加背景音乐,这些代码都非常简单易用。MoviePy 提供了高度抽象的 API,让我们可以更专注于功能实现,而无需处理底层复杂的多媒体编码细节。

你可以将这些代码扩展应用到更复杂的项目中,例如制作短视频、视频剪辑或音频混合器。赶快试试吧!