如何使用FFmpeg將互聯網直播點播平臺內直播視頻流轉化爲HLS流?

FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化爲流的開源計算機程序。在音視頻開發過程中,經常需要使用 FFmpeg 將原先的一個單視頻文件轉換爲多個HLS 流文件,用於視頻直播和點播,當然我們視頻直播點播平臺EasyDSS也會使用FFmpeg作爲能力程序,當需要將視頻流轉化爲HLS 流時,我們就可以通過FFmpeg來進行轉換。

1.png

通過互聯網直播點播平臺EasyDSS播放的單視頻文件一般有多種格式,比如mp4、mkv等封裝好的視頻格式。HLS 流文件由 m3u8 文件和視頻 TS 文件組成,如下圖所示:

485.png

以下命令可以將 input.mp4 文件轉換爲 output.m3u8 格式的視頻流文件。

ffmpeg.exe -fflags +genpts -hide_banner -i input.mp4 -vcodec libx264 -acodec copy -strict -2 -f hls -hls_time 8 -hls_list_size 0 output.m3u8

命令中-vcodec libx264 代表轉碼後的文件視頻編碼爲 h264 編碼,-acodec copy 代表轉碼後的文件音頻編碼直接採用 input.mp4 內部原有的音頻編碼。

如果計算機中存在英偉達顯卡,對於以上參數還可以繼續優化,將 libx264 修改爲 h264_nvenc,即可加快轉碼速度。

ffmpeg.exe -fflags +genpts -hide_banner -i input.mp4 -vcodec h264_nvenc -acodec copy -strict -2 -f hls -hls_time 8 -hls_list_size 0 output.m3u8

libx264 參數爲僅使用 cpu 的能力進行視頻轉碼,h264_nvenc 調用了顯卡的程序進行轉碼,速度更快。

如果輸入的視頻文件,本身的視頻編碼爲 h264 編碼,可以再次優化以上程序。使用以下程序可以查看 input.mp4 文件的視頻和音頻編碼。

ffmpeg.exe -i input.mp4                                                            

486.png

以上第一個紅色框中,代表視頻編碼爲 h264 編碼,可以使用以下代碼轉碼,加快轉碼速度。

ffmpeg.exe -fflags +genpts -hide_banner -i input.mp4 -vcodec copy -acodec copy -strict -2 -f hls -hls_time 8 -hls_list_size 0 output.m3u8

DSS9.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章