我们知道正常在某视频网站下载视频时在本地找到的视频源是这样子的,比如某站等
在本地播放器是无法播放的,找不到MP4文件,通过市场上一些视频合并文件为MP4大多都会报错,下面是HandBrake合并视频文件时的报错
显然视频文件已经经过加密,HandBrake在合成时会无法解密进而报错,先不急我们还有神器工具yt-dlp,它的效果和Python类似,优点是不需要Python那么多的代码量,可以直接用一行命令就可以解决,以下教程在Windows环境下进行。
macOS:使用 Homebrew 安装: brew install ffmpeg
Linux:使用包管理器安装,例如 Ubuntu/Debian: sudo apt install ffmpeg
Windows在下面的官网链接地址下载ffmpeg
安装后,在命令行输入 ffmpeg -version 确认是否成功。
点击上图指示链接
找到这个压缩包链接点击将会自动下载
下载完成后添加环境变量,找到Path,双击点进去进行ffmpeg变量添加
点击浏览找到存放ffmpeg的文件,找到ffmpeg的bin文件点击确定
添加完成后进行命令行测试,打开cmd
输入 ffmpeg -version,出现此页面代表成功
接下来要介绍我们的重点yt-dlp
一、yt-dlp 和 FFmpeg 的关系及作用
1.视频流与音频流的分离
许多视频平台(如 YouTube)会将视频和音频分开存储为不同的文件(例如:高清视频流 + 音频流)。yt-dlp 默认会优先下载最高质量的视频和音频,但需要将它们合并成一个完整的文件。
2.合并与转码需求
yt-dlp 本身不具备处理音视频流的能力,因此依赖外部的 FFmpeg 工具完成以下操作:
合并:将单独下载的视频文件(如 .mp4 )和音频文件(如 .webm )合并为单个文件。
转码:某些格式不兼容时(如 .m4a 音频转 .mp3 ),FFmpeg 会进行格式转换。
提取音频:如果用户指定 -x 参数下载纯音频,FFmpeg 会从视频中提取并转换音频。
3.未安装 FFmpeg 的后果
yt-dlp 只能下载单一流(如仅视频无声音,或低质量的音视频混合流)。
无法完成格式转换、音频提取等进阶操作,部分功能会报错。
二、安装yt-dlp
在安装好Python环境下通过pip(Python包管理器)安装,输入以下命令
pip install yt-dlp
安装成功后输入下面的命令进行更新
pip install --upgrade yt-dlp
更新完成后,先在浏览器插件市场下载Cookies-Editor插件,在浏览器打开要播放的视频页面,点击这个插件的Export将自动复制Cookies信息
自己建立一个命名为cookies.txt的文件
把刚刚复制的Cookies信息复制到该文件上剪切到C盘你的用户名下的目录里,这里为视频文件的输出目录。
yt-dlp --cookies cookies.txt "替换为你想要下载的视频链接" -f bestvideo+bestaudio --merge-output-format mp4
输入命令后出现此页面表明下载成功,找到输出的文件你会发现输出的是高清MP4格式,而不是一堆加密文件。
注意yt-dlp会默认下载链接里面的所有视频,如果想要下载单个视频或者多个视频可以设置
——playlist-items参数
比如下载第5个视频(视频列表序号是从1开始的,如果是从0开始那参数就是4)
yt-dlp --cookies cookies.txt --playlist-items 5 "视频链接" -f bestvideo+bestaudio --merge-output-format mp4
下载从1开始到第5个视频结束
yt-dlp --cookies cookies.txt --playlist-items 1-5 "视频链接" -f bestvideo+bestaudio --merge-output-format mp4