JNI——RTMP推流
2018-10-10 本文已影响0人
追寻米K
视频:
android相机的预览画面格式是NV21,直播播放的格式是YUV,所以首先要把相机预览的画面转成YUV然后推流。
大致步骤:
1.相机预览视频传C层 (采集)
2.NV21转YUV
3.使用X264压缩YUV(包括设置X264参数,视频编码)(编码和封包)
4.RTMP把压缩数据推送服务器 (发送)
首先相机预览
回调方法里面把预览的数据传递到C,进行处理,有横屏和竖屏,摄像头在左边和在右边等不同情况(raw就是bytes预览的数据)
转YUV,然后X264压缩视频数据
转YUV视频编码 并存入缓存队列
NALU 参考https://blog.csdn.net/qq_29350001/article/details/78226286
音频:
1.java API AudioRecord录制的音频数据传递到C
2.音频原始数据PCM压缩成AAC
3.音频编码
4,RTMP推送音频数据
开启录制音频
pcm数据传递到C
压缩音频并音频编码
相关参数解释:
H264:
Profile : baseline main high
Level : 限制了码率上限
Resolution : 分辨率
Bitrate : 码率,与数据大小成正比
Frame Rate : 帧率,每秒多少帧图像,影响流畅度
Frame Interval : 关键帧间隔
AAC:
Profile : lc main le
Sample Rate : 采样率
Channel : 声道数
Bitrate : 码率,与数据大小成正比
视频数据包编码格式
音频数据包
RTMP 推送流程: