Android Live555
2012-07-09 09:49
197 查看
如何让Android支持C++异常机制
Android不支持C++异常机制,如果需要用到的话,则需要在编译的时候加入比较完整的C++库.Android支持的C++库可以在Android NDK中找到(解压后找到libsupc++.a放到代码环境中即可):
http://www.crystax.net/en/android/ndk/7
编译时加上参数:
-fexceptions -lstdc++
还需要将libsupc++.a链接上
移植live555到Android的例子
https://github.com/boltonli/ohbee/tree/master/android/streamer/jniRTSP协议
参考: rfc2326, rfc3550, rfc3984RTP Header结构[#0]
?
H.264视频格式
参考: rfc3984, 『H.264中的NAL技术』, 『H.264 NAL层解析』ACC音频格式
参考: ISO_IEC_13818-7.pdflive555架构分析
0 总述
0.1 这里主要以H264+ACC为基础作介绍0.2 live555中的demo说明,RTSP服务端为live555MediaServer,openRTSP为调试用客户端。
0.3 可以在live555中实现一个trace_bin的函数跟踪流媒体数据的处理过程。
?
1 宏观流程
1.1 对每个播放请求建立一个session,并对应音视频建立subsession,subsession则是具体处理流媒体的单位。?
?
BasicTaskScheduler是live555的任务处理器,他的主要工作都是在SingleStep()中完成的.
在SingleStep()中主要完成下面三种工作:
?
以ACC播放为例:
?
fDelayQueue是一个需要处理的任务的队列,每次SingleStep()只会执行第一个任务head(),这里的任务对应DelayQueue的元素,DelayQueue的各个元素都会有自己的DelayTime,用来表示延时多久后执行。而队列中的元素便是按照DelayTime有小到大排列的,元素中fDeltaTimeRemaining记录的是该元素相对于它之前元素的延时。参照函数DelayQueue::addEntry()便可看出是如何入队列的。
例如([]中的数字便是相对延时(fDeltaTimeRemaining)):
?
执行任务:
?
2 类关系
* live555的流程分析主要就放在这个章节中,如果有需要参考函数关系或者对象关系的请参考3, 4两个章节。2.1 涉及到的主要类的关系图:
?
?
2.2 如何实现带有filter流程:
这便用到了FramedFilter中的fInputSource成员,以H264为例,
?
?
?
在MultiFramedRTPSink::buildAndSendPacket()中添加RTP头[#0]。
3 函数关系
3.1 H264函数调用关系?
4 对象关系
4.1 H264对象关系图?
?
5 RTSP
5.1 RTSP命令和处理函数的对应关系:?
?
相关文章推荐
- Live555——Android服务端基本流程
- Android之live555构建RTSP Client
- live555 在 android下通过 ndk 编译
- Android之live555构建RTSP Server
- vlc-android编译问题之live555
- [置顶] Android架构组件ViewModel和LiveData介绍及使用
- vs2010编译调试live555之1--新建解决方案,编译live555
- live555直播(准备2)-重写doGetNextFrame()和doEventLoop()
- live555改多线程
- live555学习笔记6-建立RTP会话
- live555--testRTSPClient学习心得
- vs2008编译live555
- live555—VS2010 下live555编译、使用及测试
- FAQ LIVE555
- live555源码编译(win7+vs2010)
- live555 vlc sourcecode
- live555代码解读之二:DESCRIBE请求消息处理过程
- Android HTTP Camera Live Preview Tutorial
- 【Android多媒体】NuPlayer for HTTP Live Streaming【3】
- Live555 实战之框架简单介绍