搭建思路:
1. 采用nginx nginx-rtmp-module搭建rtmp服务端
2. ffmpeg作为推送端,将视频流转为adobe flash flv格式封装后推送到nginx rtmp服务
Nginx服务端:
nginx下载:
nginx-rtmp-module下载:
编译安装:
添加rtmp配置:
启动服务:
配置Nginx流媒体服务器
nginx服务器有一个配置文件叫做nginx.conf ,这个文件默认是位于/usr/local/nginx/conf 目录下。 我将这个文件改成这样:
其中rtmp就是rtmp服务器模块,端口是1935,application我理解为一个路径。可以通过访问rtmp://localhost/videotest 来访问videotest这个资源。live on 表示这是实时的传输,这不同于点播,点播就好比我在某视频网站上想看一个视频,无论我什么时候去点击,它会从头开始播放。而实时传输(直播),就是好比看电视,我在19:20去打开电视(打开直播路),视频不会从头开始播放,而是从当前(19:20)的视频数据开始播放。
除了配置rtmp服务器,还可以配置HTTP和HTTPS服务器。这方面我还没有深入去了解。更多关于nginx服务器和其配置方式,请阅读nginx官网 。
安装ffmpeg
首先安装h264 视频编解码库:
sudo apt-get update
sudo apt-get install libx264-dev
安装ffmpeg ,依次输入以下命令:
wget http://ffmpeg.org/releases/ffmpeg-3.0.9.tar.bz2
tar jxvf ffmpeg-3.0.9.tar.bz2
cd ffmpeg-3.0.9/
sudo ./configure –enable-shared –enable-pthreads –enable-gpl –enable-avresample –enable-libx264 –enable-libtheora –disable-yasm
动态
sudo ./configure –disable-shared –enable-static –enable-pthreads –enable-gpl –enable-avresample –enable-libx264 –enable-libtheora –disable-yasm
静态
如果出现错误 ,可能需要安装sudo apt-get -y install libtheora-dev
sudo make
sudo make install
其中sudo make 这个过程会比较久。安装完ffmpeg之后,在命令行中输入ffmpeg:
如果出现找不到库,说明是使用动态编译,库的路径无法找到。
因为这里我重新用静态命令编译一遍,然后就成功了。
推流与拉流
配置好nginx.conf之后,重新启动sudo /usr/local/nginx/sbin/nginx
然后在命令行中使用 ffmpeg 进行推流:
ffmpeg -re -i /home/hjh/nginx/video.mp4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://localhost:1935/videotest/test
/home/hjh/nginx/video.mp4自己需要播放的文件。
在本机器上用vlc打开串流rtmp://localhost:1935/videotest/test如图
这里有一个bug,局域网中其他电脑访问服务器需要使用: rtmp://10.150.90.230:1935/videotest/test 10.150.90.230 表示服务器的IP地址,并且需要加入端口号,否则只能在本机服务器上播放,其他电脑如法播放。