<三:使用,推流端>live555源码分析——RTSP服务端发送数据流程

一直有个疑惑,发送rtp数据的时间间隔在哪里控制的,onDemandServer 从文件中读取h264,aac等,也没有看到sleep,wait等等。但是播放依然是匀速的。【live555使用单线程任务驱动的方式,scheduleDelayedTask(int64_t microseconds,...) 这个就可以添加一个延迟指定时间执行的任务】
拿aac ADTSAudioFileSource.cpp来分析,这里面的 doGetNextFrame()中有一个操作,  fDurationInMicroseconds = fuSecsPerFrame;
一张流程图解释:基于ontestDemandServer 播放test.aac来分析(分析播放h264流程的话,大体原理是一样的,但是从FramedSource中取数据出来部分,经过了好些个FrameFilter, 其目的只是分析h264的pps,sps,和分解NAL,最终给出一帧一帧的NAL。所以整个还是相当于一个FramedSource的作用。 而aac-ADTS文件的读取,就好分析得多了。)
以下图:粉色表示开始,紫色表示整个流的play结束调用。橙色部分是RTPSink, 绿色部分表示FramedSource.两个模块之间的蓝色箭头,就构成循环读取帧并打包发送的循环体。速度间隔控制,在于MultFramedRTPSink类里面的sendPacketIfNecessary(),发完当前帧,添加一个延时uSecondsToGo的任务,来驱动发送下一帧。

live555rtp循环发送

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值