【轉(zhuǎn)播man】其他平臺轉(zhuǎn)播到bilibili的一種方法

感謝:@AnsME 提供的方法!
@85562 @有事燒紙哈 @ホシミヤ?ヨク 陪我不耐其煩的測試,以及指點。

一句話概括基本思路:使用youtube-dl等工具,獲取到直播源的m3u8播放列表,再利用ffmpeg的推流功能推到B站。
目前已經(jīng)成功轉(zhuǎn)播平臺:Youtube、Openrec、Showroom、Mirrativ。
相比較傳統(tǒng)的錄屏轉(zhuǎn)播,使用推流可以省時省力,不用一直看著直播畫面,對電腦配置要求不高,搭配服務(wù)器使用還可以解決上行不夠等問題。

安裝方法
ffmpeg的安裝+配置環(huán)境變量。
下載地址:http://ffmpeg.zeranoe.com/builds/

打開控制面板,選擇系統(tǒng)與安全

Yotube-dl 下載地址:http://www.youtube-dl.org/downloads/latest/youtube-dl.exe
注意!youtube-dl需要python環(huán)境的支持,請自行下載(MC玩家應(yīng)該比較熟悉)
直接放在解壓ffmpeg的bin文件夾下,免去重新配置環(huán)境變量。

使用方法
獲取m3u8地址
按下“Win(微軟徽標鍵)鍵+R鍵”,輸入cmd調(diào)出命令行工具。

輸入
youtube-dl -g youtube直播地址

注意!youtube直播地址應(yīng)為:https://www.youtube.com/watch?v=xff27L0aH-Q 的形式
使用ffmpeg轉(zhuǎn)播
方法同上再次調(diào)取出命令行工具。
輸入
ffmpeg -i m3u8地址 -vcode c -acodec aac -f flv “推流地址”
推流地址,就是B站開播設(shè)置的rtmp地址+直播碼

按下回車,正常情況下如果顯示出上傳速率,證明推流成功。

FAQ時間:
Q:為什么我無法獲取到m3u8地址?
A:獲取油管等需要魔法上網(wǎng)的平臺時,請確認魔法上網(wǎng)工具使用“全局模式”
Q:為什么我的m3u8地址無法推流,顯示地址錯誤?
A:youtube-dl獲取到的youtube的m3u8地址,只能在同ip下使用ffmpeg推流。通俗的講,你用電腦A獲取到的地址,不能拿到另一網(wǎng)絡(luò)環(huán)境下的電腦B上去推流。
Q:我輸入這些命令,都是做什么用的?
A:-i 輸入(可以是m3u8地址,也可以是本地文件等)
-vcodec copy 設(shè)定視頻編碼與原視頻相同
-acodec aac 設(shè)置音頻編碼為aac
-f flv 輸出為flv格式

以上是轉(zhuǎn)播Youtube的方法,Openrec,Mirrativ,Shouwroom獲取到m3u8地址后,一樣可以轉(zhuǎn)播。
Openrec
打開直播頁面,按下F12調(diào)用開發(fā)者工具,搜索m3u8文件,如圖中的“chunklist_數(shù)字文件”就是我們要獲取的地址,不同的數(shù)字后綴代表清晰度不同的源。

Showroom
showroom可以直接使用youtube-dl進行獲取,格式同上為:
youtube-dl -g showroom地址
Mirrativ
Mirrativ的操作同Openrec,不過需要獲取的文件名為playlist.m3u8


進階的想法——服務(wù)器
上面的方法,也在用自己的電腦通過梯子再進行轉(zhuǎn)播,還是要吃上行速度,那么有沒有更好的轉(zhuǎn)播方法呢?

掛載到服務(wù)器上,利用服務(wù)器的高速寬帶進行轉(zhuǎn)播,實現(xiàn)高清流暢轉(zhuǎn)播。
首先我們需要一臺服務(wù)器,我購買了一個單核512mb內(nèi)存10G硬盤的低配VPS,預(yù)裝的系統(tǒng)是CentOS 7,可用流量是3TB。

購買VPS以后,我們使用Xshell 6這款軟件來進行連接。

當顯示服務(wù)器用戶名時,證明連接成功。

在Centos7下安裝ffmpeg,在窗口輸入以下命令:
首先安裝安裝EPEL Release
yum install -y epel-release
若提示“缺少Code”,請輸入
sudo rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
接下來安裝Nux-Dextop源
導(dǎo)入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的音頻格式。

以上就是用服務(wù)器轉(zhuǎn)播到B站的方法。

不足
手動獲取地址,比較麻煩
配置服務(wù)器需要一定耐心和計算機基礎(chǔ),門檻稍高
使用這種形式,一臺服務(wù)器只能轉(zhuǎn)播一個(其實可以轉(zhuǎn)播多個)

我個人水平太低,配置服務(wù)器時也多是從網(wǎng)絡(luò)上看博客去摘抄命令,沒有辦法做出轉(zhuǎn)播臺。寫出此拙作主要是希望有路過的大佬,能開發(fā)出更強的功能,比如自動監(jiān)控頻道的開播情況,自動開播進行推流,達到真正意義上的全自動轉(zhuǎn)播。

參考內(nèi)容
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