腾讯会议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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DirectX修复工具在线修复版

    DirectX修复工具在线修复版DirectX修复工具最新版:DirectXRepairV3.9在线修复版NEW!版本号:V3.9.0.29371大小:971KB/7z格式压缩,2.63MB/ZIP格式压缩,5.62MB/解压后其他版本:标准版增强版MD5校验码(校验工具下载):DirectXRepair.exe/eeab9900cc4c10da8e6b786e5f79d09c…

    2022年6月13日
    44
  • SpringBoot常见面试问题

    SpringBoot常见面试问题博客转载自:https://blog.csdn.net/ityouknow/article/details/96533522随着SpringBoot使用越来越广泛,SpringBoot已经成为Java程序员面试的知识点,很多同学对SpringBoot理解不是那么深刻,经常就会被几个连环跑给干趴下了!比如下面这一段的SpringBoot问答:问:你觉得S…

    2022年6月4日
    37
  • vue父组件引入子组件_vue子组件传递方法给父组件

    vue父组件引入子组件_vue子组件传递方法给父组件子组件代码<template> <divclass=”item”@click=”gotoView($event)”> <divclass=”iconfont-box”> <slot></slot> </div> <divclass=”title”>Blog</div> </div></template><script>export

    2022年9月26日
    3
  • 2021最强Python学习教程,从零基础入门到精通

    2021最强Python学习教程,从零基础入门到精通你准备好了吗???areyouready???前言01.python介绍02.项目开发完整流程(详解版)03.项目开发流程(精简版)第一篇计算机核心基础01计算机组成原理第二篇编程语言01编程语言介绍第三篇python入门01python介绍及IDE集成开发环境02python是解释型的强类型动态语言03python语法之变量、常量04python语法之注释05python垃圾回收机制GC06Python语法入门之基本数据类型07Python语法

    2022年9月19日
    3
  • administrator改名字_计算机名和用户名

    administrator改名字_计算机名和用户名重命名计算机必须以管理员或Administrators组成员身份登录才能完成该过程。如果计算机与网络连接,则网络策略设置也可以阻止您完成此步骤。在控制面板中打开系统。在“计算机名称”选项卡,单击“更改”。在“计算机名”下键入计算机的新名称,然后单击“确定”。如果计算机是域的成员,则提示您提供用户名和用户密码才能重命名域中的计算机。注意要打开“系统”,请单击“开始”,指向“设置”,单击“控制面…

    2022年10月14日
    2
  • PHP实现购物车的思路和源码分析

    PHP实现购物车的思路和源码分析

    2021年10月25日
    36

发表回复

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

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