【使用ffmpeg及nginx实现直播、点播、安防监控】搭建思路:
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地址 , 并且需要加入端口号 , 否则只能在本机服务器上播放 , 其他电脑如法播放 。
推荐阅读
- 使用精华液有什么功效?
- 厕所洁厕灵怎么使用 洁厕灵怎么用步骤图片
- 车辆熄火后,很多车主这样做,小心缩短汽车电池使用寿命
- 李施德林使用后需要清水漱口吗 李施德林漱口水可以长期使用吗
- 古埃及一共有多少法老 法老在埃及是什么地位
- Mac 下使用 clion 调试 PHP 内核源码
- 信息安全必须懂的NTP服务放大攻击以及检测预防手段,值得收藏
- 你知道 HTTP 是如何使用 TCP 连接的吗?
- 记一次生产环境部署NTP服务及配置时间同步
- 你知道 HTTP 是如何使用 TCP 连接的吗?今天我就来告诉你