使用 yt-dlp 录制 YouTube 、Bilibili视频和实时转播——从高清下载到直播转播,掌握 yt-dlp 和 ffmpeg 的实用技巧
最近想录制youtube视频,发现youtube-dl速度非常慢,只有几十Kb/s,网上搜索后搞清楚原因是,youtube-dl的版本已经被油管官方限制了,youtube-dl也很久没有维护了,同时发现yt-dlp(一个扩展了功能的 youtube-dl工具,使用功能和youtube-dl一样,视频下载、直播录制都ok,所以写一篇文章分享几个场景的使用方法
项目地址:https://github.com/yt-dlp/yt-dlp#release-files
安装yt-dlp ffmpeg
yt-dlp是python项目,所以需要在你的设备安装python
Debian 或 Ubuntu 系统:
sudo apt update
sudo apt upgrade
sudo apt install python3
sudo apt install ffmpeg
CentOS 或 Fedora 系统:
sudo yum update
sudo yum install python3
sudo yum install ffmpeg
在安卓 Termux 上安装 Python:
Termux 是 Android 上的一个模拟 Linux 环境,可以在其中安装和运行 Python。
打开 Google Play 商店,搜索并安装 Termux 应用。
打开 Termux 应用,在终端中运行以下命令以安装 Python:
pkg update
pkg upgrade
pkg install python
pkg install ffmpeg
安装完成后,可以在终端中输入 python --version
有版本号输出,代表输出成功
安装完python后,在终端输入yt-dlp
pip install yt-dlp
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple yt-dlp #清华源
下载各平台视频
1.直接下载
# 默认格式,高于720P的格式一般是 webm 格式
yt-dlp https://www.youtube.com/watch?v=kNU2WCHVVBk
# 下载视频转换成mp4(用--merge-output-format参数)
yt-dlp --merge-output-format mp4 https://www.youtube.com/watch?v=k
2.查看视频所有分辨率
跟用 youtube-dl命令一样,先用-F参数查看有哪些分辨率。
![yt-dlp -F https://youtu.be/F0ZvF-FbCr0][2]
结果跟用 youtube-dl命令的差不多,标题行含义:
ID:视频的唯一标识符或ID。这通常是视频在平台上的唯一标识符,用于在视频网站中定位和识别视频。
EXT:视频的文件格式扩展名。例如,"mp4" 表示视频是 MP4 格式的,"webm" 表示视频是 WebM 格式的。
RESOLUTION:视频的分辨率,指视频的水平和垂直像素数。例如,"720p" 表示视频分辨率为 1280x720 像素。
FPS:视频的帧率,指视频中每秒显示的帧数。帧率决定了视频的流畅度和动画效果。
FILESIZE:视频文件的大小,通常以字节为单位。这可以帮助了解视频文件的大小,以便在下载前估算所需的存储空间。
VCODEC:视频编解码器。它指示用于编码视频的算法,以及在解码时用于解码视频的算法。例如,"mp4a.40.2"
表示视频包含了音频(.40.2)。ACODEC:音频编解码器。它指示用于编码音频的算法,以及在解码时用于解码音频的算法。例如,"video only"
表示视频中仅包含视频而没有音频。
3.下载指定分辨率
# 1.只下载音频
# 找m4a格式,列表越靠后越清晰。比如ID:140 | EXT:m4a | audio only
yt-dlp -f140 https://www.youtube.com/watch?v=kNU2WCHVVBk
# 2.下载音频转换成mp3(加上-x --audio-format参数)
yt-dlp -f140 -x --audio-format mp3 https://www.youtube.com/watch?v=kNU2WCHVVBk
# 3.下载视频(带音频)ID:22 | EXT:mp4 | 1280*720
yt-dlp -f22 https://www.youtube.com/watch?v=kNU2WCHVVBk
# 4.下载指定分辨率视频+音频(为了方便就直接下载mp4格式了)
# 1080及以上分辨率的音频和视频是分开的,所以一般会音频和视频一起下载
yt-dlp -f299+140 https://www.youtube.com/watch?v=kNU2WCHVVBk
# 5.(通用)下载最佳mp4视频+最佳m4a音频格式并合成mp4
yt-dlp -f 'bv[ext=mp4]+ba[ext=m4a]' --embed-metadata --merge-output-format mp4 https://www.youtube.com/watch?v=kNU2WCHVVBk
# 6.指定文件名下载(用-o参数)
# 默认下载的文件格式是:title+空格+[id].格式,比如***** [kNU2WCHVVBk].mp4
# 文件名只要标题,不要id,加上 -o '%(title)s.mp4'
yt-dlp -f 'bv[ext=mp4]+ba[ext=m4a]' --embed-metadata --merge-output-format mp4 https://www.youtube.com/watch?v=kNU2WCHVVBk -o '%(title)s.mp4'
最方便直接用,可以直接用最后一种通用的下载最佳视频的方式。
下载播放列表所有视频
yt-dlp https://www.youtube.com/playlist?list=**********
录制直播
yt-dlp -f best -o output_filename.extension "直播链接"
参数说明:
-f best:选择最佳质量的视频流进行下载。您可以根据需要选择其他质量选项。
-o output_filename.extension:指定输出文件的名称和扩展名。您可以将其替换为您希望的文件名和扩展名(例如,output.mp4)。
"直播链接":替换为您想要录制的直播流的链接。
注意:下载海外平台视频需要开启代理
yt-dlp配合ffmpeg进行转播
使用 yt-dlp 结合 ffmpeg 可以在录制直播流的同时进行实时转播(转码和重编码)操作。以下是一个示例命令
yt-dlp -o - "直播链接" | ffmpeg -i - -c:v copy -c:a aac -strict experimental -f flv "rtmp://转播服务器地址"
yt-dlp 结合 ffmpeg 进行实时转播时,您可以通过指定不同的 ffmpeg 参数来控制转播的码率、分辨率和其他设置。
指定视频和音频码率:
yt-dlp -o - "直播链接" | ffmpeg -i - -c:v libx264 -b:v 2000k -c:a aac -b:a 128k -strict experimental -f flv "rtmp://转播服务器地址"
在这个命令中,-b:v 指定视频码率为 2000k,-b:a 指定音频码率为 128k。
指定分辨率:
yt-dlp -o - "直播链接" | ffmpeg -i - -vf "scale=1280:720" -c:v libx264 -b:v 2000k -c:a aac -b:a 128k -strict experimental -f flv "rtmp://转播服务器地址"
在这个命令中,-vf "scale=1280:720" 指定视频分辨率为 1280x720 像素。
指定帧率:
yt-dlp -o - "直播链接" | ffmpeg -i - -r 30 -c:v libx264 -b:v 2000k -c:a aac -b:a 128k -strict experimental -f flv "rtmp://转播服务器地址"
在这个命令中,-r 30 指定视频帧率为 30 帧每秒。
本文系作者 @linzimo 原创发布在林子墨站点。未经许可,禁止转载。
暂无评论数据