android手机推送RTMP直播流到nginx服务器纯代码实现

Yasea是一个100%纯Java写的,完全开源的安卓直播推流客户端。它使用MediaCodec系统接口对H.264和AAC进行硬编码,封装FLV格式,推送至RTMP服务器。延迟达到毫秒级别。

特性列表:

  • Android Min API 16 (Android 4.1 Jelly Bean)

  • H.264/AAC硬编码

  • RTMP推流,事件状态回调

  • 手机横竖屏动态切换

  • 前后摄像头热切换

  • 推流过程随时录制MP4,支持暂停和恢复

下面是yasea-master的工程源码截图:

编译之后,生成apk,在android机器上即可安装运行。

在nginx服务器上安装rtmp直播模块:

1、下载nginx-rtmp-module模块

git clone https://github.com/arut/nginx-rtmp-module.git

如果git没有识别,通过下面命令安装git。

yum install -y git

  2、下载nginx模块

假设你之前已经安装好了nginx,且安装目录是/usr/local/nginx。现在在别的目录(这里是/sg)下载一个同样版本的nginx,然后解压。

[root@localhost]# wget http://nginx.org/download/nginx-1.16.1.tar.gz

[root@localhost]# tar -zxvf nginx-1.16.1.tar.gz

 

  3、 进入到解压后的nginx的目录

./configure --prefix=/usr/local/nginx --add-module=/sg/nginx-rtmp-module --with-http_ssl_module

--prefix是nginx的安装目录(以前的),因为我们编译新的nginx最后要拷贝到这个目录。--add-module指定rtmp模块的路径

 

4、执行make命令

make

make 编译之后的nginx二进制文件就在objs目录下,将它覆盖你原来的nginx执行文件。

cp /sg/nginx-1.16.1/objs/nginx  /usr/local/nginx/

5、配置

events {
    worker_connections  1024;
}
rtmp {
    server {
        listen 1935;
        chunk_size 4000;
        application hls {
            live on;
            #record all;
            #record_path /home/live_record;
            #record_max_size 200M;
            hls on;
            hls_path /root/lshTool/nginx-1.16.0/live/hls;
            hls_fragment 2s;
            #publish_notify on; #表示开启鉴权服务
            #on_publish http://127.0.0.1:80/publish; #鉴权地址
        }
    }
}

6、再次启动nginx即可接受手机端的rtmp推流。

7、报错解决

执行添加rtmp模块的时候如果报 ./configure: error: SSL modules require the OpenSSL library.
执行以下命令然后继续添加rtmp模块即可

[root@localhost]# yum -y install openssl openssl-devel

./configure: error: C compiler cc is not found
执行以下命令然后继续添加rtmp模块即可

[root@localhost]# yum install  gcc

[root@localhost]# gcc -v

 

运行效果:

在桌面端利用rtmp播放器播放直播流:

需要源码(网上也可也搜素下载)和指导的朋友可以加我QQ(395702361)。

 

一: 使用javacv来实现,最终也是用过ffmpeg来进行编码和推流,javacv实现到可以直接接收摄像头的帧数据 需要自己实现代码只是打开摄像头,写一个SurfaceView进行预览,然后实现PreviewCallback将摄像头每一帧的数据交给javacv即可 javacv地址:https://github.com/bytedeco/javacv demo地址:https://github.com/beautifulSoup/RtmpRecoder/tree/master 二: 使用Android自带的编码工具,可实现硬编码,这里有一个国内大神开源的封装很完善的的库yasea,第一种方法需要实现Camera采集部分也一起封装好了,进行一些简单配置就可以实现编码推流,并且yasea目前已经直接支持摄像头的热切换,和各种滤镜效果 yasea地址(内置demo):https://github.com/begeekmyfriend/yasea 服务器 流媒体服务器我用的是srs,项目地址:https://github.com/ossrs/srs 关于srs的编译、配置、部署、在官方wiki中已经写的很详细了,并且srs同样是国内开发人员开源的项目,有全中文的文档,看起来很方便 这里有最基本的简单编译部署过程 Android直播实现(二)srs流媒体服务器部署 播放器 android端的播放使用vitamio,还是国内的开源播放器,是不是感觉国内的前辈们越来越屌了^~^! vitamio支持几乎所有常见的的视频格式和流媒体协议 vitamio地址(内置demo):https://github.com/yixia/VitamioBundle 这里使用的是yaesa库,先介绍一下直播实现的流程:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wave12_mp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值