Python 使用 ffmpeg 进行 音视频格式转换等操作
在 Python 中,进行音视频格式转换可以使用 ffmpeg
,一个功能强大的音视频处理工具。通过 ffmpeg
,可以进行各种音视频转换、剪辑、合并等操作。Python 中,可以使用 ffmpeg-python
库作为与 ffmpeg
进行交互的接口。也可以操作命令行,但是及其不推荐。
安装 ffmpeg
和 ffmpeg-python
首先,确保已经安装 ffmpeg
。可以从 ffmpeg 官网 下载并安装适合你操作系统的版本。
视频里下载好的,点我下载 win 版 7.1
然后,安装 ffmpeg-python
库:
pip install ffmpeg-python
使用 ffmpeg-python
进行音视频格式转换
以下是一些示例,展示如何使用 ffmpeg-python
库进行音视频格式转换。
示例:视频格式转换(MP4 转 AVI)
import ffmpeg
def convert_video(input_file, output_file):
try:
ffmpeg.input(input_file).output(output_file).run()
print(f"视频已成功转换为 {output_file}")
except ffmpeg.Error as e:
print(f"视频转换失败: {e}")
# 示例调用
convert_video('input.mp4', 'output.avi')
示例:音频格式转换(MP3 转 WAV)
import ffmpeg
def convert_audio(input_file, output_file):
try:
ffmpeg.input(input_file).output(output_file).run()
print(f"音频已成功转换为 {output_file}")
except ffmpeg.Error as e:
print(f"音频转换失败: {e}")
# 示例调用
convert_audio('input.mp3', 'output.wav')
批量音视频格式转换
如果需要批量转换文件夹中的音视频格式,可以使用以下示例:
import os
import ffmpeg
def batch_convert(input_directory, output_directory, input_extension, output_extension):
if not os.path.exists(output_directory):
os.makedirs(output_directory)
for filename in os.listdir(input_directory):
if filename.endswith(input_extension):
input_path = os.path.join(input_directory, filename)
output_filename = os.path.splitext(filename)[0] + output_extension
output_path = os.path.join(output_directory, output_filename)
try:
ffmpeg.input(input_path).output(output_path).run()
print(f"{input_path} 已转换为 {output_path}")
except ffmpeg.Error as e:
print(f"转换 {input_path} 时发生错误: {e}")
# 示例调用
batch_convert('input_videos', 'output_videos', '.mp4', '.avi')
batch_convert('input_audios', 'output_audios', '.mp3', '.wav')
高级选项
转换并调整视频参数
在转换视频格式时,可以同时调整视频的分辨率、比特率等参数:
import ffmpeg
def convert_video_with_options(input_file, output_file, resolution='1280x720', bitrate='500k'):
try:
ffmpeg.input(input_file).output(output_file, vf=f'scale={resolution}', video_bitrate=bitrate).run()
print(f"视频已成功转换为 {output_file},分辨率: {resolution},比特率: {bitrate}")
except ffmpeg.Error as e:
print(f"视频转换失败: {e}")
# 示例调用
convert_video_with_options('input.mp4', 'output.avi')
提取视频中的音频
可以从视频文件中提取音频并保存为音频文件:
import ffmpeg
def extract_audio_from_video(input_file, output_file):
try:
ffmpeg.input(input_file).output(output_file, vn=True).run() # vn=True 表示不处理视频流
print(f"音频已成功提取到 {output_file}")
except ffmpeg.Error as e:
print(f"音频提取失败: {e}")
# 示例调用
extract_audio_from_video('input.mp4', 'output.mp3')
总结
通过 ffmpeg
和 ffmpeg-python
库,可以轻松实现各种音视频格式的转换。无论是单个文件的格式转换,还是批量转换文件夹中的音视频文件,ffmpeg
都提供了丰富的功能和灵活的接口。通过合理使用这些功能,可以大大提高音视频处理的效率和效果。
相关文档
视频处理的利器,ffmpeg-python库详解与应用示例
官方中文文档
ffmpeg-python库的github地址
ffmpeg安装教程(windows版)
ffmpeg-python中文文档系列1多的可以在主页找
python-ffmpeg 英文文档
License:
CC BY 4.0