腾讯会议obs推流教程_流式编程 前端

腾讯会议obs推流教程_流式编程 前端 **RTSP视频流开发**RTSP视频开发:1.使用VLC播放RTSP视频流,然后使用wireshark抓VLC的包,找到RTSP交互报文2.报文如下: OPTIONSrtsp://192.168.0.212:554/testStreamRTSP/1.0//客户端向服务器发送,说RTSP服务你又那些操作 CSeq:2 User-Age…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

					            	**RTSP视频流开发**

RTSP视频开发:
1.使用VLC播放RTSP视频流,然后使用wireshark抓VLC的包,找到RTSP交互报文
2.报文如下:

	OPTIONS rtsp://192.168.0.212:554/testStream RTSP/1.0    //客户端向服务器发送,说RTSP服务你又那些操作
	CSeq: 2
	User-Agent: LibVLC/3.0.4 (LIVE555 Streaming Media v2016.11.28)
	
	RTSP/1.0 200 OK         //RTSP服务器响应客户端
	CSeq: 2
	Date: Tue, Sep 01 2009 00:01:34 GMT
	Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER  //RTSP响应客户端  说我这些操作
	
	DESCRIBE rtsp://192.168.0.212:554/testStream RTSP/1.0      //客户端向服务器端发送DESCRIBE,用于得到URI所指定的媒体描述信息,一般是SDP信息。客户端通过Accept头指定客户端可以接受的媒体述信息类型。
	CSeq: 3
	User-Agent: LibVLC/3.0.4 (LIVE555 Streaming Media v2016.11.28)
	Accept: application/sdp
	
	RTSP/1.0 200 OK    //服务器响应
	CSeq: 3
	Date: Tue, Sep 01 2009 00:01:36 GMT
	Content-Base: rtsp://192.168.0.212/testStream/
	Content-Type: application/sdp
	Content-Length: 495
	//媒体播放的信息
	v=0
	o=- 1251763203553668 1 IN IP4 192.168.0.212
	s=Session streamed by "testOnDemandRTSPServer"
	i=testStream
	t=0 0
	a=tool:LIVE555 Streaming Media v2016.11.28
	a=type:broadcast
	a=control:*
	a=range:npt=0-
	a=x-qt-text-nam:Session streamed by "testOnDemandRTSPServer"
	a=x-qt-text-inf:testStream
	m=video 0 RTP/AVP 96   
	c=IN IP4 0.0.0.0
	b=AS:500
	a=rtpmap:96 H264/90000  //采用视频采用H264格式
	a=fmtp:96 packetization-mode=1;profile-level-id=640028;sprop-parameter-sets=Z2QAKKzoB4AiflQ=,aO48MA==  //这个是音频 音频格式是AAC 
	a=control:track1
	SETUP rtsp://192.168.0.212/testStream/track1 RTSP/1.0   //建议视频流
	CSeq: 4
	User-Agent: LibVLC/3.0.4 (LIVE555 Streaming Media v2016.11.28)
	Transport: RTP/AVP;unicast;client_port=49474-49475
	
	RTSP/1.0 200 OK
	CSeq: 4
	Date: Tue, Sep 01 2009 00:01:36 GMT
	Transport: RTP/AVP;unicast;destination=192.168.0.15;source=192.168.0.212;client_port=49474-49475;server_port=6970-6971
	Session: FA18BF48;timeout=65
	
	PLAY rtsp://192.168.0.212/testStream/ RTSP/1.0      //双方达成一致,开始播放视频
	CSeq: 5
	User-Agent: LibVLC/3.0.4 (LIVE555 Streaming Media v2016.11.28)
	Session: FA18BF48
	Range: npt=0.000-
	
	RTSP/1.0 200 OK
	CSeq: 5
	Date: Tue, Sep 01 2009 00:01:36 GMT
	Range: npt=0.000-
	Session: FA18BF48
	RTP-Info: url=rtsp://192.168.0.212/testStream/track1;seq=6674;rtptime=191607758

