使用Linux服务器搭建直播服务器,并运用Apicloud平台简易快速的制作全功能直播APP

simpleLive

使用Linux服务器搭建直播服务器,并运用Apicloud平台简易快速的制作全功能直播APP。

代码目录结构介绍

widget文件夹里是源代码,熟悉Apicloud的朋友对这个文件夹都不陌生,这里面包括所用到的aliyunLive模块代码。具体其目录结构和代码结构需使用者自行研究。

app:我作为开发者所关注并开发的部分,我编写的代码都在这里面。注意,这个目录不包含aliyunLive模块。

服务器端

打开相关端口

Rtmp会使用到1935端口

  1. 到阿里云后台设置本实例安全组规则开放1935端口。
  2. 配置防火墙打开1935端口。

安装FFMPEG

  1. 安装依赖包和升级相关工具

yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-devel gettext-devel libtool mhash.x86_64 perl-Digest-SHA1.x86_64

yum -y update gcc

yum -y install gcc+ gcc-c++

  1. 安装相关工具包
  2. git

yum install -y git

  • zlib

yum install -y zlib

  • pcre

yum install -y pcre

  • yadmi

cd /

mkdir tommycd tommy

wget http://sourceforge.net/projects/yamdi/files/yamdi/1.4/yamdi-1.4.tar.gz/download

tar -zxvf downloadcd yamdi-1.4

make && make installcd ..

  • openssl

yum install -y openssl

  1. 安装ffmpeg及其依赖包
  2. Yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz

tar -zxvf yasm-1.2.0.tar.gz

cd yasm-1.2.0

./configuremake && make install

cd ..

  • x264

git clone git://git.videolan.org/x264

cd x264

./configure –enable-sharedmake && make install

cd ..

  • LAME

wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz

tar -zxvf lame-3.99.5.tar.gz

cd lame-3.99.5

./configure –enable-nasmmake && make install

cd ..

  • libogg

wget http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz

tar -zxvf libogg-1.3.0.tar.gz

cd libogg-1.3.0

./configuremake && make install

cd ..

  • libvorbis

安装这个工具时废了很大力气,有报错,后来重复确认安装libogg后才成功。

wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz

tar -zxvf libvorbis-1.3.3.tar.gz

cd libvorbis-1.3.3

./configuremake && make install

cd ..

  • libvpx

git clone http://git.chromium.org/webm/libvpx.git

cd libvpx

./configure  –enable-sharedmake && make install

cd ..

  • faad2

wget http://downloads.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz

tar -zxvf faad2-2.7.tar.gz

cd faad2-2.7

./configuremake && make install

cd ..

  • fdk-acc

新版本的FFMPEG已经取消对faac的支持,改用fdk-acc进行解码,效率会更高。

wget https://nchc.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.5.tar.gz

tar -zxvf fdk-aac-0.1.5.tar.gz

cd fdk-aac-0.1.5

./configuremake && make install

cd ..

  • Xvid

wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz

tar zxvf xvidcore-1.3.2.tar.gz

cd xvidcore/build/generic

./configuremake && make install

cd ..

  • ffmpeg

git clone https://github.com/FFmpeg/FFmpeg.gitcd ffmpeg

./configure  –prefix=/opt/ffmpeg/ –enable-version3 –enable-libvpx –enable-libfdk-aac –enable-libmp3lame –enable-libvorbis –enable-libx264 –enable-libxvid –enable-shared –enable-gpl –enable-postproc –enable-nonfree  –enable-avfilter –enable-pthreadscd ..

  • 修改/etc/ld.so.conf如下:

include ld.so.conf.d/*.conf

/lib

/lib64

/usr/lib

/usr/lib64

/usr/local/lib

/usr/local/lib64

/opt/ffmpeg/lib

然后在/etc目录执行相关命令

cd /etc

ldconfig

  • 测试ffmpeg

我上传了一个test.mp4到/tommy下,使用命令查看ffmpeg运行情况

ffmpeg -re -i /tommy/test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://my-ip:1935/live/steam

在终端看到以下命令则证明推流成功:

然后使用VCL(MAC端的一个播放器)等能播放rtmp流视频的播放器查看真正的结果是否成功:

查看播放结果:

如果上述都能如图显示,则证明FFMPEG安装和配置成功!

为Nginx安装nginx-rtmp-module

  1. 下载nginx-rtmp-module

cd /tommy

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

  1. 动态添加nginx-rtmp-module模块

wget http://nginx.org/download/nginx-1.10.2.tar.gz

tar -zxvf nginx-1.10.2.tar.gz

cd nginx-1.10.2

./configure –prefix=/usr/share/nginx –sbin-path=/usr/sbin/nginx –modules-path=/usr/lib64/nginx/modules –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –http-client-body-temp-path=/var/lib/nginx/tmp/client_body –http-proxy-temp-path=/var/lib/nginx/tmp/proxy –http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi –http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi –http-scgi-temp-path=/var/lib/nginx/tmp/scgi –pid-path=/run/nginx.pid –lock-path=/run/lock/subsys/nginx –user=nginx –group=nginx –with-file-aio –with-ipv6 –with-http_ssl_module –with-http_v2_module –with-http_realip_module –with-http_addition_module –with-http_sub_module –with-http_dav_module –with-http_flv_module –with-http_mp4_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_random_index_module –with-http_secure_link_module –with-http_degradation_module –with-http_slice_module –with-http_stub_status_module –with-mail_ssl_module –with-pcre –with-pcre-jit –with-stream=dynamic –with-stream_ssl_module –with-debug –add-module=/tommy/nginx-rtmp-module

cp /usr/sbin/nginx /usr/sbin/nginx.bak

cp ./objs/nginx /usr/sbin//usr/sbin/nginx -s reload

  1. 配置nginx.conf

vi /etc/nginx/nginx.conf

在server里添加

rtmp {

       server {

               listen 1935;

               application live {

                       live on;

               }

       }

}

重启nginx

/usr/sbin/nginx -s reload

APP端

将主播端和播放端集成到了同一个APP中,演示时请用两部安卓手机安装,一个做主播,一个负责播放。

概述

  1. 关于使用的平台
http://www.apicloud.com/
  1. 关于使用的模块

aliyunLive 封装了阿里云视频直播的 sdk,该模块包括视频流采集和视频流播放两部分。如使用阿里云直播服务器搭配此模块,需要在阿里云官网注册,在控制台创建直播流,并获取播放端相关参数,详情可以参照阿里云直播官网:阿里云视频直播。

注意: 该模块android版 播放器只适用于android 4.4+,推流需要 android 4.5 以上版本支持。iOS版最低版本为8.0。(iOS云编译的时候需要勾选相机和麦克风权限,并在高级设置里选择iOS版本为8.0)。

  1. 技术部分

  HTML5

  CSS3

  JS(Vue)

  1. 工具
  2. 编辑器Atom
  3. 直播模块aliyunLive,模块文档http://docs.apicloud.com/Client-API/Open-SDK/aliyunLive

主播部分

下方的地址最后一个参数steam可以随意更换,不同的地址可以视作不同的房间,并且观看端也配置相同的地址才能观看该房间的直播画面。

无论通过下方更换地址还是帧率等,都需要重新 配置直播流 并推流才能生效。

请依次点击“配置直播流”、“开始推流”进行直播:

播放部分

播放前必须先进行初始化,并点击准备按钮。

不同的地址可以视作不同的房间,只有和主播端相同的地址才能观看该房间的直播画面。

无论通过下方更换地址等,都需要重新 初始化->准备 才能生效。

Linux自建直播服务器一:使用Nginx+rtmp模块搭建流媒体服务器

2018-06-25 分类:服务器建站 阅读(6596) 评论(0)

技术服务于生活。当在日常遇到问题的时候,需要经常去思考如何解决这个问题。

最近网易的逆水寒开测了,非常荣幸拿到一个资格号,可以来体验一下这款国产巅峰级网游,一个会呼吸的江湖。作为一个极度业余的主播(一般只直播给朋友看),自然打开了斗鱼直播助手,准备直播一下。

可是比较无奈的是这款游戏的配置要求太高了,不开直播不卡,但是一开直播马上卡的起飞。一看斗鱼直播助手的cpu占用率飙到了30%。关闭这个软件,马上就好了。

后来想了一个解决方法,用OBS软件直接推流。OBS比较给力,一直占用10%左右的CPU。几乎没有任何卡感。OBS真是一个很强大的推流软件(关于OBS在后续文章会介绍)。后面的流媒体直播服务器,就是因为OBS而起。

闲话少说,下面进入正题吧。

既然有了推流软件,那么我们可以自己搭建一个私人的RTMP流媒体服务器,把屏幕录像转化成视频流推送到流媒体服务器,然后其他用户访问流媒体服务器就能看到直播了。用户不仅可以通过网页访问流媒体服务器,还可以通过播放器(potplayer、VLC)、APP等访问。流程如下图:

直播效果图(纯洁脸):

既然是直播服务器,那么大带宽、大流量是肯定的。如果只是偶尔私人直播,给几个朋友看看,那一般国外的云服务器也可满足要求(后续会更新本地搭建直播服务器,利用宽带直播)。但是要注意的是,你本地电脑到国外服务器如果延迟大的话,意味着丢包率也高。丢包率高了别人看你直播就会比较卡。如果使用国内云服务器,1M带宽….不用想了。所以这里我还是推荐香港的云服务器,到内地还是很稳定的。这篇博客就是以阿里云香港服务器30M带宽,1000G月流量为例。

环境:centos7系统,阿里云香港服务器

一、安装Nginx

流媒体服务器只需要Nginx+Nginx的rtmp模块就行了。首先ssh连接到服务器,通过LNMP一键安装包单独安装Nginx:

yum -y install wget

cd /root

wget -c http://soft.vpser.net/lnmp/lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz

cd lnmp1.5./install.sh nginx

按任意键开始安装。等待安装完成后进入下一步。如果安装完成提示失败那么重新安装一次就行了

二、安装rtmp模块

  1. 下载nginx-rtmp-module:

yum -y install git

cd /root/lnmp1.5

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

完成后在lnmp1.5目录下可以看到这个文件夹了:

  1. 使用如下命令查看编译安装参数:

nginx -V

可以看到:

在configure arguments后面就是安装参数了。把这个参数复制下来

  1. 重新编译安装nginx,在参数后面添加模块:

cd /root/lnmp1.5/src

tar zxvf nginx-1.14.0.tar.gz

cd nginx-1.14.0./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_v2_module –with-http_gzip_static_module –with-http_sub_module –with-stream –with-stream_ssl_module –with-openssl=/root/lnmp1.5/src/openssl-1.0.2o –add-module=../nginx-rtmp-module

make && make install

装完之后nginx就支持rtmp流媒体了。

三、配置推流地址以及播放页面

  1. 配置推流地址:

vim /usr/local/nginx/nginx.conf

如图,在events和http之间加入如图内容:

rtmp {

    server{

        listen 6666; #推流端口 可自定义

        application rtmplive{

             live on;

            max_connections 5;  #最大观看人数

         }

         application hls{

             live on;

            hls on;

            #wait_key on;

             hls_path /www/rtmp/hls;  #录像文件存储位置

             #hls_playlist_length 60s;

            hls_fragment 1s;  #视频切片大小

        }

     }

 }

  1. 配置播放页面

vim /usr/local/nginx/conf/vhost/你的域名.conf

加入如下内容:

  server {

       listen       80;

       server_name  你的域名;

       #charset koi8-r;

       #access_log  logs/host.access.log  main;

       location / {

          root   /www/rtmp;  #网站目录

          index  index.html index.htm;

      }

     #error_page  404              /404.html;

     # redirect server error pages to the static page /50x.html      #     error_page   500 502 503 504  /50x.html;      location = /50x.html {      root   html;     }  }

到这一步流媒体服务器就搭建完成了。下面再送一个web直播页面,很好用,强烈推荐:http://www.cuplayer.com/player/PlayerCodeCourse/2014/12171698.html

后面的以后再说

手把手教你搭建一个直播服务器(Nginx+Rtsp)

IOT_SHUN 2018-03-25 16:28:30  29479  收藏 15

分类专栏: 移动端/客户端音视频入门

版权

本教程感谢慕课网

常用工具:

                ffmpeg音视频编解码 

                ffplay音视频播放工具

搭建流媒体服务器

                准备流媒体服务器linux

                准备并安装Nginx服务

                配置RTMP并启动Nginx服务

1.linxu安装Nginx和rtmp 

1.先下载安装  nginx 和 nginx-rtmp 编译依赖工具

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

2. 创建一个工作目录,并切换到工作目录

mkdir ~/working

cd ~/working

3. 下载 nginx 和 nginx-rtmp源码

wget http://nginx.org/download/nginx-1.7.5.tar.gz

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

4. 安装unzip工具,解压下载的安装包

sudo apt-get install unzip

5.解压 nginx 和 nginx-rtmp安装包

tar -zxvf nginx-1.7.5.tar.gz

unzip master.zip

6. 切换到 nginx-目录

cd nginx-1.7.5

7.添加 nginx-rtmp 模板编译到 nginx

./configure –with-http_ssl_module –add-module=../nginx-rtmp-module-master

8.编译安装 

make

sudo make install

9. 安装nginx init 脚本

sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx

sudo chmod +x /etc/init.d/nginx

sudo update-rc.d nginx defaults

10. 启动和停止nginx 服务,生成配置文件

sudo service nginx start

sudo service nginx stop

11. 安装 FFmpeg

sudo apt-add-repository ppa:jon-severinsson/ffmpeg

sudo apt-get update

sudo apt-get install ffmpeg

原文PPA不可用,源码安装参见

http://blog.csdn.net/redstarofsleep/article/details/45092145

12. 配置 nginx-rtmp 服务器

打开 /usr/local/nginx/conf/nginx.conf

在末尾添加如下 配置

rtmp {    

    server {    

        listen 1935;  #监听的端口  

        chunk_size 4000;    

        application hls {  #rtmp推流请求路径  

            live on;    

            hls on;    

            hls_path /usr/local/nginx/html/hls;    

            hls_fragment 5s;    

        }    

    }    

}

13. 保存上面配置文件,然后重新启动nginx服务

sudo service nginx restart

14. 如果你使用了防火墙,请允许端口 tcp 1935

    用netstat -an | grep 1935

出现以下信息代表则代表启动nginx/rtmp成功

        netstat -an| grep 1935

        tcp        0      0 0.0.0.0:1935            0.0.0.0:*               LISTEN 

16: 使用 客户端,使用 rtmp协议进行视频实时采集

ffmpeg直播命令:

        推流:ffmpeg -re -i 1.mp4 -c copy -f flv rtmp://xxx.xxx.xxx.xxx:1935/hls/1.mp4

        拉流:ffmpeg -i  rtmp://xxx.xxx.xxx.xxx/1.mp4 -c copy dump.flv

        播放音视频:ffplay rtmp://xxx.xxx.xxx.xxx/hls

17.下载一个OBS(视频直播客户端)

(1)配置url

    (2)推流

    (3)服务器播放

                    ffplay rtmp://xxx.xxx.xxx.xxx/hls

18: 关于 nginx-rtmp 更多配置

https://github.com/arut/nginx-rtmp-module/wiki/Directives

flashplay播放器地址

http://bbs.chinaffmpeg.com/1.swf

————————————————

版权声明:本文为CSDN博主「IOT_SHUN」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/IOT_SHUN/java/article/details/79684856

作者: 执着小钟

执着小钟

发表评论