我正在开发一个项目,以指定的质量从 YouTube 下载视频。我会使用 pytube 来执行此操作,但使用它我无法下载有年龄限制的视频。当我正常导入 yt_dlp 时,据我了解,我没有安装内置的 ffmpeg,并且无法下载除 720p 之外的所有分辨率的视频。我可以安装某种用于音频和视频合并的库吗?还是需要连接外部程序(这对我来说是不可取的,因为我想购买一个不提供安装外部程序的简单主机)?
我是 MD Rahit Azim,我也致力于解决同样的问题 -
要将
ffmpeg
与 yt-dlp
集成而无需手动安装外部程序,您可以使用 yt-dlp
库以及用于处理后处理(例如合并音频和视频)的内部方法。但是,yt-dlp
确实依赖于 ffmpeg
来合并音频和视频,因此您可以采用以下方法。
yt-dlp
处理 ffmpeg 的步骤:使用pip安装
yt-dlp
:
确保您的 Python 环境中安装了 yt-dlp
。您可以使用 pip 安装它:
pip install yt-dlp
使用Python包安装ffmpeg
ffmpeg
,您可以使用
imageio-ffmpeg
等 Python 包,它将
ffmpeg
捆绑为包的一部分。使用pip安装:
pip install imageio[ffmpeg]
此软件包会在环境中安装 ffmpeg
,然后您可以配置
yt-dlp
以使用此捆绑的
ffmpeg
。
配置yt-dlp
以查找
ffmpeg
:
在您的 yt-dlp
下载脚本中,确保
yt-dlp
知道在哪里可以找到
ffmpeg
。您可以通过传递
ffmpeg_location
参数,将其指向
imageio_ffmpeg
位置来完成此操作。示例:
import yt_dlp
import imageio_ffmpeg as ffmpeg
ydl_opts = {
'format': 'bestvideo+bestaudio/best', # Download the best quality video and audio
'ffmpeg_location': ffmpeg.get_ffmpeg_version(), # Pointing to the bundled ffmpeg
'postprocessors': [{
'key': 'FFmpegVideoConvertor',
'preferedformat': 'mp4', # Merge to mp4 format
}]
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=VIDEO_ID'])
运行脚本:
现在,当您运行脚本时,它应该使用与 ffmpeg
包捆绑在一起的
imageio-ffmpeg
来合并音频和视频流。
imageio-ffmpeg
避免手动安装
ffmpeg
。
ffmpeg
参数将
yt-dlp
的位置传递给
ffmpeg_location
。
yt-dlp
选项包括合并音频和视频流。