以下内容可能有些过时,推荐点这个新链接:https://www.mfpud.com/topics/10833/
简单的记录一下,使用Debian 10系统的Linux VPS,自动检测Youtube和Twitch直播,以及开播后自动录播的教程。
本文使用了Debian 10 + 宝塔面板 + youtube-dl + streamlink + ffmpeg ,以及一些ssh脚本。
因为是自动检测youtube和twitch的开播和录制,需要购买国外的vps服务器,不管是帮瓦工,还是vultr都可以。
购买VPS,系统选 Debian 10,系统安装完成后,记下root的密码。
下载一个ssh链接工具,xshell之类的就可以,使用xshell,用root账户登陆系统,按下面的说明,以此运行以下命令。
安装 curl
apt-get update -y && apt-get install curl -y
安装 宝塔面板 或者 aaPanel ,其他面板或者直接用ssh也可以,看你自己选择
curl -sSO http://download.bt.cn/install/install_panel.sh && bash install_panel.sh
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh aapanel
安装后记好宝塔登陆的地址,以及账号和密码
开启bbr
echo net.core.default_qdisc=fq >> /etc/sysctl.conf
echo net.ipv4.tcp_congestion_control=bbr >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control
安装pip和pip3
apt-get install sudo
apt-get install python-pip -y
sudo apt install -y python3-pip -y
更新pip3
python3 -m pip install --upgrade pip
安装you get
pip3 install you-get
安装youtube-dl
pip3 install youtube-dl
更新Youtube-dl
pip3 install --upgrade youtube-dl
安装并更新 yt-dlp
python3 -m pip install --upgrade yt-dlp
安装streamlink
pip3 install streamlink
更新streamlink
pip3 install --upgrade streamlink
安装ffmpeg
sudo apt install ffmpeg -y
安装screen
sudo apt install screen
所有需要用到的工具都安装完了,最后更新一下系统
sudo apt update -y && sudo apt upgrade -y
接下来推荐新手登陆宝塔面板,点宝塔面板左边的文件,然后去/www/wwwroot/的文件夹中,新建一个文件夹,起个英文名字,比如 youtube 或者 twitch
先说twitch自动检测开播后,自动录制视频的方法。
打开刚才新建的twitch文件夹,新建一个文件,起名为 record_twitch.sh
编辑这个文件,把下面的代码复制粘贴过去,保存
#!/bin/bash
# Twitch Live Stream Recorder
if [[ ! -n "$1" ]]; then
echo "usage: $0 twitch_id [format] [loop|once] [interval]"
exit 1
fi
# Record the highest quality available by default
FORMAT="${2:-best}"
INTERVAL="${4:-10}"
while true; do
# Monitor live streams of specific channel
while true; do
LOG_PREFIX=$(date +"[%Y-%m-%d %H:%M:%S]")
echo "$LOG_PREFIX Try to get current live stream of twitch.tv/$1"
# Get the m3u8 address with streamlink
M3U8_URL=$(streamlink --stream-url "twitch.tv/$1" "$FORMAT")
(echo "$M3U8_URL" | grep -q ".m3u8") && break
echo "$LOG_PREFIX The stream is not available now."
echo "$LOG_PREFIX Retry after $INTERVAL seconds..."
sleep $INTERVAL
done
# Record using MPEG-2 TS format to avoid broken file caused by interruption
FNAME="twitch_${1}_$(date +"%Y%m%d_%H%M%S").ts"
echo "$LOG_PREFIX Start recording, stream saved to \"$FNAME\"."
# Start recording
streamlink -o "$FNAME" twitch.tv/$1 best
# ffmpeg -i "$M3U8_URL" -codec copy -f mpegts "$FNAME" > "$FNAME.log" 2>&1
# Exit if we just need to record current stream
LOG_PREFIX=$(date +"[%Y-%m-%d %H:%M:%S]")
echo "$LOG_PREFIX Live stream recording stopped."
[[ "$3" == "once" ]] && break
done
因为linux的终端关掉后就停止运行了,所以需要借助 screen 功能,大概意思就是新建一个可以后台运行的终端。
新建一个叫 twitch的终端窗口
screen -S twitch
使用cd 命令,把运行目录切换到twitch的文件夹
cd /www/wwwroot/twitch
运行下面的命令
thebs_chen 是twitch主播的id,可以换成你的,best是指录制最好的画质,loop是循环执行,直播开始后就录制,直播完成后就继续执行检测命令,等待下次开播。
运行这个命令后,会每隔10秒检测一下twitch的频道,主播开播后会自动录制。
./record_twitch.sh thebs_chen best loop
确认命令执行后,就可以关掉终端了,重新打开这个录制终端的命令则是
screen -r twitch
接下来说youtube自动录制的视频。
youtube的自动检测开播后录播比较麻烦,需要用到cookies。
还是在wwwroot的文件夹内新建一个文件夹,比如就叫youtube
点这里,下载这个包:https://github.com/lovezzzxxx/liverecord/archive/refs/heads/master.zip
解压,把 record_twitcast.py 、record_new.sh 、record.sh 这三个文件上传到youtube的文件夹
在youtube的文件夹内手动新建两个txt文件,分别命名为 you-cookies.txt 和 you-config.txt
用谷歌浏览器打开youtube,并登陆你的账号
按F12,打开开发人员的前端工具
按F5,刷新一下youtube的网站
在右边找到 Network
接下来就比较困难了,需要找到包含 SID 的cookies文件,不知道文件名会不会变
比如我写教程的这里,名字是这个开头,cookies的文本在这里
如图,找到cookies的文本后,把上图红框内的文本复制出来。
打开 http://tools.bugscaner.com/cookietocookiejar/
作用域写
.youtube.com
下面把刚才复制过来的文本粘贴过去,转化一下
把下面转化好的文本,复制粘贴到 you-cookies.txt 里面保存
打开 you-config.txt
http-cookie=SID=这里是文本
http-cookie=HSID=这里是文本
http-cookie=SSID=这里是文本
http-cookie=APISID=这里是文本
http-cookie=SAPISID=这里是文本
把 you-cookies.txt 里面的cookies文本手动一条条的复制到 you-config.txt 中,文本格式是上面的代码
完成后如图
youtube文件夹内的最终文件
然后依然是新建 screen 终端的会话
screen -S youtube
打开youtube文件夹命令
cd /www/wwwroot/youtube
执行下面的命令
./record_new.sh youtubeffmpeg "UC7QVieoTCNwwW84G0bddXpA" --you-cookies "./you-cookies.txt" --you-config "./you-config.txt" -f 1080p,720p,480p,360p,worst -l 30 -o "/www/wwwroot/youtube"
大概意思是 使用 record_new.sh 文件命令执行,检测 UC7QVieoTCNwwW84G0bddXpA 这个Youtube博主的个人地址,这里可以换成你想自动录制的博主id
--you-cookies "./you-cookies.txt" --you-config "./you-config.txt" 是调用cookies,这个不用管
-f 1080p,720p,480p,360p,worst 这个是录制视频的画质选择,默认从高到低,哪个最好用哪个
-l 30 -o "/www/wwwroot/youtube"
-l 是命令循环运行,等博主开播了就自动录视频,录完了就继续检测等待下次开播。
30 是指每30秒检测一次,建议就用30就行了,太快了不知道会不会被Youtube ban掉。
-o "/www/wwwroot/youtube" 这个就是录制的视频文件保存的位置了。
最后说一下使用youtube-dl下载youtube视频的部分
因为Youtube-dl使用的是单线程下载,所以建议搭配上aria2使用多线程下载
apt-get install aria2 -y
使用youtube-dl 搭配aria2多线程下载视频的命令
--external-downloader aria2c //调用外部下载工具
--external-downloader-args //外部下载工具指定参数
-x 16 //启用aria2 16个线程,最多就支持16线程
-K 1M //指定块的大小
youtube-dl --format "bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4 https://www.youtube.com/watch?v=jTO-LTPMjHI --external-downloader aria2c --external-downloader-args "-x 16 -k 1M"
最近youtube-dl下载限速了,只有几十kb,就算用aria2也就几百Kb,所以换成yt-dlb吧
python3 -m pip install --upgrade yt-dlp
使用命令也差不多一样,单线程和多线程的两个例子
yt-dlp --format "bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4 https://www.youtube.com/watch?v=jTO-LTPMjHI
yt-dlp --format "bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4 https://www.youtube.com/watch?v=jTO-LTPMjHI --external-downloader aria2c --external-downloader-args "-x 16 -k 1M"