博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
live555 h264 videostream 数据流和时间戳的分析
阅读量:4160 次
发布时间:2019-05-26

本文共 1381 字,大约阅读时间需要 4 分钟。

rtsp客户端发送播放请求后,rtsp服务器调用流程如下

h264 video rtsp

1.ServerMediaSubsession::startStream -> OnDemandServerMediaSubsession::startStream

2.startStream -> StreamState::startPlaying

3.MediaSink::startPlaying

4.MediaSink::continuePlaying->MultiFramedRTPSink::continuePlaying

5.MultiFramedRTPSink::buildAndSendPacket

6.MultiFramedRTPSink::packFrame()  fSource->getNextFrame fSource type is H264FUAFragmenter

7.FramedSource::getNextFrame

8.FramedSource::doGetNextFrame ->H264FUAFragmenter::doGetNextFrame  ->  fInputSource->getNextFrame fInputSource type is H264VideoStreamFramer

9.H264VideoStreamFramer::getNextFrame -> MPEGVideoStreamFramer::doGetNextFrame

10.MPEGVideoStreamFramer::continueReadProcessing -> fParser->parse()   fParser type is H264VideoStreamParser

11.H264VideoStreamParser::parse()   -> ByteStreamFileSource::doGetNextFrame -> ByteStreamFileSource::doReadFromFile

 

 

时间戳生成流程

1.MultiFramedRTPSink::buildAndSendPacket 中组建rtp包头时,获取时间戳的位置fTimestampPosition,然后等待获取数据与时间戳后写入

2.MultiFramedRTPSink::afterGettingFrame1 ->H264VideoRTPSink::doSpecialFrameHandling->MultiFramedRTPSink::setTimestamp 将时间戳写入到rtp包中

 

3.H264VideoStreamParser::parse 中调用H264VideoStreamFramer::setPresentationTime { fPresentationTime = fNextPresentationTime; } 此fPresentationTime最终将传到步骤2中

4.fNextPresentationTime 初始化由构造函数获取当前时间戳 ,后续在H264VideoStreamParser::parse 当thisNALUnitEndsAccessUnit=TRUE后,根据帧率计算帧duration,然后计算下一帧的时间戳

 

转载地址:http://rldxi.baihongyu.com/

你可能感兴趣的文章
java8采用stream对集合的常用操作
查看>>
EasySwift/YXJOnePixelLine 极其方便的画出真正的一个像素的线
查看>>
Ubuntu Linux系统下apt-get命令详解
查看>>
ubuntu 16.04 下重置 MySQL 5.7 的密码(忘记密码)
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
HTTPS那些事 用java实现HTTPS工作原理
查看>>
oracle函数trunc的使用
查看>>
MySQL 存储过程或者函数中传参数实现where id in(1,2,3,...)IN条件拼接
查看>>
java反编译
查看>>
Class.forName( )你搞懂了吗?——转
查看>>
jarFile
查看>>
EJB与JAVA BEAN_J2EE的异步消息机制
查看>>
数学等于号是=那三个横杠是什么符
查看>>
HTTP协议详解
查看>>
java多线程中的join方法详解
查看>>
ECLIPSE远程调试出现如下问题 ECLIPSE中调试代码提示找不到源
查看>>
java abstract修饰符
查看>>
数组分为两部分,使得其和相差最小
查看>>
有趣的排序——百度2017春招
查看>>
二叉树的最近公共祖先LCA
查看>>