源码地址:https://github.com/AnyRTC/DyncRTMPLiveClient-Android
Apk 大小4.5M
代码结构:
APP
├MainActivity
├PushActivity
└PullActivity
liblivertmp_v1.0.4.aar
├api
├DynLivePublisher
└DynLivePlayer
├beautify
├camera 摄像头相关处理
├encoder
├gles OpenGL ES
└video 视频编码
├filter
├advanced美颜、美白处理
├base
├gpuimage OpenGL ES图片处理
└其他 基于GUIImageFilter.java的其他过滤器
└helper 过滤器工厂和总览
├utils 工具类
└widget 基于GLSurfaceView的一些界面
├core 包括推流AvStreamer .java、播放AvPlayer.java、网络传输AvHttpClient.java及其他
├event 主界面事件接口
└其他
├libfaac.so
├libfaad2.so
├liblivertmp-jni.so
└libopenh264.so
可使用api功能。
推流代码实现细节:
2、 初始化的内容是AvStreamer的准备,
5、 VideoEncoderCore编码器的配置
6、 对编码器编码出的信息处理,由OnH264Data接口实现后续的操作。
7、 补充说明预览效果的呈现:由摄像头获取的图像由mediacodec处理,获取surface,再由opengl处理生成继承EglSurfaceBase的WindowSurface。
播放没什么好说,实例化了一个渲染器交给jni层处理了。
Apk 大小4.5M
代码结构:
APP
├MainActivity
├PushActivity
└PullActivity
liblivertmp_v1.0.4.aar
├api
├DynLivePublisher
└DynLivePlayer
├beautify
├camera 摄像头相关处理
├encoder
├gles OpenGL ES
└video 视频编码
├filter
├advanced美颜、美白处理
├base
├gpuimage OpenGL ES图片处理
└其他 基于GUIImageFilter.java的其他过滤器
└helper 过滤器工厂和总览
├utils 工具类
└widget 基于GLSurfaceView的一些界面
├core 包括推流AvStreamer .java、播放AvPlayer.java、网络传输AvHttpClient.java及其他
├event 主界面事件接口
└其他
├libfaac.so
├libfaad2.so
├liblivertmp-jni.so
└libopenh264.so
界面
可使用api功能。
推流代码实现细节:
1、 初始化:初始化DyncLivePublisher
2、 初始化的内容是AvStreamer的准备,
LooperExecutor的实现如下
3、 以不支持美颜摄像头设备为例,初始化了BeautifyEncoder
4、 关于BeautifyCameView显示的设置,对应于videoMode的数值
5、 VideoEncoderCore编码器的配置
6、 对编码器编码出的信息处理,由OnH264Data接口实现后续的操作。
7、 补充说明预览效果的呈现:由摄像头获取的图像由mediacodec处理,获取surface,再由opengl处理生成继承EglSurfaceBase的WindowSurface。
播放没什么好说,实例化了一个渲染器交给jni层处理了。