nginx搭建rtmp协议流媒体服务器总结.docx
- 文档编号:29658871
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:23
- 大小:20.67KB
nginx搭建rtmp协议流媒体服务器总结.docx
《nginx搭建rtmp协议流媒体服务器总结.docx》由会员分享,可在线阅读,更多相关《nginx搭建rtmp协议流媒体服务器总结.docx(23页珍藏版)》请在冰豆网上搜索。
nginx搭建rtmp协议流媒体服务器总结
nginx搭建rtmp协议流媒体服务器总结
最近在ubuntu12.04上搭建了一个rtmp服务器,感觉还挺麻烦的,所以记录下。
大部分都是参考网络上的资料。
前提:
在linux下某个目录中新建一个nginx目录。
然后进入该目录去下载搭建环境所需要的一些资源包。
此处在/root/ 目录下新建一个nginx目录即:
/root/nginx/
====================================
1、安装依赖包:
#yum-yinstallgccglibcglibc-develmakenasmpkgconfiglib-developenssl-develexpat-develgettext-devellibtoolmhash.x86_64perl-Digest-SHA1.x86_64
2、安装相关工具包
1).git
#mkdirsoft-source
#cdsoft-source
#wget:
//codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.xz
#xz-dgit-latest.tar.xz
#tarxzvfgit-latest.tar
#cdgit-2014-06-27
#autoconf
#./configure
#make&&makeinstall
#git--version
gitversion2.0.0.GIT
#cd..
2).zlib
#wget:
//
#tar-zxvfzlib-1.2.8.tar.gzcdzlib-1.2.8
#./configure
#make
#makeinstall
#cd..
3).pcre
#wget:
//exim.mirror.fr/pcre/pcre-8.12.tar.gz
#tarzxvfpcre-8.12.tar.gz
#cdpcre-8.12
#./configure
#make&&makeinstall
#cd..
4).yadmi
yadmi的作用是为flv文件添加关键帧,才能实现拖动播放
#wget:
//
#tarxzvf download
#cdyamdi-1.4
#make&&makeinstall
#cd..
使用方法:
#yamdi-iinput.flv-oout.flv
给input.flv文件添加关键帧,输出为out.flv文件
5).OpenSSL
#wget:
//.openssl.org/source/openssl-1.0.1c.tar.gz
#tar-zxvfopenssl-1.0.1c.tar.gz
#./config
#make
#makeinstall
3、安装ffmpeg及其依赖包:
1).Yasm
#wget:
//
#tarxzvfyasm-1.2.0.tar.gz
#cdyasm-1.2.0
#./configure
#make
#makeinstall
#cd..
2).x264
#gitclonegit:
//git.videolan.org/x264
#cdx264
#./configure--enable-shared
#make
#makeinstall
#cd..
3).LAME
#wget:
//
#tarxzvflame-3.99.5.tar.gz
#cdlame-3.99.5
#./configure--enable-nasm
#make
#makeinstall
#cd..
4).libogg
#wget:
//downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz
#tarxzvflibogg-1.3.0.tar.gz
#cdlibogg-1.3.0
#./configure
#make
#makeinstall
#cd..
5).libvorbis
#wget:
//downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz
#tarxzvflibvorbis-1.3.3.tar.gz
#cdlibvorbis-1.3.3
#./configure
#make
#makeinstall
#cd..
6).libvpx
#gitclone:
//git.chromium.org/webm/libvpx.git
#cdlibvpx
#./configure --enable-shared
#make
#makeinstall
#cd..
7).FAAD2
#wget:
//
#tarzxvffaad2-2.7.tar.gz
#cdfaad2-2.7
#./configure
#make
#makeinstall
#cd..
8).FAAC
#wget:
//
#tarzxvffaac-1.28.tar.gz
#cdfaac-1.28
#./configure
#make
#makeinstall
#cd..
注:
编译时可能遇到一下错误:
mpeg4ip.h:
126:
error:
newdeclaration‘char*strcasestr(constchar*,constchar*)’
解决方法:
从123行开始修改此文件mpeg4ip.h,到129行结束。
修改前:
#ifdef__cplusplus
extern"C"{
#endif
char*strcasestr(constchar*haystack,constchar*needle);
#ifdef__cplusplus
}
#endif
修改后:
#ifdef__cplusplus
extern"C++"{
#endif
constchar*strcasestr(constchar*haystack,constchar*needle);
#ifdef__cplusplus
}
#endif
9).Xvid
#wget:
//downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
#tarzxvfxvidcore-1.3.2.tar.gz
#cdxvidcore/build/generic
#./configure
#make
#makeinstall
#cd..
10).ffmpeg
#gitclonegit:
//source.ffmpeg.org/ffmpeg
#cdffmpeg
#./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&&makeinstall
#cd..
修改/etc/ld.so.conf如下:
includeld.so.conf.d/*.conf
/lib
/lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
/opt/ffmpeg/lib
#ldconfig
二、安装Nginx相关模块
1.模块安装
#wget:
//h264.code-
#tarzxvfnginx_mod_h264_streaming-2.2.7.tar.gz
#gitclonegit:
//
2.创建用户和组
#groupadd
#useradd-g
3.nginx安装
#wget:
//nginx.org/download/nginx-1.6.0.tar.gz
#tarzxvfnginx-1.6.0.tar.gz
#cdnginx-1.6.0
4.编译安装nginx
在nginx-1.6.0目录下新建文件:
nginx_configure.sh
然后使用gedit 打开进行编辑:
#!
/bin/sh
echo"configurestart..."
./configure\
--prefix=/usr/local/nginx\
--sbin-path=/usr/local/nginx/nginx\
--conf-path=/usr/local/nginx/nginx.conf\
--pid-path=/usr/local/nginx/nginx.pid\
--error-log-path=/usr/local/nginx/logs/error.log\
--add-module=../nginx_mod_h264_streaming-2.2.7\
--with-pcre=../pcre-8.12\
--with-zlib=../zlib-1.2.8\
--with-_dav_module\
--with-_flv_module\
--with-_stub_status_module\
--without-_scgi_module\
--without-_uwsgi_module\
--without-_gzip_module\
--without-_ssi_module\
--without-_proxy_module\
--without-_memcached_module\
--without-_empty_gif_module\
--without-mail_pop3_module\
--without-mail_imap_module\
--without-mail_smtp_module\
--with-_ssl_module\
--with-openssl=../openssl-1.0.1c\
--add-module=../nginx-rtmp-module\
--with-cc-opt=-I/opt/ffmpeg/include\
--with-ld-opt=`-L/opt/ffmpeg/lib-Wl,-rpath=/opt/ffmpeg/lib`
echo"configureend!
"
【保存并退出】
#chmod+xnginx_configure.sh
#./nginx_configure.sh
#make
#makeinstall
备注:
在执行make的时候可能出现错误1:
addingmodulein../nginx_mod_h264_streaming-2.2.7
+ngx__h264_streaming_modulewasconfigured
addingmodulein../nginx-rtmp-module
+ngx_rtmp_modulewasconfigured
checkingforOpenSSLlibrary...notfound
./configure:
error:
SSLmodulesrequiretheOpenSSLlibrary.
Youcaneitherdonotenablethemodules,orinstalltheOpenSSLlibrary
intothesystem,orbuildtheOpenSSLlibrarystaticallyfromthesource
withnginxbyusing--with-openssl=
configureend!
root@ubuntu:
/home/song/nginx-t/nginx-1.6.0#make
make:
***Noruletomaketarget`build',neededby`default'. Stop.
解决方法:
a)可以安装ssl
apt-getinstallopenssl
apt-getinstalllibssl-dev
b)也可以添加
--with-openssl=
在执行make的时候可能出现错误2:
/root/nginx_mod_h264_streaming-2.2.7/src/ngx__streaming_module.c:
Infunction‘ngx_streaming_handler’:
/root/nginx_mod_h264_streaming-2.2.7/src/ngx__streaming_module.c:
158:
error:
‘ngx__request_t’hasnomembernamed‘zero_in_uri’
make[1]:
***[objs/addon/src/ngx__h264_streaming_module.o]Error1
make[1]:
Leavingdirectory`/root/nginx-0.8.54'
make:
***[build]Error2
解决方法:
那么将src/ngx__streaming_module.c文件中以下代码删除或者是注释掉就可以了:
/*TODO:
Win32*/
if(r->zero_in_uri)
{
returnNGX_DECLINED;
}
在执行make的时候可能出现错误3:
../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:
在函数‘esds_read’中:
../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:
377:
16:
错误:
变量‘stream_priority’被设定但未被使用[-Werror=unused-but-set-variable]
../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:
376:
12:
错误:
变量‘stream_id’被设定但未被使用[-Werror=unused-but-set-variable]
../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:
在函数‘stsd_parse_vide’中:
../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:
529:
22:
错误:
变量‘level_indication’被设定但未被使用[-Werror=unused-but-set-variable]
../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:
528:
22:
错误:
变量‘profile_compatibility’被设定但未被使用[-Werror=unused-but-set-variable]
../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:
527:
22:
错误:
变量‘profile_indication’被设定但未被使用[-Werror=unused-but-set-variable]
../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:
526:
22:
错误:
变量‘configuration_version’被设定但未被使用[-Werror=unused-but-set-variable]
cc1:
allwarningsbeingtreatedaserrors
make[1]:
***[objs/addon/src/mp4_reader.o]错误1
解决方法:
#vimobjs/Makefile(修改objs/Makefile文件,去掉其中的"-Werror"),然后就能够正常编译了.
然后在make就能过了。
三、配置Nginx相关模块
1.
安装好了之后终端进入 nginx安装的目录:
/usr/local/nginx/html/
然后新建目录:
nginx-rtmp-module
然后拷贝 之前用于存放下载nginx所需资源包的目录:
/root/nginx/nginx-rtmp-module/
拷贝 目录test 到/usr/local/nginx/html/ 目录下:
#cp/root/nginx-rtmp-module/test/usr/local/nginx/html/nginx-rtmp-module/
#cp/root/nginx-rtmp-module/stat.xsl/usr/local/nginx/html/nginx-rtmp-module/
2.
拷贝之后就需要修改/usr/local/nginx/nginx.conf 文件:
下面是配置好的nginx.conf 文件:
#usernobody;
worker_processes4;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
error_loglogs/error.loginfo;
pidlogs/nginx.pid;
worker_rlimit_nofile51200;
events{
useepoll;
worker_connections51200;
}
#切换自动推送(多worker直播流)模式。
默认为off
rtmp_auto_pushon;
#当worker被干掉时设置自动推送连接超时时间。
默认为100毫秒
rtmp_auto_push_reconnect1s;
#设置用于流推送的UNIX域套接字目录。
默认为/tmp
#rtmp_socket_dir/var/sock;
rtmp{
server{
listen1935;
#点播配置
applicationvod{
play/opt/media/nginxrtmp/flv;
}
#直播流配置
applicationlive{
liveon;
#为rtmp引擎设置最大连接数。
默认为off
max_connections1024;
#defaultrecorder
recordall;
record_path/var/rec;
recorderaudio{
recordaudio;
record_suffix-%d-%b-%y-%T.flv;
}
recorderchunked{
recordall;
record_interval15s;
record_path/var/rec/chunked;
}
#on_publish:
//localhost:
8080/publish;
#on_play:
//localhost:
8080/play;
#on_record_done:
//localhost:
8080/record_done;
#rtmp日志设置
#access_loglogs/rtmp_access.lognew;
#access_loglogs/rtmp_access.log;
#access_logoff;
}
#HLS协议支持
#applicationhls{
#liveon;
#hlson;
#hls_path/tmp/app;
#hls_fragment5s;
#}
applicationhls{
liveon;
hlson;
hls_path/usr/local/nginx/html/app;
hls_fragment1s;
}
}
}
{
includemime.types;
default_typeapplication/octet-stream;
#log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'
#'$status$body_bytes_sent"$_referer"'
#'"$_user_agent""$_x_forwarded_for"';
#access_loglogs/access.logmain;
sendfileon;
#tcp_nopushon;
#keepalive_timeout0;
keepalive_timeout65;
#gzipon;
server{
listen80;
server_namelocalhost;
#charsetkoi8-r;
#ac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- nginx 搭建 rtmp 协议 流媒体 服务器 总结