以下内容可能有些过时,推荐点这个新链接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"