更新,后来发现debian的系统更好用点,ffmpeg可以直接装比较新的版本,不用自己编译,就有了这个
使用Debian 10 自动检测youtube和twitch开播后录制教程篇
这里:https://www.mfpud.com/topics/10833/
下面的内容有点过时了,不用看了,直接点上面的链接吧
streamlink是一个开源的小工具,就和下载youtube视频的工具youtube-dl差不多,不过streamlink主要用途是用来截取和录制直播流媒体。
先说使用Linux的方法,不管是CentOS,ubuntu,还是debian,都可以照葫芦画瓢的安装使用。
不过 ubuntu 或者 debian的安装命令不一样,可以去本文最下面的链接中找。
以CentOS举例,为了方便演示,直接使用宝塔面板的VPS演示了。
安装完宝塔面板后,在软件商店中安装宝塔SSH终端,如图
打开终端工具,输入你的root密码后登录,默认位置应该是root目录,如图
如果不是root目录,则输入
cd ~
在root目录,依次输入下面的命令运行
更新系统
yum update -y
安装python3
yum install python3-pip
安装you-get
pip3 install you-get
安装streamlink
pip3 install streamlink
更新streamlink库
pip3 install --upgrade streamlink
安装FFmpeg
yum install -y epel-release
sudo rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
yum install -y ffmpeg
安装完成
接下来就是解析直播流媒体链接,以及录制的命令
解析链接,后面的 thebs_chen 是twitch的房间频道网址
这里用的是twitch的直播,可以把下面代码中的网址换成其他平台的,比如youtube什么的。
streamlink twitch.tv/thebs_chen
效果如图
可以看到一共好几个媒体流,其中最好的是1080p 60帧的,最差的是160p的
录播命令,推荐换个目录执行,别直接在root的目录执行
比如去 wwwroot的目录中录制视频
cd /www/wwwroot
录制视频的命令
在当前执行命令的文件夹中运行
录制的视频文件叫 loadream.mp4
录制的网址是 twitch.tv/thebs_chen
录制的画质是 best ,最好的画质
streamlink -o loadream.mp4 twitch.tv/thebs_chen best
执行后就开始录制了,不想录制了就关了终端,或者播主停播了就自动停了。
再说一下自动录像的方法
在github上找到一个可以自动检测是否开播,开播后自动录像的方法
首先,需要给vps安装 screen ,为了能关掉终端后,命令依然能执行
yum install screen
安装后新建一个叫做missfeather的会话
screen -S missfeather
然后就可以在这个missfeather的会话中运行命令,关掉终端后命令也能继续执行。
关掉终端后,重新打开这个会话的命令
screen -r missfeather
以及查看所有的会话,终止会话,清除会话的命令。
screen -ls
screen -d <session ID 或者 名字>
screen -wipe
screen -X -S ID和名称 quit
总之,新建missfeather的会话后,所有的直播,转播,录制的命名,都在missfeather的这个新会话里完成就可以了。
github上的twitch自动检测是否开播,以及开播后自动录像的脚本
地址:https://github.com/printempw/live-stream-recorder
好几个脚本,有自动检测youtube是否开播,开播后自动录像的,也能直接检测和录制m3u8的链接。
但是经过我的测试,录制twitch的脚本有问题,录制完成后,视频就丢失了,所以我改了一下脚本,现在可以正常用了
这是我修改之后的脚本代码
#!/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").mp4"
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
新建文件 record_twitch.sh ,内容就是我上面的代码
打开你打算录制的目录,把脚本 record_twitch.sh 上传到这个目录。
比如我的在 /www/wwwroot/rtmp.chatcyf.com 这个目录下运行和录制
打开终端,创建一个会话
screen -S missfeather
切换到上面我提到的路径
cd /www/wwwroot/rtmp.chatcyf.com
脚本上传到这个目录,如图
终端执行这个命令
./record_twitch.sh thebs_chen best loop
比如上面的命令,是twitch的脚本,自动检测 thebs_chen 频道,每10秒检测一次,检测到开播后自动录像,录制完成后会继续执行检测命令,直到下次开播。
更多命令和参数可以去上面的github看看,录制后效果如下
接下来说一下Windows 版的
Windows 系统也是推荐先安装python,然后在cmd中用pip命令安装
pip install streamlink
不过感觉萌新挺多的,并且官方也有.exe的安装版
所以直接打包了一个完整包,下载安装就行了,更新地址见最下面。
v1.11.0 + 2.1.2 的网盘打包
链接:https://pan.baidu.com/s/16R03Iel5QzOKS_oTB5lxEw
提取码:xu1v
https://cloud.189.cn/t/uAVN3eBBFrQr
更多linux系统或者macOS系统安装命令代码:https://streamlink.github.io/install.html
Windows 安装版下载:https://github.com/streamlink/streamlink/releases
Windows 窗口化工具:https://github.com/streamlink/streamlink-twitch-gui/releases
Windows 便携版,非官方:https://github.com/beardypig/streamlink-portable/releases