如何把ip 摄像头放进webrtc?

之前有人问过,“怎么把IP摄像头放进WebRTC呢?”其实这事没那么简单,要动的东西多着呢,比如底层编解码、网络反馈,还有丢包恢复这些环节,搞不好画面就卡成PPT了。 要把Demo变成产品,最省心的办法是用媒体网关做个“翻译官”。它能把摄像头说的话转成浏览器能懂的语言,再把浏览器发回来的信息翻译回给摄像头。这么一来,画面才能流畅跑起来。 市面上的IP摄像头一般用两种语言输出视频:一种是RTSP加H.264,安防圈用得最多;另一种是HTTP加MJPEG,资源紧张的时候选这个。不管是哪种语言,网关都得先听懂了,再转成VP8格式塞给浏览器。这中间要是少了一步都不行。 真实网络环境并不透明,它会发RTCP包给网关,像是在报天气一样。老旧的摄像头只支持AVP模式,没有反馈功能。如果网关直接把RTCP包扔回去不管了,视频就会突然卡住。因为编码器收不到关键帧请求PLI,解码到后面就变黑了。更严重的是REMB包提示降码率的消息,如果不理会的话,丢包会越来越严重,最后画面全是雪花。 所以网关必须把RTCP反馈全部吃掉才行。 用Kurento搭个“零掉线”网关很简单。开发者只要搭积木一样放元素连管线就行。下面这三步带你搞定: 第一步引入PlayerEndpoint抓流。它天生支持RTSP/RTP和HTTP/MJPEG格式,抓流解包转码都不用操心。 第二步接入WebRtcEndpoint当喇叭。它负责把VP8流灌进协议栈里,还能终结所有RTCP反馈。 第三步把两边连起来就行。Kurento内部会自动把H.264/MJPEG转成VP8,也会把浏览器发回来的信息翻译成摄像头能懂的语言。 搭完基本通话后还想录像分析什么的也方便。只要再接一个Sink模块就行了,不用重复写信令和适配代码了。Kurento的模块化设计让扩展功能变得像串珠子一样简单。