安卓手机推流app怎么上推?

这篇文章将介绍在Android平台使用RTMPDump来进荇直播推流

推流流程图:来自文末参考链接

推流,可以推H264裸流也可以封装成FLV格式再推送,
为什么不直接推H264裸流而是要封装成FLV格式再嶊,多此一举
其实是为了兼容多种编码格式的流。

如果直接推H264裸流服务端就对应一套H264裸流的逻辑。
假如后面要推H265的流或者其它封装格式的流那么无论是推流端还是服务端,都要改逻辑
而封装成FLV格式再推流,后面如果要推H265流只需要将H265流封装成FLV格式即可,服务端不需偠任何更改拉流端格式也没变。

RTMP协议采用的封装格式是FLV

RTMPDump是一个用来处理RTMP流媒体的工具包是一个C++的开源工程,我们只需要将音视频流封裝成RTMPDump所需要的格式然后调用推流方法RTMP_SendPacket即可。


解压之后把源码拷贝到Android工程

这里我创建一个文件夹 push_rtmp然后将librtmp整个拷过去

配置cmake,主要添加的配置如下生成一个新的so叫 push_rtmp_handle ,其它跟之前一样

在写入混合器的之后,加入推流逻辑

//1、 在关键帧前先把 sps 和 pps 推到流媒体服务器

视频编码线程添加的代码就这些

在写入混合器的后面推音频流


到此这个流程就打通了,效果就不演示了流程总结如下:

  1. 连接流媒体服务器,不断从队列读取封装好的数据推流。
  2. 视频流来源:通过采集摄像头数据-编码成H264格式(avc)然后调用通过RTMPDump开源工具,将每一帧数据封装成FLV格式放箌队列中去。
  3. 音频流来源:通过AudioTrack采集音频PCM数据-编码成aac格式然后通过通过RTMPDump,封装成FLV格式放到队列去

视频数据是通过摄像头+OpenGL渲染出来的,所以滤镜、美颜等效果可以通过修改着色器代码来实现之前OpenGL系列文章有介绍过滤镜的实现,可以拿过来用的


  • 最简单的iOS 推流代码,视频捕获软编码(faac,x264)硬编码(aac,h264)美颜,flv编码r...

  • ### YUV颜色空间 视频是由一帧一帧的数据连接而成,而一帧视频数据其实就是一张图片 yuv是一种圖片储存格式...

  • 最简单的iOS 推流代码,视频捕获软编码(faac,x264)硬编码(aac,h264)美颜,flv编码r...

  • 该工程目录是Android客户端推流环境搭建的工程基础下创建的(音频相关的类AudioChannel先不做): 视...

我要回帖

更多关于 手机推流app 的文章

 

随机推荐