6.6那天有位朋友参加小学同学的聚会去了,这天刚好是MIKU EXPO 2021线上LIVE的直播,他就委托我给他录个屏以便他回来后欣赏。
直播的平台是Youtube和Twitch,事实上油管那边就是引个流,以至于下了半天没卵用的东西。 直接拿obs录屏对于保存直播视频应该算是下下策了,能够直接拼接m3u8引导的ts流当然是最好的,于是研究了下You-get和Youtube-dl的文档,在这简单分享下~
一、准备工作
首先肯定是一台访问Twitch和YouTube都很流畅的服务器,而且还要方便拖回本地处理。我在这推荐腾讯云的轻量应用服务器,价格便宜而且一来香港地区是30M的GIA网络,二来我可以通过内网copy到COS,然后拉满服务器带宽快速取回~
至于You-get和Youtube-dl的取舍,前者环境要求是py3,后者是py2.6 ,因为笔者手里这台轻量还没有配置py3的环境自然优先考虑后者了。
(1)安装youtube-dl,用来下载直播切片
代码语言:javascript复制wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
chmod a rx /usr/local/bin/youtube-dl
(2)安装ffmpeg,用来拼接直播流切片
Debian/Ubuntu下安装非常方便:
代码语言:javascript复制apt install ffmpeg
CentOS7稍微麻烦一些(8需要对应的nux源):
代码语言:javascript复制#安装epel源
yum install epel-release -y
#导入Nux Dextop第三方源
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.rosudo
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
#更新
yum update
#安装ffmpeg
yum install ffmpeg ffmpeg-devel -y
(3)安装screen
直接yum或者apt安装就是了,这个是为了防止录制过程中console断开导致程序结束。
代码语言:javascript复制#Debian/Ubuntu
apt install screen
#CentOS
yum install screen
二、下载视频
首先打开个screen窗口:
代码语言:javascript复制#创建名为live的screen窗口
screen -S live
#中断后返回screen窗口
screen -r live
然后直接用you-get下载即可,注意“[]”是要一起替换掉的,最后输出的文件名也不要重复~
代码语言:javascript复制youtube-dl -o - [油管/Twitch地址] | ffmpeg -i - -vcodec copy -acodec copy "live01.mp4"
录制的内容结束之后,直接结束即可,不会影响到录制的视频内嵌信息
代码语言:javascript复制#结束录制
ctrl c
三、效果
传到COS的话之前测试过,基本上70m/s 的速度,注意下要想和COS内网通信只能使用腾讯云提供的默认DNS。
测试的时候直接在电信网络下取回来的速度基本跑满了30M,几个分段很快就取回来了。
然后直接拿视频裁剪工具掐头去尾,完美避免了转码导致的画质损失和不必要的转码时间花费。
腾讯轻量最近的无忧计划发了很多无门槛代金卷,可以直接用于轻量应用服务器,购买直接前往腾讯云官网就可以啦,好用的东西不用多说啦~