实现app直播商城源码,先从简单的直播系统开始

软硬件环境

  • ubuntu 16.04
  • Android Studio 2.1.3
  • OTT BOx with android 5.1.1
  • nginx 1.11.3
  • nginx-rtmp-module
  • vitamio

前言

当下,直播已经成为网络热词,它不单单是指传统广播电视的实时播放,更是更为广泛的音视频实时分享的延伸。早先,app直播商城源码数据源只可能来自于电视台及节目制作中心,但是放眼现在,基于计算机技术的高速发展,任何人都可以独自完成内容的制作,再利用身边的终端设备完成分享,你不仅仅是受众,同样可以成为主角。可以说,时下流行的"网红"文化,app直播商城源码立下了汗马功劳。本文旨在搭建一个最简单的app直播商城源码,包括服务器端及 android 客户端,采用了 nginxnginx-rtmpvitamioffmpeg

rtmp协议

RTMPReal Time Messaging Protocol 的缩写,是被设计用来进行实时数据通信的网络协议。它是一个协议族,包括 rtmpertmptrtmps 等,是app直播商城源码常用的网络协议

服务端配置

nginx添加rtmp支持

下载版本1.11.3,然后下载 nginxrtmp 补丁,下载的文件都放在目录 /home/djstava (请根据实际情况自行修改)下,然后开始源码编译 nginx

tar xvf nginx-1.11.3.tar.gz
cd nginx-1.11.3
mkdir build
./configure --prefix=/home/djstava/nginx-1.11.3/build --add-module=/home/djstava/nginx-rtmp-module
make -f objs/Makefile
make install

如果出现 fallthrough 的错误

nginx-rtmp

需要修改 objs/Makefile,在 CFLAGS 中添加

-Wno-implicit-fallthrough

修改配置文件nginx.conf

编辑 /home/djstava/nginx-1.11.3/build/conf/nginx.conf,在文件末尾添加如下内容

rtmp {
    server {
        listen 1935;
        ping 30s;
        notify_method get;

        application myapp {
            live on;

            # sample play/publish handlers
            #on_play http://localhost:8080/on_play;
            #on_publish http://localhost:8080/on_publish;

            # sample recorder
            #recorder rec1 {
            #    record all;
            #    record_interval 30s;
            #    record_path /tmp;
            #    record_unique on;
            #}

            # sample HLS
            #hls on;
            #hls_path /tmp/hls;
            #hls_sync 100ms;
        }

        # Video on demand
        #application vod {
        #    play /var/Videos;
        #}

        # Video on demand over HTTP
        #application vod_http {
        #    play http://localhost:8080/vod/;
        #}
    }
}

启动nginx服务

执行命令

/home/djstava/nginx-1.11.3/build/sbin/nginx

ffmpeg推送rtmp

找一个本地的视频文件,使用 ffmpeg 进行推送,命令为

ffmpeg -re -i 大话西游之月光宝盒.BD1280超清国粤双语中英双字.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost/myapp/mystream

如果app直播商城源码的服务器不在本地的话,将 localhost 替换成对应的 IP 地址

ffplay播放测试

服务启动好后,app直播商城源码就可以进行测试了。如果没有安装 ffplay 的话,也可以用 vlc

ffplay rtmp://localhost/myapp/mystream

后记

前面的步骤都是在本机中进行的。可是在app直播商城源码的实际应用中,情况会复杂的多,nginx 可能是一台服务器,ffmpeg 推流的可能就是另一台服务器,这样的话,可将 localhost 换成对应的 IP 地址。如果数据源来自摄像头,同样可以通过 ffmpeg 进行推送,命令如下

ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://10.10.10.84/myapp/mystream1

rtmp_02

Android客户端播放

之前已经写过一个基于 vitamio 的视频播放器,我们就在它的基础上进行修改,找到 MainActivity.java

private String[] files = {"rtmp demo","apple demo"};

listviewitem 被点击后发送包含播放地址的 intent

Intent intent = new Intent(MainActivity.this, VitamioVideoViewActivity.class);
intent.putExtra("movieUrl", "rtmp://10.10.10.84/myapp/mystream");
startActivity(intent);

如此,一个app直播商城源码简单的直播系统就实现了。

声明:本文由云豹科技转发自迷途小书童的Note博客,如有侵权请联系作者删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值