RTSP转WebRTC视频协议解决方案

这篇具有很好参考价值的文章主要介绍了RTSP转WebRTC视频协议解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、视频原理

浏览器或是音视频播放器(如ffplay、VLC、射手影音等)播放互联网上视频文件,需要对接收数据经过以下几个步骤:

解析协议-> 解封装 -> 解码音视频 -> 音视频同步。

简单起见,可将视频数据分为以下四层如下表1-1所示,可结合图1-1了解其数据流在各阶段的处理流程webrtc rtsp,webrtc,音视频

表1-1 音视频各层级协议封装格式表webrtc rtsp,webrtc,音视频 

图1-1 音视频数据流处理层级图

音视频流各协议层处理作用分别如下所述:

解协议

将流媒体协议的数据解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,WebRTC或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。

解封装

将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。

解码

将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。

视音频同步

根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来

2、系统架构

实现视频端到端播放,整个数据流经过四个组件: 推流端(ffmpeg)、播放端(浏览器)、流媒体服务器和协议转换器。具体系统架构图如下2-1所示。

webrtc rtsp,webrtc,音视频

图2-1 视频端到端系统架构图

3、代码实践

3.1 流媒体服务器

流媒体服务器选用开源代码mediamtx

注意

  1. 构建二进制文件,需要golang环境,版本需要1.18.x以上;
  2. 可以关闭mediamtx原生的webrtc播放功能(webrtcDisable: yes),只提供以RTSP协议方式读取流。
    $make binaries
    $./mediatx

    3.2 协议转换器

    将以RTSP协议读取视频流并转换为WebRTC协议视频流传给浏览器。 参考代码

    3.3 推送端

    利用ffmpeg循环读取视频流并加上时间戳,具体命令如下

     $ffmpeg -re -stream_loop -1 -i oceans.mp4 -vf "settb=AVTB,\n            setpts='trunc(PTS/1K)*1K+st(1,trunc(RTCTIME/1K))-1K*trunc(ld(1)/1K)',\n            drawtext=fontsize=60:text='%{localtime}.%{eif\:1M*t-1K*trunc(t*1K)\:d}'" -x264-params "keyint=10:min-keyint=1" -crf 26 -c:v libx264 -an -b:v 500k -bufsize 500k -preset ultrafast  -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/mystream

    3.4 浏览器端

    前端代码借鉴mediamtx项目内关于原生支持webrtc的前端浏览代码。

    注意

  3. 改造websocket连接请求参数格式,通过传递topic请求参数来表征播放流的path路径
  4. 4、总结

    本文重点在于阐述工程实践部分,从整体勾勒视频流端到端数据流以及简要概述相关组件的功能,而理论描述方面则简略提及视频相关协议,如RTP/RCTP、SDP、RTSP、WebRTC等,还有相关技术概念,如NAT、P2P和ICE candidate等。在实现RTSP协议转换WebRTC协议模块方面则借鉴模仿开源组件mediamtx中WebRTC服务模块处理代码,并结合开源的gortsplib库糅合而成(有待改进)。

 文章来源地址https://www.toymoban.com/news/detail-706873.html

 

