live555源码分析(七)播放过程

live555源码分析----H264的数据处理 现在来分析live555中关于H264的处理部分,主要包括从文件中读取数据进行并进行frame(NALU)的分割,然后对frame进行分片,这些工作都是在frame交给RTP sink之前完成的。接着上篇分析文章(RTP的打包与发送)中提到的MultiFramedRTP::packFrame函数进行分析。 void MultiFramedRTPSink::packFrame() { if ( 阅读详情

live555源码分析系列

live555源码分析(一)live555初体验

live555源码分析(二)基本组件上

live555源码分析(三)基本组件下

live555源码分析(四)RTSPServer分析

live555源码分析(五)DESCRIBE请求的处理

live555源码分析(六)SETUP和PLAY请求的处理

live555源码分析(七)播放过程

live555源码分析(八)多播

live555源码分析(七)播放过程

本文衔接上文,分析播放过程,涉及音视频数据如何获取、如何处理以及如何发送

上一篇文章我们分析到StreamState::startPlaying函数,本文从这里开始分析,其定义如下

void StreamState
::startPlaying(Destinations* dests, unsigned clientSessionId,
	       TaskFunc* rtcpRRHandler, void* rtcpRRHandlerClientData,
	       ServerRequestAlternativeByteHandler* serverRequestAlternativeByteHandler,
	       void* serverRequestAlternativeByteHandlerClientData) {
    
    /* 将目的添加到消费者中 */
    if (dests->isTCP) { //TCP
        fRTPSink->addStreamSocket(dests->tcpSocketNum, dests->rtpChannelId);
        fRTCPInstance->addStreamSocket(dests->tcpSocketNum, dests->rtcpChannelId);
    } else { //UDP
        fRTPgs->addDestination(dests->addr, dests->rtpPort, clientSessionId);
        fRTCPgs->addDestination(dests->addr, dests->rtcpPort, clientSessionId);
    }
    
    /* 开始播放 */
    fRTPSink->startPlaying(*fMediaSource, afterPlayingStreamState, this);
}

从上面可以看到,会将目的添加到RTPSink中,然后调用RTPSink开始播放,并指定好它的源为fMediaSource

在我们live555源码分析(四)RTSPServer分析中实现的这个例子中

RTPSink是这样产生的


        
live555源码分析(一)live555初体验 live555源码分析系列 live555源码分析(一)live555初体验 live555源码分析(二)基础组件 live555源码分析(三)RTSPServer分析 live555源码分析(四)DESCRIBE请求的处理 live555源码分析(五)SETUP请求的处理 live555源码分析(六)PLAY请求的处理 live555源码分析播放过程 live555源码分析(八)多播 li... 阅读详情

相关推荐

live555源码分析(二)基本组件上

live555源码分析系列 live555源码分析(一)live555初体验 live555源码分析(二)基本组件上 live555源码分析(三)基本组件下 live555源码分析(四)RTSPServer分析 live555源码分析(五)DESCRIBE请求的处理 live555源码分析(六)SETUP请求的处理 live555源码分析)PLAY请求的处理 live555源码分析(八)播放过...

JT同学的博客 4247

live555 rtsp服务器实战之doGetNextFrame

注意:该篇文章可能有些绕,最好跟着文章追踪下源码,不了解源码可能就是天书;

qq_39466755的博客 1250

live555 源码分析(一:简介)

Live555的简介,先了解live555基本信息,主要是翻译官网上的说明,看一个程序,还是先看注释,看说明。

酱油师兄的博客 4559

live555搭建实时播放rtsp服务器

createNewStreamSource函数是需要我们实现的函数,函数创建了H264FramedLiveSource类对象,这个类对象就是我们实现doGetNextFrame函数的类;当然live555源码的实现技巧,运行流程也是很值得借鉴的;live555可以说是rtsp的专项库,既可以搭建rtsp服务器,也可以搭建rtsp客户端;FramedSource类中只有一个doGetNextFrame纯虚函数,用于获取媒体流,其他不用实现;我是以帧的方式获取的视频流,在实际的开发中,不一定非要一次取一帧;

qq_39466755的博客 4031

live555做本地视频采集转发,附源码

在分别做了基于live555与Darwin两种开源服务器的转发服务器后,不得不说Darwin确实在架构以及性能方面较live555略胜一筹,不过没关系,以live555的更新速度,作者的负责,相信在客户端开发以及ipC等方面会给大家带来不少帮助,不罗嗦,今天要给大家带来的是基于live555的本地视频实时采集与转发的介绍(有代码噢~).。 在对live55...

weixin_30500663的博客 373

live555 source

Source和Sink:可以把source理解为发送端的流,sink理解为接受端。MediaSink是各种类型的Sink的基类,MediaSource是各种类型Source的基类,各种类型的流媒体格式和编码的支持即是通过对这两个类的派生实现的。Source和Sink通过RTP子会话(MediaSubSession)联系在一起。      FramedSource 派生自MediaSou

zhangjikuan的专栏 2057

live555源码分析(八)多播

live555源码分析系列 live555源码分析(一)live555初体验 live555源码分析(二)基本组件上 live555源码分析(三)基本组件下 live555源码分析(四)RTSPServer分析 live555源码分析(五)DESCRIBE请求的处理 live555源码分析(六)SETUP和PLAY请求的处理 live555源码分析播放过程 live555源码分析(八)多播 ...

JT同学的博客 2771

live555源码分析(四)RTSPServer分析

live555源码分析系列 live555源码分析(一)live555初体验 live555源码分析(二)基本组件上 live555源码分析(三)基本组件下 live555源码分析(四)RTSPServer分析 live555源码分析(五)DESCRIBE请求的处理 live555源码分析(六)SETUP请求的处理 live555源码分析)PLAY请求的处理 live555源码分析(八)播放过...

