Python如何从视频中提取音频?本文带你了解如何使用 ffmpeg 和 subprocess 或使用 Python 中的 MoviePy 库将视频转换为音频。
如何在Python中从视频中提取音频?如果你想使用 Python 将视频转换为音频格式,那么你来对地方了。在本教程中,我将向你展示两种在 Python 中的FFmpeg和MoviePy 库的帮助下从视频文件中提取音频的简单方法。
在我们开始之前,你需要在你的机器上安装 FFmpeg。如果你使用的是 Windows,请查看本教程,你只需安装它并将其添加到PATH变量即可。如果你使用的是 Linux,那么使用以下命令安装它很简单:
$ sudo apt update
$ sudo apt install ffmpeg
注意MoviePy依赖FFmpeg软件进行视频读写,第一次使用时会自动安装。因此,如果你在上述步骤中失败并想使用第二种方法(即使用 MoviePy),则不必太担心。
现在让我们安装 MoviePy:
$ pip install moviepy
方法一:直接使用FFmpeg
Python如何从视频中提取音频?使用FFmpeg,此方法涉及将 Python 的内置subprocess模块用于适当的 FFmpeg 命令,完整Python从视频中提取音频示例代码如下:
import subprocess
import os
import sys
def convert_video_to_audio_ffmpeg(video_file, output_ext="mp3"):
"""Converts video to audio directly using `ffmpeg` command
with the help of subprocess module"""
filename, ext = os.path.splitext(video_file)
subprocess.call(["ffmpeg", "-y", "-i", video_file, f"{filename}.{output_ext}"],
stdout=subprocess.DEVNULL,
stderr=subprocess.STDOUT)
if __name__ == "__main__":
vf = sys.argv[1]
convert_video_to_audio_ffmpeg(vf)
在convert_video_to_audio_ffmpeg()
函数中,我们首先将输入的视频文件名拆分为不带扩展名的原始文件名和扩展名本身,这样我们只需在原始名称上加上音频扩展名就可以得到输出文件名。在这种情况下,它是mp3
.
我们使用该subprocess.call()
方法运行FFmpeg命令,该-y
标志用于忽略覆盖提示,以及-i
用于指定输入视频文件。最后一个参数是带有mp3
音频扩展名的输出文件名,你可以根据需要将其更改为,wav
但由于某种原因,在我的情况下会导致音频文件很大。
最后,我们通过subprocess.DEVNULL
对stdout
参数,subprocess.STDOUT
以stderr
使我们可以放弃FFmpeg的输出。你可以通过以下方式运行脚本:
$ python video2audio_ffmpeg.py zoo.webm
zoo.webm
任何格式的视频文件在哪里。
方法 2:使用 MoviePy
如何在Python中从视频中提取音频?在这种方法中,我们使用非常简单的 MoviePy 库,它在底层使用了 FFmpeg,完整的Python从视频中提取音频示例代码如下:
import os
import sys
from moviepy.editor import VideoFileClip
def convert_video_to_audio_moviepy(video_file, output_ext="mp3"):
"""Converts video to audio using MoviePy library
that uses `ffmpeg` under the hood"""
filename, ext = os.path.splitext(video_file)
clip = VideoFileClip(video_file)
clip.audio.write_audiofile(f"{filename}.{output_ext}")
if __name__ == "__main__":
vf = sys.argv[1]
convert_video_to_audio_moviepy(vf)
Python如何从视频中提取音频?在这里,我们实例化VideoFileClip()
类,然后使用该write_audiofile()
方法从audio
对象clip
,将其保存为音频文件。使用脚本:
$ python video2audio_moviepy.py zoo.webm
结论
好的,这就是本快速教程的内容,我希望它可以帮助你快速可靠地完成你的项目。