RTMP服务器搭建(crtmpserver和nginx)
2017-10-06 本文已影响1809人
第八区
简介
- 环境搭建
- crtmapserver编译
- FFmpeg推流
- rtmp流拉取
- 使用nginx配置rtmp服务器
- FFmpeg使用语法
环境搭建
需要安装 wget cmake libssl-dev
apt-get install wget cmake
apt-get install libssl-dev
crtmapserver编译
获取代码
可以从github上获取crtmapserver
wget https://codeload.github.com/j0sh/crtmpserver/zip/centosinit
编译
unzip centosinit
cd builders/cmake
cmake .
make
启动
./crtmpserver/crtmpserver ./crtmpserver/crtmpserver.lua
FFmpeg推流
下载FFmpeg
官网上下载即可FFmpeg

解压后加入到window的系统环境变量中,方便后面的命令操作。
推流
ffmpeg -i wz.mp4 -f flv rtmp://192.168.136.131/live/test

rtmp流拉取
这里使用VLC播放器,下载VLC
开始播放,点击[媒体]->[流]->[网络]
输入刚刚推流的地址。然后选在下方的播放。

接下来就成功的播放了直播流视频

使用nginx配置rtmp服务器
下载安装nginx和nginx-rtmp-module

编译安装nginx
cd nginx-1.12.1
./configure --add-module=/root/nginx-rtmp-module
make
make install
编译安装完后nginx目录在/usr/local/nginx
下
而nginx的基本命令在sbin
下。进入到sbin下
- 启动
./nginx
- 重启
./nginx -s reload
其他更多命令可自行查找。
配置nginx的rtmp服务
编辑conf/nginx.conf
。添加以下配置

live就是我们推流和拉流的名字。然后重启nginx。
我们继续使用ffmpeg来推流
ffmpeg -re -i wz.mp4 -c copy -f flv rtmp://192.168.136.131/live/
这里采用拷贝的方式,不进行压缩。
然后使用VLC播放。

推流状态查看
在nginx.cnf的http块下添加
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /usr/local/nginx/nginx-rtmp-module/;
}
打开网页就可以看到正在推流的信息。

FFmpeg使用语法
命令参考资料
推流参考资料
ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
参数选项:
- -an: 去掉音频
- -acodec: 音频选项, 一般后面加copy表示拷贝
- -vcodec:视频选项,一般后面加copy表示拷贝
- -re ffmpeg读取文件有两种方式:一种是直接读取,文件被迅速读完;一种是按时间戳读取。一般都是按时间戳读取文件,
格式:
- h264: 表示输出的是h264的视频裸流
- mp4: 表示输出的是mp4的视频
- mpegts: 表示ts视频流
命令行加入-re,表示按时间戳读取文件
示例
H264视频转mp4
ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4
重新调整视频尺寸大小(仅限Linux平台)
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi
把摄像头的实时视频录制下来,存储为文件(仅限Linux平台)
ffmpeg -f video4linux -s 320*240 -r 10 -i /dev/video0 test.asf
udp视频流的推送
ffmpeg -re -i 1.ts -c copy -f mpegts udp://192.168.0.106:1234```