到了这里,关于RTSP转WebRTC视频协议解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【音视频处理】RTMP、HLS、HTTP-FLV、WebRTC、RTSP的区别?直播协议详解

      大家好,欢迎来到停止重构的频道。 本期我们详细讨论 直播的相关协议 ,包括:HTTP-FLV、HLS、RTMP、Web-RTC、RTSP等等。 我们将会详细介绍这些协议的工作原理、应用场景、及延迟的原因。 我们按这样的顺序讨论​ 1、  RTMP、HTTP-FLV  2、  HLS  3、  Web-RTC  4、  RTSP  RTM

    2024年02月02日
    浏览(33)
  • Android平台一对一音视频通话方案对比:WebRTC VS RTMP VS RTSP

    一对一音视频通话使用场景 一对一音视频通话都需要稳定、清晰和流畅,以确保良好的用户体验,常用的使用场景如下: 社交应用 :社交应用是一种常见的使用场景,用户可以通过音视频通话进行面对面的交流; 在线教育: 老师和学生可以通过音视频通话功能进行实时互

    2024年02月13日
    浏览(34)
  • Web端Webrtc,SIP,RTSP/RTMP,硬件端,MCU/SFU融合视频会议系统方案分析

    Web端视频融合,会议互通已经是视频会议应用的大趋势,一是目前企业有大量的老视频会议硬件设,二新业务又需要Web端支持视频会议监控直播需求,迫切需要一个融合对接的方案,即能把老的设备用起来,又能对接新的业务系统,加入Web视频参会互动。 分析: 1,老视频设

    2024年04月25日
    浏览(28)
  • RTP协议基本分析(RTSP、WebRTC使用)

    实时流传输协议(RTSP:Real Time Streaming Protocol)是一种网络传输协议,旨在发送低延迟流。 该协议由RealNetworks,Netscape和哥伦比亚大学的专家在1996年开发。它定义了应如何打包流中的数 据以进行传输。 2、RTP RTP协议原理,负责对流媒体数据进行封包并实现媒体流的实时传输,

    2023年04月17日
    浏览(28)
  • web播放rtsp流视频,使用webrtc毫秒级延迟

    目录 一、zlmediakit环境搭建和编译 1)、下载zlmediakit 2)、安装依赖 3)、编译webrtc 4)、启动zlmediakit 二、播放webrtc视频 1)、动态添加拉流代理 2)、播放视频  三、嵌入到自己的vue项目中。 1)、拷贝demo到自己的vue项目中 2)、mkcert生成证书 背景:需要在web应用中播放摄像头的rtsp流视

    2024年02月04日
    浏览(35)
  • VUE+webrtc-streamer实现实时视频播放(监控设备-rtsp)

    首先说明目前我只完成了本地测试,因还没确定技术选型所以暂无项目应用,先做一下储备,后续项目应用的话这篇文章会持续更新。 监控设备播放效果如下:基于公司环境测试了大华和海康的监控设备(H264编码)可以正确播放 1、下载webrtc-streamer,本机测试我下载的最新

    2024年02月01日
    浏览(25)
  • VUE+webrtc-streamer 实现实时视频播放(监控设备-rtsp)

    下图则启动成功,此时在浏览器访问127.0.0.1:8000可以看到本机监控画面 地址:https://github.com/mpromonet/webrtc-streamer/releases 注意:第三步在本机启动服务所以 new WebRtcStreamer(id,serverUrl)中URL传入127.0.0.1端口可 文章参考链接:https://blog.csdn.net/liona_koukou/article/details/126605137

    2024年02月02日
    浏览(42)
  • VUE3 播放RTSP实时、回放(NVR录像机)视频流(使用WebRTC)

    1、下载webrtc-streamer,下载的最新window版本 Releases · mpromonet/webrtc-streamer · GitHub  2、解压下载包  3、webrtc-streamer.exe启动服务 (注意:这里可以通过当前文件夹下用cmd命令webrtc-streamer.exe -o这样占用cpu会很少,直接双击exe文件会占用cpu) cmd  webrtc-streamer.exe -o 启动如下图所示,

    2024年04月12日
    浏览(38)
  • 如何解决html播放rtsp视频,浏览器播放rtsp视频流方案

    最近项目中需要实时播放摄像头rtsp视频流,于是就专门做了些研究。而浏览器不能直接播放,只有通过插件或者转码来实现这个需求。 要实现这个目的,可以采用的方案非常得多,有商业的也有开源的,这里主要列举一些开源的方案。这里的方案都是我尝试过了的,有些成

    2024年02月05日
    浏览(42)
  • UE中低延时播放RTSP监控视频解决方案

    1.1 行业痛点 在各种智慧城市、智慧社区、智慧水利、智慧矿山等数字孪生项目中,经常使用通UE来开发三维可视化场景。在这些场景中通常都需要把现场的各种监控视频在UE的可视化场景中接入,主要包含海康威视、大华、宇视、华为等众多监控厂商的设备与平台,监控视频

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包