所有Twilio的可编程视频服务示例,我都可以找到演示屏幕共享或网络摄像头媒体流。有人能指出我从IP摄像机提供的RTSP流中传输视频的示例吗?
我已经能够使用Kurento找到并尝试此行为的示例,因此我认为Twilio-Video可能会暴露相同的行为。见https://github.com/lulop-k/kurento-rtsp2webrtc
答案 0 :(得分:1)
您是否看过this?
这是一篇有趣的,写得很好的文章。
来自相关链接:
WebRTC媒体网关,用于媒体互操作性 要将IP摄像机与WebRTC应用程序集成,首先需要实现媒体互操作性。这意味着摄像机提供的媒体流需要与浏览器支持的WebRTC编解码器和格式兼容。这意味着将IP摄像头所说的任何内容翻译成WebRTC浏览器支持的任何内容。为此,通常需要一种称为WebRTC媒体网关的技术。要了解此类网关的用途,请遵守以下内容。
市场上可用的大多数IP摄像机(不包括异国情调的摄像机)通过以下任何一种机制发布媒体:
RTSP / H.264:这些类型的摄像机是视频监控应用的典型代表。他们使用RTSP协议建立RTP媒体会话。换句话说,信令通过RTSP发生,而媒体传输本身基于普通RTP。不同的相机供应商可能支持不同的RTP配置文件,但对于我见过的大多数相机,AVP是唯一可用的选项。在这些相机中,通常情况下,H.264是编解码器的唯一选择。
HTTP / MJPEG:这些摄像机使用HTTP流进行信令和传输,并将视频编码为JPEG图像序列。这些摄像机的硬件更简单,操作资源更少。这就是为什么它们经常在电池消耗或重量问题时使用(例如机器人,无人机等)。作为一个缺点,视频质量往往会显着下降。
使用Kurento Media Server正确执行
Kurento Media Server工具箱可以灵活地创建丰富的WebRTC媒体网关,并根据需要使用Java或JavaScript进行编程。有关Kurento Media Server技术的介绍,请查看文档。在Kurento中实现与IP摄像机互操作的WebRTC媒体网关是微不足道和安全的。您只需要考虑三个方面:
Kurento Media Server PlayerEndpoint支持从不同类型的源(包括RTSP / RTP和HTTP / MJPEG)读取视频流。换句话说,PlayerEndpoint能够管理从IP摄像机捕获媒体。
Kurento Media Server WebRtcEndpoint支持将媒体流发布到WebRTC浏览器,并完全终止RTCP反馈。这意味着,每次接收到PLI数据包时,WebRtcEndpoint都将命令VP8编码器生成新的关键帧。这也意味着应通过命令VP8编码器降低其质量来满足REMB反馈和拥塞控制。
当连接两个不兼容的媒体元素时,Kurento Media Server不可知媒体功能可以为开发人员透明地执行所有适当的转码。因此,在这种情况下,只需将PlayerEndpoint源连接到WebRtcEndpoint接收器,就可以进行H.264 / MJPEG到VP8的转码。
实现此逻辑的JavaScript应用程序的源代码如下所示:
var pipeline = ...//Use Kurento Client API for obtaining your pipeline.
//Create the PlayerEndpoint for receiving from the IP camera. HTTP and RTSP uris are supportd
pipeline.create("PlayerEndpoint", {uri: "rtsp://your.rtsp.address"}, function(error, playerEndpoint){
//Create the WebRtcEndpoint
pipeline.create("WebRtcEndpoint", function(error, webRtcEndpoint){
//If working with trickle ice, some code for candidate management is required here.
//Connect playerEndpoint to webRtcEndpoint. This connection activates the agnostic media
//capability and the appropriate transcodings are configured and activated.
playerEndpoint.connect(webRtcEndpoint, function(error){
//Media starts flowing ... enjoy
player.play(function(error){
});
});
});
});
如果您想在JavaScript中使用完整的示例,可以查看此GitHub repository
这可以为您的需求提供解决方案,如果您有任何问题可以发表评论。
祝你好运!答案 1 :(得分:0)
有人能指出我从RTSP流式传输视频的示例 IP Camera提供的流?
由于您已标记Javascript
,因此您必须意识到rtsp://
不是HTML5环境中的预期视频源。来自摄像头的RTSP流没有特定示例。
可能的解决方案:
我能想到的唯一解决方案是使用虚拟网络摄像头软件输出视频流/文件而不是显示来自设备网络摄像头的信息。
虚拟网络摄像头将像普通网络摄像头一样被检测到(通过浏览器/ webRTC),但它不会显示您的面部,而是显示预先录制的流/文件。如果你涉及FFmpeg,你可以用你的RTSP直播流替换MP4文件。
在Twilio / HTML5代码方面,您只需选择“虚拟摄像头”,就像真正的网络摄像头一样,现在通过这种方式您可以发送RTSP源,就像它是您的网络摄像头源一样。