libstreaming源码分析二之MediaRecorder编码
来源:互联网 发布:北京网络营销软件价格 编辑:程序博客网 时间:2024/06/05 03:19
上一篇介绍了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源码分析之二------索引过程源码概要分析
- 对数据分布进行可视化的方法
- ASP之数据库连接
- webAPI 网页测试工具
- structs分页组件
- CCPlatformConfig(设置运行平台 iOS android win32等。。。)
- libstreaming源码分析二之MediaRecorder编码
- 2014苹果全球开发者大会:新系统成主角 无硬件发布
- 15周项目三
- 如何花更少的时间学习更多的知识
- 《暗时间》读书笔记与读后感
- Ubuntu 解压命令详解
- Pig、Hive、MapReduce 解决分组 Top K 问题
- Lichee (五) sysconfig1.fex 配置系统
- 如何在Android程序Force Closed后自动重启