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 推送流程:

demo地址:https://github.com/jokeK/FFmpegPlayer

上一篇下一篇

猜你喜欢

热点阅读