共计 11083 个字符,预计需要花费 28 分钟才能阅读完成。
目的: 使 Nginx 支持 Rtmp 协议推流,并支持 HLS 分发功能及 FFmpeg 转码多码率功能。
一、准备工作
模块:nginx-rtmp-module-master(支持 rtmp 协议)
下载地址:
http://nginx.org
https://github.com/arut/nginx-rtmp-module
1、安装依赖包:
#yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-devel gettext-devel libtool mhash.x86_64 perl-Digest-SHA1.x86_64 gcc-c++
2、安装 git 工具:
#mkdir soft-source
#cd soft-source
#wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
#tar xzvf git-latest.tar.gz
#cd git-2013-02-04
#autoconf
#./configure
#make && make install
# git –version
git version 1.8.1.GIT
#cd ..
【错误处理】
如果 git-latest.tar.gz 大小为 0,请下载 git-latest-tar.xz
然后 xz -d git-latest.tar.xz 解压为.tar
再 tar xvf git-latest.tar
3、安装 ffmpeg 及其依赖包:
++++++++Yasm+++++++++++
#wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
#tar xzvf yasm-1.2.0.tar.gz
#cd yasm-1.2.0
#./configure
#make
#make install
#cd ..
++++++++x264+++++++++++
#git clone git://git.videolan.org/x264
#cd x264
#./configure –enable-shared
#make
#make install
#cd ..
++++++++LAME+++++++++++
#wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
#tar xzvf lame-3.99.5.tar.gz
#cd lame-3.99.5
#./configure –enable-nasm
#make
#make install
#cd ..
++++++++libogg+++++++++++
#wget http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz
#tar xzvf libogg-1.3.0.tar.gz
#cd libogg-1.3.0
#./configure
#make
#make install
#cd ..
++++++++libvorbis+++++++++++
#wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz
#tar xzvf libvorbis-1.3.3.tar.gz
#cd libvorbis-1.3.3
#./configure
#make
#make install
#cd ..
++++++++libvpx+++++++++++
#git clone http://git.chromium.org/webm/libvpx.git
#cd libvpx
#./configure –enable-shared
#make
#make install
#cd ..
++++++++FAAD2+++++++++++
#wget http://downloads.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz
#tar zxvf faad2-2.7.tar.gz
#cd faad2-2.7
#./configure
#make
#make install
#cd ..
++++++++FAAC+++++++++++
#wget http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz
#tar zxvf faac-1.28.tar.gz
#cd faac-1.28
#./configure
#make
#make install
#cd ..
【错误处理】
编译 FAAC-1.28 时遇到错误:
mpeg4ip.h:126: error: new declaration‘char* strcasestr(const char*, const char*)’
解决方法:
从 123 行开始修改此文件 mpeg4ip.h,到 129 行结束。
修改前:
#ifdef __cplusplus
extern “C” {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
修改后:
#ifdef __cplusplus
extern “C++” {
#endif
const char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
++++++++Xvid+++++++++++
#wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
#tar zxvf xvidcore-1.3.2.tar.gz
#cd xvidcore/build/generic
#./configure
#make
#make install
cd ../../../
++++++++ffmpeg+++++++++++
#git clone git://source.ffmpeg.org/ffmpeg
#cd ffmpeg
#./configure –prefix=/opt/ffmpeg/ –enable-version3 –enable-libvpx –enable-libfaac –enable-libmp3lame –enable-libvorbis –enable-libx264 –enable-libxvid –enable-shared –enable-gpl –enable-postproc –enable-nonfree –enable-avfilter –enable-pthreads
#make && make install
#cd ..
【错误处理】
如果提示 libvpx decoder version must be >=0.91,请从 Baidu 搜索一下 libvpx-v1.1.0.tar.bz 下载。
bzip2 -d libvpx-v1.1.0.tar.bz2
tar xvf libvpx-v1.1.0.tar.bz2
cd libvpx-v1.1.0
./configure –enable-shared –enable-vp8
make
make install
修改 /etc/ld.so.conf 如下:
include ld.so.conf.d/*.conf
/lib
/lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
/opt/ffmpeg/lib
#ldconfig
【说明】
动态装入器找到共享库要依靠两个文件 — /etc/ld.so.conf 和 /etc/ld.so.cache。
安装完成后,ffmpeg 位于 /opt/ffmpeg/bin 目录下。
Linux 下编译 FFmpeg 之下载源文件并编译 http://www.linuxidc.com/Linux/2012-02/54565.htm
Linux 编译升级 FFmpeg 步骤 http://www.linuxidc.com/Linux/2013-08/88190.htm
CentOS 5.6 上安装 FFMPEG http://www.linuxidc.com/Linux/2011-09/42793.htm
在 Ubuntu 下安装 FFmpeg http://www.linuxidc.com/Linux/2012-12/75408.htm
Ubuntu 12.04 下编译 ffmpeg http://www.linuxidc.com/Linux/2013-02/78857.htm
Ubuntu 14.04 下 PPA 安装 FFmpeg 2.2.2 http://www.linuxidc.com/Linux/2014-05/101322.htm
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-01/111182p2.htm
二、安装 Nginx 相关模块
1. 环境准备
yum install –y pcre pcre-devel
yum install –y zlib zlib-devel
2. 下载 nginx 及 rtmp 模块
wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar xzvf nginx_1.6.2.tar.gz
git clone git://github.com/arut/nginx-rtmp-module.git
3. 编译 nginx-rtmp
./configure –prefix=/usr/local/nginx –add-module=../nginx-rtmp-module –with-http_stub_status_module
make
make install
安装完成后,nginx 位于 /usr/local/nginx/sbin 目录下,配置文件 nginx.conf 在 /usr/local/nginx/conf 目录下
++++++++ 测试 nginx 是否安装正确 +++++++++++
#cd /usr/local/nginx
#./sbin/nginx -c ./conf/nginx.conf
打开网页 http://localhost,如果显示 Welcome 表示安装下正确,如果没有显示,请查看一下 nginx 的日志。
++++++++ 测试 RTMP+++++++++++
修改 /usr/local/nginx/conf/nginx.conf 的内容如下:
#debug
daemon off;
master_process off;
error_log ./error.log debug;
events{
worker_connections 1024;
}
rtmp{
server {
listen 1935;
chunk_size 4000;
#live
application myapp {
live on;
}
}
从网上下载一款 RTMP 推流工具,我使用的 OBS(Open Broadcaster Software),开始推流 rtmp://your_ip/myapp/test,使用播放器(http://www.cutv.com/demo/live_test.swf)查看是否正常。
++++++++ 测试 HLS 切片功能 +++++++++++
修改 /usr/local/nginx/conf/nginx.conf 的内容如下:
#debug
daemon off;
master_process off;
error_log ./error.log debug;
events{
worker_connections 1024;
}
rtmp{
server {
listen 1935;
chunk_size 4000;
#live
application myapp {
live on;
hls on;
hls_path /tmp/hls;
hls_fragment 2s;
hls_playlist_length 6s;
}
}
}
#HTTP
http{
server {
listen 80;
#welcome
location / {
root html;
index index.html index.htm;
}
#hls
location /hls {
types {
application/vnd.apple.mpegusr m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
}
使用 VLC 或 iPAD 上的播放器进行查看 http://yourip/hls/test.m3u8。
++++++++ 测试 FFMPEG 转码功能 +++++++++++
修改 /usr/local/nginx/conf/nginx.conf 的内容如下:
#debug
daemon off;
master_process off;
error_log ./error.log debug;
events{
worker_connections 1024;
}
rtmp{
server {
listen 1935;
chunk_size 4000;
#live
application myapp {
live on;
exec /opt/ffmpeg/bin/ffmpeg -i rtmp://localhost/myapp/$name
-c:a copy -c:v libx264 -b:v 512K -g 30 -f flv rtmp://localhost/hls/$name_low;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
hls_nested on;
hls_fragment 2s;
hls_playlist_length 6s;
hls_variant _hi BANDWIDTH=640000;
}
}
}
#HTTP
http{
server {
listen 80;
#welcome
location / {
root html;
index index.html index.htm;
}
#hls
location /hls {
types {
application/vnd.apple.mpegusr m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
}
使用 ffmpeg 转码时,
exec /opt/ffmpeg/bin/ffmpeg -i rtmp://localhost/myapp/$name
-c:a copy -c:v libx264 -b:v 512K -g 30 -f flv rtmp://localhost/hls/$name_low;
仅对视频进行转码,音频不做处理,同时向流从 myapp 转推到 hls,hls_variant 会生成一个多码率的 m3u8 文件,同时把切片文件存放到 test_low 目录下,访问多码率时,直接访问 http://yourip/hls/test.m3u8,根据这个 m3u8 中的实现的内容访问相应的码流,在本例中,实际码流 URL 为 http://yourip/hls/test_low/index.m3u8
————————————– 分割线 ————————————–
CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm
使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm
搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm
CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm
CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm
CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm
Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm
Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm
————————————– 分割线 ————————————–
FFmpeg 的详细介绍:请点这里
FFmpeg 的下载地址:请点这里
目的: 使 Nginx 支持 Rtmp 协议推流,并支持 HLS 分发功能及 FFmpeg 转码多码率功能。
一、准备工作
模块:nginx-rtmp-module-master(支持 rtmp 协议)
下载地址:
http://nginx.org
https://github.com/arut/nginx-rtmp-module
1、安装依赖包:
#yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-devel gettext-devel libtool mhash.x86_64 perl-Digest-SHA1.x86_64 gcc-c++
2、安装 git 工具:
#mkdir soft-source
#cd soft-source
#wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
#tar xzvf git-latest.tar.gz
#cd git-2013-02-04
#autoconf
#./configure
#make && make install
# git –version
git version 1.8.1.GIT
#cd ..
【错误处理】
如果 git-latest.tar.gz 大小为 0,请下载 git-latest-tar.xz
然后 xz -d git-latest.tar.xz 解压为.tar
再 tar xvf git-latest.tar
3、安装 ffmpeg 及其依赖包:
++++++++Yasm+++++++++++
#wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
#tar xzvf yasm-1.2.0.tar.gz
#cd yasm-1.2.0
#./configure
#make
#make install
#cd ..
++++++++x264+++++++++++
#git clone git://git.videolan.org/x264
#cd x264
#./configure –enable-shared
#make
#make install
#cd ..
++++++++LAME+++++++++++
#wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
#tar xzvf lame-3.99.5.tar.gz
#cd lame-3.99.5
#./configure –enable-nasm
#make
#make install
#cd ..
++++++++libogg+++++++++++
#wget http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz
#tar xzvf libogg-1.3.0.tar.gz
#cd libogg-1.3.0
#./configure
#make
#make install
#cd ..
++++++++libvorbis+++++++++++
#wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz
#tar xzvf libvorbis-1.3.3.tar.gz
#cd libvorbis-1.3.3
#./configure
#make
#make install
#cd ..
++++++++libvpx+++++++++++
#git clone http://git.chromium.org/webm/libvpx.git
#cd libvpx
#./configure –enable-shared
#make
#make install
#cd ..
++++++++FAAD2+++++++++++
#wget http://downloads.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz
#tar zxvf faad2-2.7.tar.gz
#cd faad2-2.7
#./configure
#make
#make install
#cd ..
++++++++FAAC+++++++++++
#wget http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz
#tar zxvf faac-1.28.tar.gz
#cd faac-1.28
#./configure
#make
#make install
#cd ..
【错误处理】
编译 FAAC-1.28 时遇到错误:
mpeg4ip.h:126: error: new declaration‘char* strcasestr(const char*, const char*)’
解决方法:
从 123 行开始修改此文件 mpeg4ip.h,到 129 行结束。
修改前:
#ifdef __cplusplus
extern “C” {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
修改后:
#ifdef __cplusplus
extern “C++” {
#endif
const char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
++++++++Xvid+++++++++++
#wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
#tar zxvf xvidcore-1.3.2.tar.gz
#cd xvidcore/build/generic
#./configure
#make
#make install
cd ../../../
++++++++ffmpeg+++++++++++
#git clone git://source.ffmpeg.org/ffmpeg
#cd ffmpeg
#./configure –prefix=/opt/ffmpeg/ –enable-version3 –enable-libvpx –enable-libfaac –enable-libmp3lame –enable-libvorbis –enable-libx264 –enable-libxvid –enable-shared –enable-gpl –enable-postproc –enable-nonfree –enable-avfilter –enable-pthreads
#make && make install
#cd ..
【错误处理】
如果提示 libvpx decoder version must be >=0.91,请从 Baidu 搜索一下 libvpx-v1.1.0.tar.bz 下载。
bzip2 -d libvpx-v1.1.0.tar.bz2
tar xvf libvpx-v1.1.0.tar.bz2
cd libvpx-v1.1.0
./configure –enable-shared –enable-vp8
make
make install
修改 /etc/ld.so.conf 如下:
include ld.so.conf.d/*.conf
/lib
/lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
/opt/ffmpeg/lib
#ldconfig
【说明】
动态装入器找到共享库要依靠两个文件 — /etc/ld.so.conf 和 /etc/ld.so.cache。
安装完成后,ffmpeg 位于 /opt/ffmpeg/bin 目录下。
Linux 下编译 FFmpeg 之下载源文件并编译 http://www.linuxidc.com/Linux/2012-02/54565.htm
Linux 编译升级 FFmpeg 步骤 http://www.linuxidc.com/Linux/2013-08/88190.htm
CentOS 5.6 上安装 FFMPEG http://www.linuxidc.com/Linux/2011-09/42793.htm
在 Ubuntu 下安装 FFmpeg http://www.linuxidc.com/Linux/2012-12/75408.htm
Ubuntu 12.04 下编译 ffmpeg http://www.linuxidc.com/Linux/2013-02/78857.htm
Ubuntu 14.04 下 PPA 安装 FFmpeg 2.2.2 http://www.linuxidc.com/Linux/2014-05/101322.htm
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-01/111182p2.htm