標籤:

使用FFmpeg在B站直播的姿勢

在B站直播已經成了潮流,但是有時候我們總有一些奇怪的需求:

1. 我的機器配置爛死了,無法做到x264實時壓制然後推流,我只想複製視頻流放個片。

2. 我想在伺服器上無人值守轉播內容。

Oh,你需要FFmpeg。

在Windows下,只需要下載一個編譯好的ffmpeg.exe即可。而對於Linux用戶,編譯一個相信也難不倒你吧~

先談談我們的第一個需求,複製視頻流播片。

ffmpeg -re -i "1.mp4" -vcodec copy -acodec aac -b:a 192k -f flv "rtmp://dl.live-send.acg.tv/live-dl/你的直播碼"

來解釋一下每個參數的意思。

-re 按照視頻的FPS進行推流,如果不加這個參數的話……反正不行。

-i 指定輸入文件地址。

-vcodec copy 指定視頻編碼為複製。

-acodec aac 音頻使用aac編碼。後面的-b:a 192k則是指定碼率。

-f flv 指定輸出格式,這個必須是flv才能推到直播伺服器。

最後一串就是直播地址了。

That"s easy, right?

對於第二點。

-i 指定的輸入文件並不一定是本地文件,可以是網路視頻流,甚至可以是.m3u8文件。

一個示例:無人值守轉播Line Live。

ffmpeg -i "http://lss.line-cdn.net/p/live/hs-usWVd7LwNrZzsLIS4xNCxebGE1JBkrISUGFjZrEGczPikMfQhhM2lZNVQ2fhUWAxA4F2tUbDJkJWtXfXNjZmUVcDllMmlQ/720/chunklist.m3u8" -vcodec copy -acodec libmp3lame -ac 2 -ar 44100 -b:a 96k -f flv "rtmp://dl.live-send.acg.tv/live-dl/直播碼"

另外,輸出文件也可以有多個,只需要在最後再指定音視頻編碼和輸出格式,再加地址即可。比如:

ffmpeg -i "http://lss.line-cdn.net/p/live/hs-usWVd7LwNrZzsLIS4xNCxebGE1JBkrISUGFjZrEGczPikMfQhhM2lZNVQ2fhUWAxA4F2tUbDJkJWtXfXNjZmUVcDllMmlQ/720/chunklist.m3u8" -vcodec copy -acodec libmp3lame -ac 2 -ar 44100 -b:a 96k -f flv "rtmp://dl.live-send.acg.tv/live-dl/直播碼" -vcodec copy -acodec copy -f mp4 "record.mp4"

以上,可以實現一邊直播一遍錄流。


推薦閱讀:

想了解視頻編碼,流媒體,直播,播放器等知識,求推薦一些書籍?
FFmpeg為什麼遲遲不啟用vaapi解碼/編碼?
yuv和rgb各有什麼優點?

TAG:ACG | FFmpeg | 直播 |