(转)Nginx+rtmp+ffmpeg搭建流媒体服务器

(1)下载第三方扩展模块nginx-rtmp-module

# mkdir module && cd module          //创建一个存放模块的目录
# wget https://github.com/arut/nginx-rtmp-module/archive/master.zip        //下载模块
# unzip master.zip                //解压
# ls nginx-rtmp-module-master/         //查看模块目录

(2)编译安装nginx说明:此处由于我这边已有lnmp运行项目的环境,直接动态添加的 nginx-rtmp-module模块; 动态参加可参考这里

# yum -y install pcre-devel openssl openssl-devel        //安装依赖
# wget http://nginx.org/download/nginx-1.12.2.tar.gz        //下载nginx包
# tar xf nginx-1.12.2.tar.gz
# ./configure --prefix=/opt/nginx-1.9.5 --add-module=/root/module/nginx-rtmp-module-master --with-http_ssl_module    //编译安装nginx,并指定上面下载的模块路径
# make
# make install

(3)修改nginx配置文件,添加如下内容并重新载入配置文件

# vim nginx.conf
rtmp {
    server {
        listen 1935;      #监听的端口号
        application myapp {     #自定义的名字
            live on;
       }
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
            hls_fragment 1s;
            hls_playlist_length 3s;
       }
    }
}
# /etc/init.d/nginx reload

完整nginx.conf

安装ffmpeg

ffmpeg命令参考这位朋友的文章:https://www.jianshu.com/p/049d03705a81

(1)安装依赖

# yum install yasm -y

(2)下载ffmpeg并安装

# git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg    //下载ffmpeg
# cd ffmpeg
# ./configure --prefix=/usr/local/ffmpeg
# make
# make install

(3)拷贝命令到/usr/bin(方便后面调用)

# ls /usr/local/ffmpeg/        //查看安装目录生成的文件
bin  include  lib  share
# cp /usr/local/ffmpeg/bin/* /usr/bin/

测试

(1)启用ffmpeg进行推流

# ffmpeg -i rtsp://192.168.1.175:554/11 -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -r 25 -b:v 500k -s 640*480 -f flv rtmp://192.168.1.11:1935/myapp/23
-i 要处理视频文件的路径,此处地址是一个监控摄像头
-s 像素
rtmp://192.168.1.11:1935/myapp/23  说明:rtmp://IP:PORT/ myapp指nginx配置文件中自定义的,22指输出文件的名字
-f 强迫采用flv格式
别的参数参考上面那位老兄的

(2)打开VLC 媒体——>流——>网络

(3)进入服务器查看输出的位置可以发现已生成文件

# ll /tmp/hls/
total 1636
-rw-r--r-- 1 root root 500644 Mar 28 17:05 22-1955.ts
-rw-r--r-- 1 root root 384460 Mar 28 17:05 22-1956.ts
-rw-r--r-- 1 root root 413036 Mar 28 17:05 22-1957.ts
-rw-r--r-- 1 root root 366036 Mar 28 17:05 22-1958.ts
-rw-r--r-- 1 root root    154 Mar 28 17:05 22.m3u8

(4)还可以使用浏览器这样访问 http://192.168.1.11/hls/22.m3u8

至此就搭建完成了,至于别的操作后续再写

原文地址:https://www.cnblogs.com/schips/p/11766335.html

时间: 2024-10-27 08:23:08

(转)Nginx+rtmp+ffmpeg搭建流媒体服务器的相关文章

nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html 上面这两个流的地址分别是: 第一个就是推送的地址: RTMP推流地址: rtmp://serverIp:1935/myapp/test1 第二个是HTTP地址: HLS推流地址: http://serverIp:

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(十)

第十部分 -- 开发板测试 前几天已经分别将nginx和ffmpeg移植到了开发板上面,但是还是没有进行任何的测试并不知道移植后的效果如何. 今天分别做了两个测试,证明移植的结果是可用的. 1.测试ffmpeg 对于nginx的测试在移植完成后就已经进行过了,当然就是简单的能够显示nginx欢迎界面而已,但是对我来讲,nginx能用就行,并没有对他进行深一步的测试. 但是对于ffmpeg不测试下总感觉不放心,虽然移植时运行显示可以,但是还不知道它能不能工作,所以首先用它进行了视频格式转换的测试.

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(五)

第五部分 前段时间,在Ubuntu上面搭建起来了能支持HLS的流媒体服务器,最终目标是在arm的开发板上搭建这样的流媒体服务器.现在工作只是做了一小部分,正在进行移植,记录下来,方便以后继续干. 1.首先是要移植nginx到arm的开发板上面. 这个其实有人已经做过了,可以使用别人的工程. https://bitbucket.org/ntakimura/android-nginx/src/c80cb9c41a725ecf57f73a196735100aeef5b6e4/?at=android 这

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(二)

第二部分 1.昨天已经把网络摄像机的rtsp视频流成功利用FFmpeg和Nginx转换成rtmp流推送到了nginx视频服务器上面,并且通过vlc可以观看到直播视频. 今天继续昨天的工作,将rtsp的视频流推送到Nginx上面,客户端根据hls协议使用http在网页进行观看(推送的仍然是rtmp视频流),关于hls,先给一小段简单介绍: HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(一)

第一部分 主要步骤及命令记录: 1.下载nginx,地址http://nginx.org/en/download.html,选择最新版本下载.解压.当前最新版为:nginx-1.7.9. 2.为了增加对rtmp的支持,下载nginx-rtmp-module,地址:https://github.com/arut/nginx-rtmp-module#example-nginxconf,这个是个开源项目.解压后,为了和我在网上看到的教程同步,我改了文件夹名字,将其改成了nginx-rtmp-modul

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(三)

第三部分 这几天实验室搬家,闹腾的,刚刚进入状态. 接着调试,客户端浏览器根据hls协议使用http在网页进行观看直播视频,期间遇到一些小问题,记录下. 1.昨天测试的时候,遇到一个情况,就是在无论在PC机还是移动端浏览器观看视频的时候,总是出现画面丢失现象,烦人得很. 控制台也显示丢包现象严重得很. 可以看出,丢包现象到了很严重的地步.看着都糟心. 此时使用的命令是: ffmpeg -i rtsp://admin:[email protected] -vcodec copy -acodec c

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(六)

第六部分 前几天一直被移植到ARM开发板上的nginx启动的问题困扰,在ARM开发板上启动时不是出现 nginx: [emerg] getgrnam("nogroup") failed (2: No such file or directory) 就是出现 /system/bin/sh: ./nginx: cannot execute - Permission denied 使用命令 adb shell chmod 755 /sdcard/mynginx/sbin/nginx 修改权限

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(八)

第八部分---FFmpeg移植到Android 最近这几天一直在搞FFmpeg的Android移植,我的目标是在Linux上对FFmpeg进行交叉编译最终得到可以push到Android目录下执行的ffmpeg可执行文件. 为了达到这个目的,完成对FFmpeg的移植,我可以说是查遍了几乎所有网络文章,试遍了网上的各种方法,但最终还是出现各种各样的错误,真是蛋蛋碎了一地阿! 刚刚开始试验的时候,在编译的时候小心脏还加速跳呢害怕失败出错,到后来试的多了,失败的多了直接没感觉了,想着反正没打算通过,很

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(九)

第九部分---项目ffmpeg命令解析 前面已经看到了ffmpeg在ARM开发板上执行给出的提示信息: usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... 参照前面在PC机linux操作系统上完成同样的任务执行的命令 ffmpeg -i rtsp://admin:[email protected]  -vcodec copy -acodec copy -s 640x480 -