从 YouTube 视频中提取音频
Extract audio from YouTube video
我正在尝试从 pytube
视频中提取音频,然后将其转换为 wav
格式。为了从视频中提取音频,我尝试使用 moviepy
,但我找不到使用 VideoFileClip
从字节打开视频文件的方法。我不想一直保存文件然后再阅读它们。
我的尝试:
from pytube import YouTube
import moviepy.editor as mp
yt_video = BytesIO()
yt_audio = BytesIO()
yt = YouTube(text)
videoStream = yt.streams.get_highest_resolution()
videoStream.stream_to_buffer(yt_video) # save video to buffer
my_clip = mp.VideoFileClip(yt_video) # processing video
my_clip.audio.write_audiofile(yt_audio) # extracting audio from video
您可以获取流的 URL 并使用 ffmpeg-python 提取音频。
ffmpeg-python 模块将 FFmpeg 作为子进程执行并将音频读入内存缓冲区。
FFmpeg 将音频转码为 WAC 容器中的 PCM 编解码器(在内存缓冲区中)。
音频从子进程的标准输出管道中读取。
这是一个代码示例:
from pytube import YouTube
import ffmpeg
text = 'https://www.youtube.com/watch?v=07m_bT5_OrU'
yt = YouTube(text)
# https://github.com/pytube/pytube/issues/301
stream_url = yt.streams.all()[0].url # Get the URL of the video stream
# Probe the audio streams (use it in case you need information like sample rate):
#probe = ffmpeg.probe(stream_url)
#audio_streams = next((stream for stream in probe['streams'] if stream['codec_type'] == 'audio'), None)
#sample_rate = audio_streams['sample_rate']
# Read audio into memory buffer.
# Get the audio using stdout pipe of ffmpeg sub-process.
# The audio is transcoded to PCM codec in WAC container.
audio, err = (
ffmpeg
.input(stream_url)
.output("pipe:", format='wav', acodec='pcm_s16le') # Select WAV output format, and pcm_s16le auidio codec. My add ar=sample_rate
.run(capture_stdout=True)
)
# Write the audio buffer to file for testing
with open('audio.wav', 'wb') as f:
f.write(audio)
备注:
- 您可能需要下载 FFmpeg 命令行工具。
- 代码示例可以正常工作,但是我不确定它有多健壮。
我正在尝试从 pytube
视频中提取音频,然后将其转换为 wav
格式。为了从视频中提取音频,我尝试使用 moviepy
,但我找不到使用 VideoFileClip
从字节打开视频文件的方法。我不想一直保存文件然后再阅读它们。
我的尝试:
from pytube import YouTube
import moviepy.editor as mp
yt_video = BytesIO()
yt_audio = BytesIO()
yt = YouTube(text)
videoStream = yt.streams.get_highest_resolution()
videoStream.stream_to_buffer(yt_video) # save video to buffer
my_clip = mp.VideoFileClip(yt_video) # processing video
my_clip.audio.write_audiofile(yt_audio) # extracting audio from video
您可以获取流的 URL 并使用 ffmpeg-python 提取音频。
ffmpeg-python 模块将 FFmpeg 作为子进程执行并将音频读入内存缓冲区。
FFmpeg 将音频转码为 WAC 容器中的 PCM 编解码器(在内存缓冲区中)。
音频从子进程的标准输出管道中读取。
这是一个代码示例:
from pytube import YouTube
import ffmpeg
text = 'https://www.youtube.com/watch?v=07m_bT5_OrU'
yt = YouTube(text)
# https://github.com/pytube/pytube/issues/301
stream_url = yt.streams.all()[0].url # Get the URL of the video stream
# Probe the audio streams (use it in case you need information like sample rate):
#probe = ffmpeg.probe(stream_url)
#audio_streams = next((stream for stream in probe['streams'] if stream['codec_type'] == 'audio'), None)
#sample_rate = audio_streams['sample_rate']
# Read audio into memory buffer.
# Get the audio using stdout pipe of ffmpeg sub-process.
# The audio is transcoded to PCM codec in WAC container.
audio, err = (
ffmpeg
.input(stream_url)
.output("pipe:", format='wav', acodec='pcm_s16le') # Select WAV output format, and pcm_s16le auidio codec. My add ar=sample_rate
.run(capture_stdout=True)
)
# Write the audio buffer to file for testing
with open('audio.wav', 'wb') as f:
f.write(audio)
备注:
- 您可能需要下载 FFmpeg 命令行工具。
- 代码示例可以正常工作,但是我不确定它有多健壮。