1. 程式人生 > >ffmpeg推流B站直播

ffmpeg推流B站直播

環境:阿里雲伺服器ECS Ubuntu系統
目的:在伺服器上使用FFmpeg將視訊推流到B站進行直播。

步驟:

1. 安裝FFmpeg和yasm

tar -xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install

安裝完成後,回到FFmpeg資料夾中,繼續安裝。
如下命令安裝:

./configure --enable-shared --prefix=/monchickey/ffmpeg
make
make install

編譯過程較長,耐心等待。

2.連結配置

編譯完成之後執行 cd /monchickey/ffmpeg/ 進入安裝目錄,檢視一下發現有bin,include,lib,share這4個目錄,其中bin是ffmpeg主程式二進位制目錄,include是C/C++標頭檔案目錄,lib是編譯好的庫檔案目錄,share是文件目錄。

進入bin目錄,執行 ./ffmpeg -version 檢視當前版本的詳細資訊,預設情況下一般會報libavdevice.so.57: cannot open shared object file: No such file or directory,原因是lib目錄未載入到連結到系統庫中,系統ld目錄列表在/etc/ld.so.conf中,開啟檔案會發現,裡面引用了/etc/ld.so.conf.d/下面所有的.conf檔案,比如mariadb-x86_64.conf我們只需要建立一個檔案並寫入lib路徑即可,執行命令: vim /etc/ld.so.conf.d/ffmpeg.conf 然後新增一行內容: /monchickey/ffmpeg/lib 之後儲存並退出,然後執行 ldconfig 使配置生效,現在再次執行 ./ffmpeg -version 顯示就正常了。
(跟著一頓胡亂操作居然真的正常了…orz)

然而還需要把這個bin目錄加到系統的連結庫中:
方法:修改/etc/profile檔案使其永久性生效,並對所有系統使用者生效,在檔案末尾加上如下兩行程式碼

PATH=\$PATH:/monchickey/ffmpeg/bin
        export PATH

最後:執行 命令source /etc/profile或 執行點命令 ./profile使其修改生效,執行完可通過echo $PATH命令檢視是否新增成功。

3.啟動B站直播間獲取直播碼和rtmp地址

在B站的個人中心的開播設定中開啟直播間,獲取到rtmp地址和直播碼,然後執行命令就可以開始直播啦:

ffmpeg -re -i "1.mp4" -vcodec copy -acodec aac -b:a 192k -f flv "你的rtmp地址/你的直播碼"

其中
-i 後加視訊路徑,也可以是網路上的視訊地址
-b:a 192k 表示位元速率
-f flv 表示推流使用格式,據說必須是這個flv格式

後記 : 跟著做完之後,雖然確實可以直播,但是卻三步一卡著實蛋疼,修改位元速率也無效,反而會導致聲音聽起來像是在水下一樣朦朧不清。由於我對視訊的這些個格式規範都不瞭解,所以也無從下手解決。不過也可能是由於頻寬太小的問題?用的是最低配的伺服器所以頻寬是1M。