簡體   English   中英

如何在 WebRTC 中使用 FFmpeg H264 編碼器?

[英]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 項目中的dtlssrtpencnicesinknicesrc元素實際推出您自己的 WebRTC:

https://github.com/EricssonResearch/openwebrtc-gst-plugins

這一點都不容易。 WebRTC 有一個非常復雜的握手,那些 GStreamer 元素需要很多特殊的連接,但它確實產生了預期的結果。

哦,順便說一句,我們的經驗是 openh264 對 WebRTC 流量非常有效,我們最終在許多情況下使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM