我们正在寻找可以帮助我们开发适用于Android和iOS的客户端应用程序的人,该应用程序能够正确解码H264。只要可以将应用程序集成到我们现有的Android和iOS应用程序中,就可以以任何方式开发应用程序。主要要求是在iOS和Android设备上呈现h264 WebRTC流
我们已经使用Janus WebRTC Gateway和Streaming插件开发了信令机制。使用具有硬件H264编码的标准UVC相机和具有以下管道的Gstreamer将视频流发送到Janus:
gst-launch-1.0 -v v4l2src device = / dev / video1! video / x-h264,profile = baseline,width = 1280,height = 720,framerate = 30/1! h264parse! rtph264pay config-interval = 1 pt = 126! udpsink host = x.x.x.x port = xxxx
可以使用计算机上的浏览器或Android上的Firefox或iOS上的Safari查看流。但是,使用Native WebRTC库或Android上的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上测试了它并且没有渲染视频,但我收到以下消息:
无法识别的个人资料2130706433 for video / avc
任何帮助将不胜感激!如果您能够快速找到解决方案,我们愿意为您的努力付出代价。
答案 0 :(得分:0)
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将无法呈现流。
答案 1 :(得分:0)
我认为您的问题是由Chrome for Android中的错误引起的,涉及H.264
Chrome Android does not offer/answer H.264 Constrained Baseline Profile
Chrome Android M65可能会解决此问题。 See this了解更多信息。
答案 2 :(得分:0)
使用本地本机实现,该流在某些手机上可用,而在其他手机(例如三星)上不可用。您可以调试以获得更好的结果。