欢迎光临散文网 会员登陆 & 注册

【转播man】其他平台转播到bilibili的一种方法

2018-08-31 18:00 作者:NB_XX  | 我要投稿

感谢:@AnsME 提供的方法!

@85562 @有事烧纸哈 @ホシミヤ・ヨク 陪我不耐其烦的测试,以及指点。

一句话概括基本思路:使用youtube-dl等工具,获取到直播源的m3u8播放列表,再利用ffmpeg的推流功能推到B站。

目前已经成功转播平台:Youtube、Openrec、Showroom、Mirrativ

相比较传统的录屏转播,使用推流可以省时省力,不用一直看着直播画面,对电脑配置要求不高,搭配服务器使用还可以解决上行不够等问题。

安装方法

ffmpeg的安装+配置环境变量。

下载地址:http://ffmpeg.zeranoe.com/builds/


无需安装,解压即用

打开控制面板,选择系统与安全

配置环境变量主要是为了方便调用ffmpeg和youtube-dl

Yotube-dl 下载地址:http://www.youtube-dl.org/downloads/latest/youtube-dl.exe

注意!youtube-dl需要python环境的支持,请自行下载(MC玩家应该比较熟悉)

直接放在解压ffmpeg的bin文件夹下,免去重新配置环境变量。

使用方法

  • 获取m3u8地址

按下“Win(微软徽标键)键+R键”,输入cmd调出命令行工具。


WIn+R调出运行,在开始菜单手动打开也行

输入 

youtube-dl -g youtube直播地址 

后面那一长串.m3u8就是我们要的,命令行的复制要右键窗体边框——编辑——复制

注意!youtube直播地址应为:https://www.youtube.com/watch?v=xff27L0aH-Q 的形式

  • 使用ffmpeg转播

方法同上再次调取出命令行工具。

输入

ffmpeg -i m3u8地址 -vcode c -acodec aac -f flv “推流地址”

推流地址,就是B站开播设置的rtmp地址+直播码

复制粘贴即可,两个和在一起就是完整的推流地址


按下回车,正常情况下如果显示出上传速率,证明推流成功。

                                      箭头所指为输入内容,图二是正常运转的画面                                        最右侧三个参数代表转播总数据量、时长和上行速率

FAQ时间:

  1. Q:为什么我无法获取到m3u8地址?

    A:获取油管等需要魔法上网的平台时,请确认魔法上网工具使用“全局模式”

  2. Q:为什么我的m3u8地址无法推流,显示地址错误?

    A:youtube-dl获取到的youtube的m3u8地址,只能在同ip下使用ffmpeg推流。通俗的讲,你用电脑A获取到的地址,不能拿到另一网络环境下的电脑B上去推流。

  3. Q:我输入这些命令,都是做什么用的?

    A:-i 输入(可以是m3u8地址,也可以是本地文件等)

          -vcodec copy 设定视频编码与原视频相同

          -acodec aac   设置音频编码为aac

          -f flv  输出为flv格式

以上是转播Youtube的方法,Openrec,Mirrativ,Shouwroom获取到m3u8地址后,一样可以转播。

  • Openrec

打开直播页面,按下F12调用开发者工具,搜索m3u8文件,如图中的“chunklist_数字文件”就是我们要获取的地址,不同的数字后缀代表清晰度不同的源。

  • Showroom

showroom可以直接使用youtube-dl进行获取,格式同上为:

youtube-dl -g showroom地址

  • Mirrativ

Mirrativ的操作同Openrec,不过需要获取的文件名为playlist.m3u8


就是这个

进阶的想法——服务器

上面的方法,也在用自己的电脑通过梯子再进行转播,还是要吃上行速度,那么有没有更好的转播方法呢?

当然有!

挂载到服务器上,利用服务器的高速宽带进行转播,实现高清流畅转播。

首先我们需要一台服务器,我购买了一个单核512mb内存10G硬盘的低配VPS,预装的系统是CentOS 7,可用流量是3TB。

这个配置就足够

购买VPS以后,我们使用Xshell 6这款软件来进行连接。

图源网络

当显示服务器用户名时,证明连接成功。

它这个头上的点绿了,他也就连上了
  • 在Centos7下安装ffmpeg,在窗口输入以下命令:

首先安装安装EPEL Release

yum install -y epel-release

若提示“缺少Code”,请输入

sudo rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

接下来安装Nux-Dextop源

导入Code

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

最后安装ffmpeg

yum install -y ffmpeg

安装完成之后,输入

ffmpeg -version 

检查是否安装成功


这样就是成了
  • 接下来安装youtube-dl,分别输入以下两行命令并运行

wget http://youtube-dl.org/latest/youtube-dl -O /usr/local/bin/youtube-dl

chmod a+x /usr/local/bin/youtube-dl

yotube-dl需要Python2.7以上版本,因为CentOS7自带Python2.7所以并不需要更新Python。

与windows端使用同理,输入

youtube-dl -g youtube直播地址

获取直播的m3u8地址,然后使用ffmepg进行推流,格式稍有不同。

ffmpeg -i m3u8地址 -c:v copy -c:a aac -b:a 320k -ar 44100 -strict -2 -f flv "推流地址"

新增的-b:a指定了码率,而-strict -2开启严格模式,否则不能使用aac的音频格式。

服务器在给我们干活啦!

以上就是用服务器转播到B站的方法。

不足

  • 手动获取地址,比较麻烦

  • 配置服务器需要一定耐心和计算机基础,门槛稍高

  • 使用这种形式,一台服务器只能转播一个(其实可以转播多个)

我组大佬摸保(B站ID有事烧纸哈)做的一键转播台,因为沉迷单片机没有维护,现已不能使用

我个人水平太低,配置服务器时也多是从网络上看博客去摘抄命令,没有办法做出转播台。写出此拙作主要是希望有路过的大佬,能开发出更强的功能,比如自动监控频道的开播情况,自动开播进行推流,达到真正意义上的全自动转播。


参考内容

https://www.cnblogs.com/new-ass/p/7704040.html

https://zhuanlan.zhihu.com/p/23951969

http://www.xshellcn.com/xsh_column/lianjie-linux.html

https://blog.csdn.net/qq_34627459/article/details/74956569

http://www.linuxdown.net/install/soft/2016/0327/5138.html



【转播man】其他平台转播到bilibili的一种方法的评论 (共 条)

分享到微博请遵守国家法律