之前使用命令方式安装nginx并配置了反向代理,由于想做一个视频直播的小项目,查了流媒体服务器的方案,发现nginx有相关模块,于是开始搞起。

nginx-rtmp模块需要在nginx编译时,以模块方式编译进去,所以,之前搭建的nginx不能用了,只能另外下源码编译,但是也不必卸载原来的环境,后面会介绍如何处理两个环境共存问题。

1.安装编译工具及库文件(使用yum命令安装)

yum install -y apr* autoconf automake bison bzip2 bzip2* cloog-ppl compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng* libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libX* libtiff libtiff* make mpfr ncurses* ntp openssl nasm nasm* openssl-devel patch pcre-devel perl php-common php-gd policycoreutils ppl telnet t1lib t1lib* wget zlib-devel libxml2 libxml2-devel libxslt libxslt-devel unzip

2.源码下载

nginx源码

nginx-rtmp源码

3.解压源码

4.编译安装

cd nginx-1.10.

./configure --add-module=../nginx-rtmp-module-master
make
sudo make install

5.环境配置

首先要做的(如果之前配置过nginx,比如反向代理),就是stop当前正在运行的nginx,并关闭开机自启动

/etc/init.d/nginx stop
chkconfig --level nginx off

之后流媒体服务器(点播、直播)的配置,参考http://lib.csdn.net/article/57/37915?knId=1549,不再重复造轮子

注意:点播支持flv、mp4 视频h264音频aac格式

6.ffmpeg测试命令

推流
ffmpeg -re -i test.avi -vcodec h264 -acodec aac -f flv rtmp://219.216.87.99/live/test1
转码
ffmpeg -i test.avi -acodec aac -vcodec h264 -f flv test.flv

7.开机自启

./usr/local/nginx/sbin/nginx

重点来了

在此视频直播的基础上,继续配置nginx反向代理

主要修改nginx.conf就可以实现,这里有个问题,就是配置rtmp时,使用了http服务器的部分,相当于主域名www会由配置流媒体服务器的那个http server响应。原来nginx只是作为反向代理,自己不提供内容。这样原来由apache响应的index就要交给nginx。

直接看配置吧

