android直播学习:软编码+硬编码+rtmp推流视音频

来源:互联网 发布:mac文件夹预览图片 编辑:程序博客网 时间:2024/05/29 15:43

最近在自学视音频方面的知识,感谢雷神的博客,愿雷神一路组好
雷神博客连接:http://my.csdn.net/leixiaohua1020
本项目地址(含源码):https://github.com/dengzhi00/Live_Rtmp2
初学者,项目没做具体优化,欢迎大家交流学习(也欢迎大家start)
项目结构这里写图片描述

项目包含三大模块:
livecollector模块:视音频采集模块 LiveVideoGet:视频采集类 LiveAudioGet:音频采集类 LiveVideoEncode:视频编码nv21转yuv420p,视频硬编码,视频90度旋转算法 LiveAudioEncode:音频硬编码类 LiveEncode:视音频采集参数编码控制类 LiveRop:参数控制,数据回调类

livepush模块:视音频编码推流模块,视频编码:x264编码;音频编码:faac编码;推流:rtmp推流

liveffmpeg模块:ffmpeg编码推流模块,ffmpeg正在学习中,此模块将持续更新…

app模块:测试demo


视频采集

anroid视频采集采用Camare类
采集方法详见项目LiveVideoGet类:
源数据获取:
这里写图片描述

采集的码流格式是nv21格式
具体格式是:
Y Y Y Y
Y Y Y Y
Y Y Y Y
Y Y Y Y
V U
V U
V U
V U
转换成yuv420sp格式:
Y Y Y Y
Y Y Y Y
Y Y Y Y
Y Y Y Y
u v
u v
u v
u v
代码:
这里写图片描述


视频编码

详见项目LiveVideoEncode类:
硬编码:
初始化编码器
这里写图片描述

注:

此视频源数据为旋转90度数据,后置摄像头逆时针旋转,前置摄像头顺时针旋转,
故初始化编码器时将编码器宽高交换位置:
MediaFormat format = MediaFormat.createVideoFormat(MediaFormat.MIMETYPE_VIDEO_AVC, height,width);

软编吗:详见livepush模块
cpp下Stream.cpp文件,注释都在

阅读全文
1 0
原创粉丝点击