3.使用tcpdump这个抓包工具,在设备进行抓包,然后将抓的报文和PC机使用wireshark抓包进行对比,格式那个地方不对,就找花时间找问题所在,让你的设备的RTSP交互报文和PC机上抓包的RTSP交互报文格式一致.当时我遇到的问题是因为音频而导致的,我在大华球机上,不带音频的信息,我写好RTSP视频信息时,很高兴,然后向领导交叉,我的公司的设备播放客户的RTSP视频流时出现了问题,客户的视频带音频.然后我使用VLC播放客户的RTSP视频流,抓包,发现, 客户有两次SETUP 第一次时间里视频套截字建立,第二次是音频套接字建立.就是因为这个导致报文格式不一样.(对于H264结构不懂,可以看看这个http://www.iosxxx.com/blog/2017-08-09-%E4%BB%8E%E9%9B%B6%E4%BA%86%E8%A7%A3H264%E7%BB%93%E6%9E%84.html)

4.报文格式一样是,视频还播放不出来,当时我就纳闷,到底是为什么呢?只有一个办法就是抓包.获取到的视频数据,然后看看我拼帧是否拼对了,一看,my god.我的神啊,这是和我看开玩笑吗,我对视频帧处理,和抓包获取的视频帧完全牛头不对马嘴.然后我根据用户采用RTP对H264视频进行打包方式,进行拼帧,这个做完之后,发现视频卡顿,根据序列号进行判断是否设备丢包了,同时在设备进行抓包,比较,发现抓包的视频数据是连续的,然而设备却显示是丢包,这是为啥.我想了很久也是没有想明白这是为什么,当时想出现丢包,我就叫把视频给丢掉,然后等I帧来,才开始接受数据.后来我看一个大牛博客,上面说,因为延时设备没有收到包,你取数据时,没有取到,这个就造成丢包,然而设备还是接受到了.最后我把调用延时改小一点,视频问题解决了.

5.处理AAC音频,我做的很简单,将AAC数据给取出来,加上我公司的对AAC音频头.就这样RTSP视频流协议就做好了(AAC音频可以看这个博客https://blog.csdn.net/bsplover/article/details/7426476)

总结:
1.保持一颗乐观的心态.
2.找问题不能模糊化,要做到精确定位.
3.代码规范.写代码时多思考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180845.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • css3实现遮罩层_div遮罩层

    css3实现遮罩层_div遮罩层JS+CSS简单实现DIV遮罩层显示隐藏

    2022年4月21日
    61
  • 遗传算法优化bp神经网络matlab代码_神经网络进化算法

    遗传算法优化bp神经网络matlab代码_神经网络进化算法最近在学遗传算法优化BP神经网络,从新浪博客,Matlab中文论坛以及《MATLAB神经网络43个案例分析》里看了许多资料,存在着缺少test函数,以及函数名调用错误等问题。自编了test函数,调整后,供大家参考,(在Matlab2006a亲测可行)。参考文献:《MATLAB神经网络的43个案例分析》王小川,史峰,郁磊等,北京航空航天大学出版社。flyingnosky的sina博…

    2022年9月11日
    1
  • vc6.0不能添加文件到工程_mdk工程添加另一个工程

    vc6.0不能添加文件到工程_mdk工程添加另一个工程曾经我有一个同学说它的VC软件只要选择添加文件到工程,软件就会崩溃,即停止运行,当时我就笑了,怎么可能会出现这个问题,只要你正常安装的话就不会出现这个问题了       结果之后我就遇到这个问题了,不知道什么时候我的软件也是不能选择添加文件到工程,只要选择这个,首先出来个对话框:      Windows正在收集解决方法什么的。。。。      对此,我把我的软件全部卸载,

    2022年8月12日
    2
  • HTML 动画(一)[通俗易懂]

    HTML 动画(一)[通俗易懂]入场动画(一)图片从左至右逐渐消失实现逻辑:a:将遮罩分割为数个div,多个div通过图片定位拼接成一张图片;b:运用requestAnimationFrame+animation实现动画;c:遮罩层网格状逐步消失设置background-position:0;2.效果图:3.代码:<!DOCTYPEhtml><htmllang=”en”&…

    2022年6月29日
    25
  • Java BigDecimal的使用[通俗易懂]

    Java BigDecimal的使用[通俗易懂]BigDecimal加减乘除BigDecimalbignum1=newBigDecimal(“10”);BigDecimalbignum2=newBigDecimal(“5”);BigDecimalbignum3=null;//加法bignum3=bignum1.add(bignum2);System.out.pr…

    2022年6月7日
    28
  • collectors.groupingby属性分组_group by having order by

    collectors.groupingby属性分组_group by having order by问题描述:当我们对List根据时间排序,然后根据某个字段分组后,会产生乱序的问题。 解决办法:因为Collectors.groupingBy分组后默认返回HashMap类型,我们修改为LinkedHashMap即可。Collectors.groupingBy部分源码://一个参数classifierpublicstatic<T,K>Collector<T,?,Map<K,List<T>>>groupingBy(Fu.

    2022年8月22日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号