簡體   English   中英

為什么WebRTC僅在Chrome中支持H264,而在某些設備的本機應用程序中不支持

[英]Why WebRTC only support H264 in Chrome but not in native application with some devices

我使用官方示例在Android Chrome中創建商品SDP,我們可以找到a=rtpmap:100 H264/90000 ,這意味着它可以支持H264。

但是,如果我構建AppRTC(Android官方示例)並使用官方預構建庫版本1.0.25821,請調用createOffer,然后在SdpObserver::onCreateSuccess接收SDP,則SDP 包含H264。

我的測試設備是Oppo R15(帶有MTK Helio P60,Android 8.1)。

那么,為什么WebRTC僅在Chrome中支持H264,而在某些Android設備上不支持本機應用程序?

Chrome版本使用openh264,而常規** WebRTC則不使用 我通常所說的是,您可能會使用chrome版本的h.264編碼器軟件,但我不建議這樣做。

在Android WebRTC上 ,僅在以下情況下支持H.264

  1. 設備硬件支持它,並且
  2. WebRTC硬件編碼器粘合邏輯支持該硬件編碼器。 當前僅支持QCOMEXYNOS設備。 因此,即使任何其他設備支持h.264 HW編碼器,也不會被使用,也不會作為編解碼器工廠的一部分被添加,並且您不會在從WebRTC示例應用程序生成的SDP中看到。

在Java級別,您可以在HardwareVideoEncoderFactory.java中看到該代碼,它在isHardwareSupportedInCurrentSdkH264函數中檢查QCOM和EXYNOS設備。

有趣的是,如果您使用的是本機代碼,則甚至不支持QCOM和EXYNOS硬件編碼器(Webrtc問題跟蹤器中已記錄了錯誤)。 這是由於HW編碼代碼與JNI代碼的緊密集成-絕對不是一個好的模塊化代碼。

暫無
暫無

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

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