清洁和联合网络 RTC 和 RTP

Kurento Media WebRTC to RTP

我正在使用 kurento 的 master git 制作 WebRTC 到 RTP 的桥接器。

MediaPipeline pipeline = kurento.createMediaPipeline();
WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build();
HttpGetEndpoint httpEndpoint=new HttpGetEndpoint.Builder(pipeline).build();

org.kurento.client.Fraction fr= new org.kurento.client.Fraction(1, 30);         
VideoCaps vc= new VideoCaps(VideoCodec.H264,fr);
httpEndpoint.setVideoFormat(vc);

AudioCaps ac= new AudioCaps(AudioCodec.PCMU, 65536);
httpEndpoint.setAudioFormat(ac);

webRtcEndpoint.connect(httpEndpoint);

然而,尽管如此,输出视频播放被编码为 webm 。我也尝试了各种其他方法(使用 RTP Endpoint、使用 Gstream 过滤器、使用 VLC HTTP 到 RTP 流媒体)。但是没有方法给我一个可以在 safari 和 IE 上播放的视频,即 H264 编码。请求媒体开发人员和 kurento 团队的帮助。

Safari 和 IE 不支持 RTP/H.264。从你的代码中,我了解到你正在尝试创建一个 WebRTC 来标记桥。在这种情况下,HttpGetEndpoint 将通过 HTTP 伪流提供媒体。然而,Kurento 只提供 WebM 格式的那种实时 HTTP 伪流。据我所知,Safari 和 IE 都不支持 WebM,因此你想做的事情不会独立于你强加给 HttpGetEndpoint 的上限。您将只能在 Chrome、Fireforx 或其他支持 WebM 的浏览器上看到它。

您唯一的解决方案可能是 HttpGetEndpoint 以 MP4 格式(或 IE 和 Safari 支持的任何其他格式)提供媒体,但是以该格式创建实时流非常棘手,我们(Kurento 团队)做到了没有时间实现它,而且这个功能不在我们的短期路线图中。

但是,我们有很多用户使用 RTMP 将 WebRTC 与 IE 和 Safari 集成。在这种情况下,您需要将 Kurento 与支持 RTMP 的媒体服务器集成(这可以通过不同的方式完成),然后让 RTMP 媒体服务器为浏览器提供媒体服务。