JT同学的博客 3257

1 live555源码分析(一)——live555编译与运行

一、live555概述 live555是一个基于C++开发的开源的流媒体服务解决方案,它实现了标准的流媒体传输协议(如RTP/RTCP、RTSP、SIP)。官网地址http://www.live555.com/。 二、live555源码下载 live555可以直接从官网下载,一直在维护更新,可以直接下载最新版http://www.live555.com/liveMedia/public/live555-latest.tar.gz。 三、live555编译 live555是跨平台的,本文以Linux平台进行分

qq_36383272的博客 3991

live555源码分析(六)SETUP和PLAY请求的处理

live555源码分析系列 live555源码分析(一)live555初体验 live555源码分析(二)基本组件上 live555源码分析(三)基本组件下 live555源码分析(四)RTSPServer分析 live555源码分析(五)DESCRIBE请求的处理 live555源码分析(六)SETUP和PLAY请求的处理 live555源码分析播放过程 live555源码分析(八)多播 ...

JT同学的博客 2271

live555源码分析----mpg文件的处理

live555支持的文件格式多为单流的文件,仅支持*.mpg、*.mkv、*.webm几种音视频混合类型的文件。其实我的目的是扩展其支持的格式,如avi等, 所以来分析一下mpg文件的处理。     mpg文件处理涉及的类相当多,类间的关系比较复杂,对于RTP打包的过程(在RTPSink中完成)所以有的媒体类型比较相似(细节上有差异,这些都是在特定媒体相关的***RTPSink中完成的)

gavin的专栏 6182

live555源码分析(三)基本组件下

live555源码分析系列 live555源码分析(一)live555初体验 live555源码分析(二)基本组件上 live555源码分析(三)基本组件下 live555源码分析(四)RTSPServer分析 live555源码分析(五)DESCRIBE请求的处理 live555源码分析(六)SETUP请求的处理 live555源码分析)PLAY请求的处理 live555源码分析(八)播放过...

JT同学的博客 2808

Live555:MultiFramedRTPSink::afterGettingFrame1(): The input frame data was too large for our buffer

live555直播h264异常优化: MultiFramedRTPSink::afterGettingFrame1(): The input frame data was too large for our buffer size (61140). 21339 bytes of trailing data was dropped! Correct this by increasing "Ou...

小小的熊的博客 3766

live555 TestRtspClient -vs2008编译源码;

// TestRtsp.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" //#include "liveMedia.hh" //#include "BasicUsageEnvironment.hh" /********** This library is free software; you can redistribute it and/or

smilestone322的专栏 2500

live555中关于时间戳间隔与fDurationInMicroseconds的计算方法

流媒体开发相对比较久的同学,可能经常一抓包或者一看数据就会对fps25、Timestamp间隔40、RTP时间戳增长360非常熟悉,但是这个40、360是怎么得来的还不是非常清楚,尤其是这个时间戳的间隔,并不知道是怎么计算来的,今天我们就分别对音视频时间戳中的时间间隔来做一个了解: 在live555fDurationInMicroseconds表示单个视频或者音频帧所占用的时间间隔,也就是秒,也...

EasyDarwin开源社区技术博客 1566

live555fDurationInMicroseconds的计算

live555fDurationInMicroseconds表示单个视频或者音频帧所占用的时间间隔,也表示在fDurationInMicroseconds微秒时间后再次向Source进行getNextFrame操作, 以视频为例,可以这样计算: 视频帧率fFrameRate=25,那么我们每一次在doGetNextFrame中赋值fDurationInMicroseconds = 100

Babosa的专栏 5231

live555学习2

接着《live555学习1》来写,由于1的后面有的地方已经出现乱码就放在这里继续写了。 Boolean MultiFramedRTPSink::continuePlaying() { // Send the first packet. // (This will also schedule any future sends.) buildAndSendPacket(True);

huguohu2006的专栏 1795

修改live555支持从缓冲区读取h264帧 (纠正下是 h264 slice)

==2023.1.1 追加,归纳总结一下,作为复习的提要: ​​​​​​​ 实现新的MediaSubsession,覆盖实现其中的虚函数createNewStreamSource() ,用来创建source . 覆盖 实现 其中的虚函数createNewRTPSink() 用来创建sink 实现自己的 FrameSource, 实现其中的虚函数 doGetNextFrame(),在这个里面把自己的h264数据拷贝到 fTo 缓冲区,并且赋值成员变量fFrameSize 、时间戳、最大帧数据大小等等

Canok 5391
上一篇: live555源码分析(六)SETUP和PLAY请求的处理
下一篇: live555源码分析(八)多播
JT同学
博客等级 码龄8年 2276粉丝 105原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值