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

最近在自学视音频方面的知识,感谢雷神的博客,愿雷神一路组好
雷神博客连接: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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值