libstreaming源码分析二之MediaRecorder编码

上一篇介绍了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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值