libstreaming源码分析二之MediaRecorder编码
来源:互联网 发布:东华大学网络教育平台 编辑:程序博客网 时间:2024/06/05 04:39
上一篇介绍了libstreaming的RTSP连接,连接成功后,即可将编码后的视频流打包发送。本文主要研究libstreaming的MediaRecorder编码。
一、RTSP连接成功后,开始编码
在startStream()方法中,主要实现了两个功能:rtsp连接;连接成功后开始调用MeidaStream.start(),开始编码:
Session.java:syncStart(),开启videostream
MediaStream.java:start()
二、至此,我们看到根据MediaStream.mMode,可选择两种编码方法:MediaRecorder和MediaCodec。两种方法都是硬编码,MediaCodec是新API,需要Android API在18以上;MediaRecorder要与LocalSocket结合使用。
MeidaStream.java中定义了abstract 方法 encodeWithMediaRecorder(),在VideoStream.java中实现了该方法。
可以看到,mMediaRecorder.start()方法执行后,mReciever.getInputStream()方法输出的流就是已经编码的流。
而 mMediaRecorder.setVideoEncoder(mVideoEncoder)中,mVideEncoder在VideoStream.java的子类H264Stream.java和H263Stream.java中被初始化,由此设置H264编码和H263编码。
三、LocalSocet设置
MeidaStream.java中,设置了LocalSocket
注意:从github下载的libstreaming,在有的手机上可能会出现“Couldn't skip mp4 header”,可能是由于LocalSocket设置的连接超时引起的。
解决方法:在MediaStream.java中,找到方法 createSockets(),注释掉 mReceiver.setSoTimeout(3000);
四、将mReceiver.getInputStream() 流传入 mPacketizer,开始RTP打包。
0 0
- libstreaming源码分析二之MediaRecorder编码
- libstreaming源码分析二之MediaRecorder编码
- libstreaming 源码分析一之RTSP连接
- libstreaming 源码分析一之RTSP连接
- libstreaming源码分析三之H264 RTP打包
- libstreaming源码分析三之H264 RTP打包
- [原]libstreaming 源码分析一之RTSP连接
- Memcached源码分析之二
- AsyncTask源码分析之二
- LoaderManager源码分析之二
- AndFix 源码分析之二
- ContentProvider 源码分析---之二
- LDD3源码分析之llseek分析(二)
- MapReduce源码分析之MapTask分析(二)
- UniversalImageLoader源码分析之二、示例分析
- MapReduce源码分析之MapTask分析(二)
- 【OpenStack源码分析之二】RabbitMQ分析
- Elasticsearch源码分析之二------索引过程源码概要分析
- iphone5、xcode4.5
- redis 下key的过期时间详解:expire
- oracle 游标详解
- Q编程6:Qt日志处理方法(qInstallMsgHandler函数)简单实用
- mysql数据库恢复(*frm)文件
- libstreaming源码分析二之MediaRecorder编码
- 苹果公司Swift语言将掀起革命
- 初学php html javascript后小总结
- java连接BerkeleyDB数据库使用实例
- libstreaming源码分析三之H264 RTP打包
- 深入源码看JAVA集合的数据结构
- Android开源项目CircleImageView分析
- C#开发笔记(数据库操作)
- JS对象类型的确定