搭建思路:
1. 采用nginx+nginx-rtmp-module搭建rtmp服务端
2. ffmpeg作为推送端,将视频流转为adobe flash flv格式封装后推送到nginx rtmp服务
Nginx服务端:
nginx下载:
![ebdc41be7c87930ab82f68715abd7f2a.png](https://i-blog.csdnimg.cn/blog_migrate/ed9cdcd9d03ffcbc512fb36b0bca11f0.jpeg)
nginx-rtmp-module下载:
![5a6bc2f9dced8050096db3539e959a6e.png](https://i-blog.csdnimg.cn/blog_migrate/339ce049255dc451bc11b8edd90a94f7.jpeg)
编译安装:
![9a9886c88267aa2824295e7914152967.png](https://i-blog.csdnimg.cn/blog_migrate/da353a917c37e16e232065b7a987f9d5.jpeg)
添加rtmp配置:
![b11a92022e7de70fb8464613a3f01805.png](https://i-blog.csdnimg.cn/blog_migrate/a566eba3eeb750ff0637be92cc1afdbf.jpeg)
![c38084bffb5aa555e7f7bd9b0953891d.png](https://i-blog.csdnimg.cn/blog_migrate/f89d6584b227d0285836955b0b6f9911.jpeg)
启动服务:
![d75dcf9704a05b644867966603ea6841.png](https://i-blog.csdnimg.cn/blog_migrate/995da440a062736d3ca008a7f776dd95.jpeg)
配置Nginx流媒体服务器
nginx服务器有一个配置文件叫做nginx.conf ,这个文件默认是位于/usr/local/nginx/conf 目录下。
我将这个文件改成这样:
![dc37530c9697acccd95eed69967eac0f.png](https://i-blog.csdnimg.cn/blog_migrate/aa90ea9078cf52e8d0d20150230b782b.jpeg)
![fa295e844889204fea05518c06ba26b2.png](https://i-blog.csdnimg.cn/blog_migrate/5883044ff4b341e80781798fae08a7ba.jpeg)
![1a67ae7b254dc1f00df7da111e4e9570.png](https://i-blog.csdnimg.cn/blog_migrate/8c48d7fa1d72e78fb270d5917c2863e3.jpeg)
其中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如图
![82271b5f5e5f65fde59bf51eb43e53f0.png](https://i-blog.csdnimg.cn/blog_migrate/ae4e87b73ff13564bdc597cf410aa12f.jpeg)
这里有一个bug,局域网中其他电脑访问服务器需要使用:
rtmp://10.150.90.230:1935/videotest/test
10.150.90.230 表示服务器的IP地址,并且需要加入端口号,否则只能在本机服务器上播放,其他电脑如法播放。