使用FFmpeg在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各有什麼優點?