[英]How to use FFmpeg H264 encoder in WebRTC?
對於 H264 編碼,WebRTC 使用不支持硬件加速的 OpenH264。 WebRTC 中包含許多第三方編解碼器,包括 WebRTC。 如何改用 FFmpeg? “is_component_ffmpeg=true”似乎沒有做任何事情。
這里的目標是使用硬件加速進行編碼,以減少延遲和 CPU 使用率。 我們正在運行硬件編碼器,但不知道如何將其插入 webrtc。 使用硬件加速是最接近的選項。
使用FFmpeg需要注意哪些地方? 或使用外部編碼的 h264 數據流?
我們最終通過用我們自己的編碼器調用替換所有 OpenH264 API 調用來修改h264_encoder_impl
。
WebRTC 不斷要求編碼器實現更新比特率和幀率,因為它認為適合當前可用的帶寬。 我們使用的硬件編碼器僅支持動態更新比特率,並且與 WebRTC 配合得很好。 幀率設置為固定值。
由於我們沒有按照 WebRTC 的要求更改幀速率並且它仍然可以正常工作,我認為在對給定的編碼緩沖區僅正確執行RTPFragmentation后,編碼流也可以以相同的方式發送。
我們過去曾嘗試分流 WebRTC 項目的編碼部分,但運氣不佳(我們希望將已編碼的數據傳遞給多個 WebRTC 客戶端)。 我的印象是它與服務質量緊密結合。 WebRTC 希望根據當前網絡流量調整編碼器設置。
我們找到的最佳解決方案是使用 OpenWebRTC 項目中的dtlssrtpenc
、 nicesink
和nicesrc
元素實際推出您自己的 WebRTC:
https://github.com/EricssonResearch/openwebrtc-gst-plugins
這一點都不容易。 WebRTC 有一個非常復雜的握手,那些 GStreamer 元素需要很多特殊的連接,但它確實產生了預期的結果。
哦,順便說一句,我們的經驗是 openh264 對 WebRTC 流量非常有效,我們最終在許多情況下使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.