user  nginx;
worker_processes ; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections ;
}
rtmp {
server {
listen ;
chunk_size ;
application vod {
play /home/yourname/videoServer/vod;
}
application vod_http {
#play http://video.yourname.cn/vod;
play http://localhost/vod;
} application live {
live on;
} application hls {
live on;
hls on;
hls_path /home/yourname/videoServer/hls;
wait_key on;
hls_fragment 10s;
hls_playlist_length 60s;
hls_continuous on;
hls_cleanup on;
hls_nested on;
}
}
} http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout ;
keepalive_timeout ; #gzip on; server {
listen ;
server_name www.yourname.cn; location / {
root html;
index index.html index.htm;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /usr/local/nginx/livestats/;
} location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
add_header Cache-Control no-cache;
} error_page /50x.html;
location = /50x.html {
root html;
} } upstream tomcat{
server localhost:;
}
server {
listen ;
server_name tom.yourname.cn;
location / {
proxy_pass http://tomcat;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} } upstream apache_index{
server localhost:;
}
server {
listen ;
server_name video.yourname.cn;#此前这是www,现在变成二级域名
location / {
proxy_pass http://apache_index;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} } upstream apache_blog{
server localhost:;
}
server {
listen ;
server_name blog.yourname.cn;
location / {
proxy_pass http://apache_blog;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} }
upstream apache_bbs{
server localhost:;
}
server {
listen ;
server_name bbs.yourname.cn;
location / {
proxy_pass http://apache_bbs;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} } }

还有就是,之前www、blog、bbs都设置了cdn,在做了新域名解析后,网站静态页面的内容并没有立即更新,这个把我坑了一把,等一段时间就好了,这和你设置cdn更新时间有关。还有就是,rtmp关心的是rtmp服务器的真实ip,如果域名做了cdn解析,可能会失败。

Centos6.5 nginx+nginx-rtmp配置流媒体服务器的更多相关文章

  1. nginx搭建rtmp协议流媒体服务器总结

    最近在 ubuntu12.04+wdlinux(centos)上搭建了一个rtmp服务器,感觉还挺麻烦的,所以记录下. 大部分都是参考网络上的资料. 前提: 在linux下某个目录中新建一个nginx ...

  2. nginx的rtmp搭建流媒体服务器实现直播流

    最近自己搞了一个用nginx的rtmp来搭建流媒体服务器,从而实现直播的过程,参考了网上很多资料,有些资料对于初学者来说比较难以理解,在此将我搭建的过程记录下来,分享给大家. 1.下载nginx-rt ...

  3. CentOS6下基于Nginx搭建mp4/flv流媒体服务器

    CentOS6下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具) 1.先添加几个RPM下载源 1.1)安装RPMforge的CentOS6源 [roo ...

  4. 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)

    欢迎大家积极开心的加入讨论群 群号:371249677 (点击这里进群) 一.方案简要 首先通过对开发方案的仔细研究(实时监控.流媒体.直播流方案的数据源-->协议转换-->服务器--&g ...

  5. Ubuntu 14.10下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)

    Ubuntu 14.10下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具) 最近因为项目关系,收朋友之托,想制作秀场网站,但是因为之前一直没有涉及到这 ...

  6. nginx + rtmp 搭建流媒体服务器

    一.安装nginx服务器 1.路径说明: 路径:/usr/local/src 2.下载nginx-rtmp-module (我这里的目录是在/usr/local/src/下面) cd /usr/loc ...

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

    参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.co ...

  8. [终极精简版][图解]Nginx搭建flv mp4流媒体服务器

    花了我接近3周,历经了重重问题,今日终于把流媒体服务器搞定,赶紧的写个博文以免忘记... 起初是跟着网上的一些教程来的,但是说的很不全面,一些东西也过时不用了(比如jwplayer老版本).我这次是用 ...

  9. 流媒体技术学习笔记之(一)nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

    参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.co ...

随机推荐

  1. php函数应用场景

    截取文件后缀: $slen = strlen($suffix); substr($this->uri_string, -$slen) === $suffix 原理:截取倒数多少长度字符 判断多维 ...

  2. OC语言-01类和对象

    // cc 文件名.m -framework Foundation 编译链接 #import <Foundation/Foundation.h> //枚举性别 typedef enum{ ...

  3. Cocos2d-x 2.0以上版本安装方法

    1,cd 到2dx根目录,MAC平台使用./create-multi-platform-projects.py  然后提示: -bash: ./create-multi-platform-projec ...

  4. Tomcat架构(三)

    嵌套组件 这些组件是针对Tocmat做的特定实现,他们的主要目的是使各种Tomcat容器可以完成各自的工作. 1.阀(Valve) valve是处理元素,它可以被包含在每个Tomcat容器的处理路径中 ...

  5. MacOS快捷键

  6. Qt新建项目No valid kits found解决思路

    Qt新建项目No valid kits found解决思路 第一次用Qt Creator创建Project时,进入Kit Selection窗口后,会提示No Valid kits found. Pl ...

  7. Linux Shell编程(12)——操作符

    赋值变量赋值初始化或改变一个变量的值=通用的变量赋值操作符,可以用于数值和字符串的赋值   1 var=27   2 category=minerals  # "="字符后面不能加 ...

  8. 【转】Java中如何遍历Map对象的4种方法

    原文网址:http://blog.csdn.net/tjcyjd/article/details/11111401 在Java中如何遍历Map对象 How to Iterate Over a Map ...

  9. 跨浏览器读取XML

    这里跨浏览器,但是只能读取字符串XML文档,可以通过Ajax方式load一个XML文档,将文件XML转变为字符串 // 跨浏览器返回XML DOM对象 function getXMLDOM(xmlSt ...

  10. java基础(七)面向对象(二)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...