簡體   English   中英

具有H264解碼能力的WebRTC視頻Android和iOS客戶端

[英]WebRTC video Android and iOS client with H264 decoding capabilities

我們正在尋找可以幫助我們為 Android 和 iOS 開發能夠正確解碼 H264 的客戶端應用程序的人。 該應用程序可以以任何方式開發,只要它可以集成到我們現有的 Android 和 iOS 應用程序中。 主要要求是在 iOS 和 android 設備上呈現 h264 WebRTC 流

我們已經使用 Janus WebRTC 網關和 Streaming 插件開發了信號機制。 使用具有硬件 H264 編碼和 Gstreamer 的標准 UVC 攝像頭將視頻流發送到 Janus,並使用以下管道:

gst-launch-1.0 -v v4l2src device=/dev/video1 ! 視頻/x-h264,配置文件=基線,寬度=1280,高度=720,幀率=30/1! h264解析! rtph264pay 配置間隔=1 pt=126 ! udpsink 主機=xxxx 端口=xxxx

可以使用計算機上的瀏覽器或 Android 上的 Firefox 或 iOS 上的 Safari 來查看流。 但是,在 Android 上使用 Native WebRTC 庫或 ReactNative 不會顯示任何視頻。

這是要約 SDP 的示例:

{
 "type":"offer",
 "sdp":
    "v=0
    no=- 1515855541838524 1515855541838524 IN IP4 188.166.53.100
    ns=Mountpoint 99
    nt=0 0
    na=group:BUNDLE video
    na=msid-semantic: WMS janus
    nm=video 9 RTP/SAVPF 126
    nc=IN IP4 188.166.53.100
    na=sendonly
    na=mid:video
    na=rtcp-mux
    na=ice-ufrag:Ip+m
    na=ice-pwd:nKEVyaCWWbgGSz1FHuohS7
    na=ice-options:trickle
    na=fingerprint:sha-256 D2:B9:31:8F:DF:24:D8:0E:ED:D2:EF:25:9E:AF:6F:B8:34:AE:53:9C:E6:F3:8F:F2:64:15:FA:E8:7F:53:2D:38
    na=setup:actpass
    na=rtpmap:126 H264/90000
    na=fmtp:126 profile-level-id=42e01f;packetization-mode=1
    na=rtcp-fb:126 nack
    na=rtcp-fb:126 goog-remb
    na=ssrc:309447223 cname:janusvideo
    na=ssrc:309447223 msid:janus janusv0
    na=ssrc:309447223 mslabel:janus
    na=ssrc:309447223 label:janusv0
    na=candidate:1 1 udp 2013266431 188.166.53.100 58606 typ host
    na=candidate:2 1 udp 2013266431 10.18.0.5 36151 typ host
    na=candidate:3 1 udp 2013266431 10.0.20.1 34608 typ host
    na=end-of-candidates
    n"
}

可以在此處找到 ReactNative 代碼: https : //github.com/Nefalas/VideoWebRTC我已經在三星 Galaxy S7 上對其進行了測試,但沒有呈現視頻,但我收到以下消息:

無法識別的視頻/avc 配置文件 2130706433

任何幫助將不勝感激! 如果您能夠快速找到解決方案,我們願意為您的努力提供報酬。

Firefox 在 Android 上附帶了軟件 H.264 編解碼器,而 Chrome 和 Android 的本機 WebRTC 庫沒有。 這就是為什么 Firefox 可以解碼您的流,而本機庫或 React Native(我認為它依賴於 Chrome 引擎)不能。

Chrome 和本機 WebRTC 庫確實支持 Android 上的某些硬件 H.264 編碼器,但您的特定設備似乎沒有。 不幸的是,在這種情況下,沒有適用於 Chrome 或原生 WebRTC 的軟件編解碼器。

編輯: Galaxy S7 應該有 WebRTC 支持的硬件 H.264 解碼器,所以問題可能與原始 H.264 流的參數有關。 盡管如此,當設備上沒有支持的硬件 H.264 編碼器/解碼器時,本機 WebRTC 庫以及 Chrome 將無法呈現流。

我認為您的問題是由 Chrome for Android 中的錯誤引起的,涉及 H.264

Chrome Android 不提供/回答 H.264 約束基線配置文件

這個問題可能會在 Chrome Android M65 中得到解決。有關更多信息,請參閱此內容。

暫無
暫無

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

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