小白学习音视频系列(一) 搭建自己的直播服务器
小白学习音视频系列(一)
利用crtmpserver和FFmpeg快速搭建自己的直播服务器
关注微信号:cpp手艺人,获取文章
1.准备环境
1.需要首要ubuntu系统环境,我的是ubuntu 14.04 64位系统真机,你用虚拟机也可以的。
2.连接网络,因为我们需要下载编译。
3.使用xshell连接到机器里面。(非必需)
4.安装vlc播放器,这个自己网络百度下,等会我们拉流的时候需要用播放器测试。
2.命令行编译
这里的操作及其容易发生错误,希望大家一定要按照我的步骤来操作。
1.安装wget和cmake, g++
apt-get install wget cmake g++。
2.安装ssl的开发库
apt-get install libssl-dev
3.下载crtmp源码
wget https://codeload.github.com/j0sh/crtmpserver/zip/centosinit
4.解压conteosinit,如果提示命令没有安装请使用apt-get install unzip安装
unzip centosinit
5.解压完之后会生成一个crtmpserver-centosinit目录,执行
cd crtmpserver-centosinit/builders/cmake/
6.编译
cmake . && make (生成makefile,并执行make编译)
3.准备推流
1.下载ffmpeg
去FFmpeg官网下载对应系统的文件,比如我下载的windows x64 share, 给出下载:https://ffmpeg.zeranoe.com/builds/
2.启动crtmp服务器
./crtmpserver/crtmpserver ./crtmpserver/crtmpserver.lua
3.使用FFmpeg推送本地文件,执行下面命令的时候你需要到你刚刚下载ffmpeg目录中,或者是将ffmpeg目录放到你的系统PATH环境变量中
ffmpeg -i 1.flv -c copy -f flv rtmp://192.168.26.31/live/test1
-i 表示输入的文件
-c copy 表示直接copy文件,这样ffmpeg就不会进行编码
-f flv 表示格式
rmtp 表示使用rtmp协议,后面的ip换成你自己的ip地址就可以
执行完命令之后如下图所示
4.使用vlc拉流
5.使用ffplay拉流
ffplay rtmp://192.168.1.44/live/test1 -fflags nobuffer
6.如果vlc能看到画面,那么说明你已经成功搭建了。下面的就不用看了。
4.解决问题
- Default implementation of ProcessInvokeGeneric: Request: _checkbw 报出这样错误
修改源码:sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp
在BaseRTMPAppProtocolHandler::ProcessInvoke中增加处理_checkbw逻辑
修改完之后再执行 ./crtmpserver/crtmpserver ./crtmpserver/crtmpserver.lua
2.此时可能报出ProcessInvokeCheckBandwidth:checkBandwidth is disabled.
修改crtmpserver.lua中的配置,在第166行,将注释解开就可以了
3.可能上述错误都没有,vlc就是看不到画面
有可能就是流已经推完了,尝试着先让vlc拉流,然后再用FFmpeg去推流
4.在链接的过程中,ubuntu的防火墙会把端口禁用了。crtmp使用的端口是1935
sudo uwf enable 1935
至此直播服务器已经搭建完毕了。这个过程可能不是一帆风顺的,但是你总会成功的。
buntu的防火墙会把端口禁用了。crtmp使用的端口是1935
sudo uwf enable 1935
至此直播服务器已经搭建完毕了。这个过程可能不是一帆风顺的,但是你总会成功的。