simpleLive
使用Linux服务器搭建直播服务器,并运用Apicloud平台简易快速的制作全功能直播APP。
代码目录结构介绍
widget文件夹里是源代码,熟悉Apicloud的朋友对这个文件夹都不陌生,这里面包括所用到的aliyunLive模块代码。具体其目录结构和代码结构需使用者自行研究。
app:我作为开发者所关注并开发的部分,我编写的代码都在这里面。注意,这个目录不包含aliyunLive模块。
服务器端
打开相关端口
Rtmp会使用到1935端口
- 到阿里云后台设置本实例安全组规则开放1935端口。
- 配置防火墙打开1935端口。
安装FFMPEG
- 安装依赖包和升级相关工具
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++
- 安装相关工具包
- 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
- 安装ffmpeg及其依赖包
- 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
- 下载nginx-rtmp-module
cd /tommy
git clone https://github.com/arut/nginx-rtmp-module.git
- 动态添加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
- 配置nginx.conf
vi /etc/nginx/nginx.conf
在server里添加
rtmp {
server {
listen 1935;
application live {
live on;
}
}
}
重启nginx
/usr/sbin/nginx -s reload
APP端
将主播端和播放端集成到了同一个APP中,演示时请用两部安卓手机安装,一个做主播,一个负责播放。
概述
- 关于使用的平台
- 关于使用的模块
aliyunLive 封装了阿里云视频直播的 sdk,该模块包括视频流采集和视频流播放两部分。如使用阿里云直播服务器搭配此模块,需要在阿里云官网注册,在控制台创建直播流,并获取播放端相关参数,详情可以参照阿里云直播官网:阿里云视频直播。
注意: 该模块android版 播放器只适用于android 4.4+,推流需要 android 4.5 以上版本支持。iOS版最低版本为8.0。(iOS云编译的时候需要勾选相机和麦克风权限,并在高级设置里选择iOS版本为8.0)。
- 技术部分
HTML5
CSS3
JS(Vue)
- 工具
- 编辑器Atom
- 直播模块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模块
- 下载nginx-rtmp-module:
yum -y install git
cd /root/lnmp1.5
git clone https://github.com/arut/nginx-rtmp-module.git
完成后在lnmp1.5目录下可以看到这个文件夹了:
- 使用如下命令查看编译安装参数:
nginx -V
可以看到:
在configure arguments后面就是安装参数了。把这个参数复制下来
- 重新编译安装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流媒体了。
三、配置推流地址以及播放页面
- 配置推流地址:
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; #视频切片大小
}
}
}
- 配置播放页面
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