利用nginx搭建http和rtmp协议的流媒体服务器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了利用nginx搭建http和rtmp协议的流媒体服务器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7132字,纯文字阅读大概需要11分钟。
内容图文
利用 nginx 搭建 http 和 rtmp 协议的流媒体服务器
实验目的
:
让
Nginx
支持
flv
和
mp4
格式文件,同时支持
Rtmp
协议;同时打开
rtmp
的
hls
功能
资料:
HTTPLive Streaming
(缩写是
HLS
)是一个由苹果公司提出的基于
HTTP
的流媒体
网络传输协议。
HLS
只请求基本的
HTTP
报文,与实时传输协议(
RTP)
不同,
HLS
可以穿过任何允许
HTTP
数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。
使用ffmpeg来完成对flv、mp4、mp3等格式的转化(点播实验暂时不测试)
一、准备工作
模块
:nginx_mod_h264_streaming(
支持
h264
编码的视频
)
模块:http_flv_module支持flv
模块:http_mp4_module支持mp4
下载地址:
http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
http://nginx.org
https://github.com/arut/nginx-rtmp-module
1
、安装依赖包
:
#yum-y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-develexpat-devel gettext-devel libtool mhash.x86_64perl-Digest-SHA1.x86_64
2
、安装
git
工具
:
#mkdirsoft-source
#cdsoft-source
#wgethttp://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
#tarxzvf git-latest.tar.gz
#cdgit-2013-02-04
#autoconf
#./configure
#make&& make install
# git--version
gitversion 1.8.1.GIT
#cd ..
3
、安装
ffmpeg
及其依赖包:
++++++++Yasm+++++++++++
#wgethttp://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
#tarxzvf yasm-1.2.0.tar.gz
#cdyasm-1.2.0
#./configure
#make
#makeinstall
#cd ..
++++++++x264+++++++++++
#gitclone git://git.videolan.org/x264
#cdx264
#./configure--enable-shared
#make
#makeinstall
#cd ..
++++++++LAME+++++++++++
#wgethttp://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
#tarxzvf lame-3.99.5.tar.gz
#cdlame-3.99.5
#./configure--enable-nasm
#make
#makeinstall
#cd ..
++++++++libogg+++++++++++
#wgethttp://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz
#tarxzvf libogg-1.3.0.tar.gz
#cdlibogg-1.3.0
#./configure
#make
#makeinstall
#cd ..
++++++++libvorbis+++++++++++
#wgethttp://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz
#tarxzvf libvorbis-1.3.3.tar.gz
#cdlibvorbis-1.3.3
#./configure
#make
#makeinstall
#cd ..
++++++++libvpx+++++++++++
#gitclone http://git.chromium.org/webm/libvpx.git
#cdlibvpx
#./configure --enable-shared
#make
#makeinstall
#cd ..
++++++++FAAD2+++++++++++
#wgethttp://downloads.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz
#tarzxvf faad2-2.7.tar.gz
#cdfaad2-2.7
#./configure
#make
#makeinstall
#cd ..
++++++++FAAC+++++++++++
#wgethttp://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz
#tarzxvf faac-1.28.tar.gz
#cdfaac-1.28
#./configure
#make
#makeinstall
#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
constchar *strcasestr(const char*haystack, const char *needle);
#ifdef __cplusplus
}
#endif
++++++++Xvid+++++++++++
#wgethttp://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
#tarzxvf xvidcore-1.3.2.tar.gz
#cdxvidcore/build/generic
#./configure
#make
#makeinstall
cd ..
#gitclone git://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&& make install
#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
由于暂时没有找到合适版本
rtmpmodel ,
所以
,
这里只是做了
flv
和
MP4
的,红色部分暂时不用添加
二、安装Nginx相关模块
#tarzxvf nginx_mod_h264_streaming-2.2.7.tar.gz
#gitclone git://github.com/arut/nginx-rtmp-module.git
#tarzxvf pcre-8.12.tar.gz
#cdpcre-8.12
#./configure
#make&& make install
#tarzxvf nginx-1.2.6.tar.gz
#cdnginx-1.2.6
#./configure--prefix=/usr/local/nginx
--add-module=../nginx_mod_h264_streaming-2.2.7
--with-http_flv_module --with-http_gzip_static_module--with-http_stub_status_module --with-http_mp4_module
--add-module=../nginx-rtmp-module--add-module=../nginx-rtmp-module/hls
--with-cc-opt=-I/opt/ffmpeg/include--with-ld-opt=‘-L/opt/ffmpeg/lib -Wl,-rpath=/opt/ffmpeg/lib‘
#make&& make install
三、修改nginx主配置文件,配置虚拟主机(这里我们暂时只配置和测试点播,直播请看借鉴地址):
user nobody nobody;
worker_processes4;
error_log logs/nginx_error.log info;
pid logs/nginx.pid;
worker_rlimit_nofile51200;
events
{
use epoll;
worker_connections 51200;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m ;
limit_conn_zone $binary_remote_addr zone=perip:256k;
limit_conn_log_level notice;
sendfile on;
tcp_nopush on;
keepalive_timeout 6000;#
测试并发临时调大
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plainapplication/x-javascript text/css application/xml;
gzip_vary on;
#log format
log_format main ‘$remote_addr - $remote_user[$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" $http_x_forwarded_for‘;
#
支持
flv
server
{
listen 80 ;
server_name 192.168.0.33;
root index.html
limit_rate_after5m;
limit_rate512k;
location ~ \.flv$ {
root /media/nginx; -
视频存放地点
flv;
}
location ~ \.mp4$ {
root /media/nginx;
flv;
}
access_log logs/nginxflv_access.log main;
}
下载并安装
yamdi
[root@flv ~]# wgethttp://cdnetworks-kr-2.dl.sourceforge.net/ \
>project/yamdi/yamdi/1.8/yamdi-1.8.tar.gz
[root@flv ~]# tar -zxvf yamdi-1.8.tar.gz
yamdi-1.8
yamdi-1.8/CHANGES
yamdi-1.8/LICENSE
yamdi-1.8/Makefile
yamdi-1.8/Makefile.mingw32
yamdi-1.8/README
yamdi-1.8/man1
yamdi-1.8/yamdi.c
yamdi-1.8/man1/yamdi.1
[root@ flv ~]# cd yamdi-1.8
[root@ flv yamdi-1.8]# make
gcc -O2 -Wall yamdi.c -o yamdi
[root@ flv yamdi-1.8]# make install
install -m 0755 -o root yamdi/usr/local/bin
使用 yamdi
这里我们准备个文件,以便后面使用:
[root@flv html]# yamdi -i 62664.flv -o 7345.flv |
简单的说一下,
-i
表示输入文件,在这里输入文件为62664.flv,即它是没有添加过关键帧的文件;-o表示输出文件,在这里是7345.flv,它是添加过关键帧的,在对这两文件的访问中会发现,播放62664.flv是不能实现拖动操作的,而7345.flv则可以。
下载并设置 JW player
JW player 是一个开源的 FLV 播放器,它现在也支持 MP4 。
[root@flv ~]# wget http://www.longtailvideo.com/jw/upload/mediaplayer-viral.zip [root@flv ~]# unzip mediaplayer-viral.zip Archive: mediaplayer-viral.zip creating: mediaplayer-5.7-viral/ inflating: mediaplayer-5.7-viral/JW Player Quick Start Guide.pdf inflating: mediaplayer-5.7-viral/jwplayer.js inflating: mediaplayer-5.7-viral/license.txt inflating: mediaplayer-5.7-viral/player.swf inflating: mediaplayer-5.7-viral/preview.jpg inflating: mediaplayer-5.7-viral/readme.html inflating: mediaplayer-5.7-viral/swfobject.js inflating: mediaplayer-5.7-viral/video.mp4 |
注意点
注意在解压包中, player.swf 和 jwplayer.js 是我们需要的文件,将其拷贝到 Nginx 的 web 目录下:
[root@flv ~]#cd mediaplayer-5.7-viral/ [root@mail mediaplayer-5.7-viral]# cp jwplayer.js player.swf /usr/local/nginx-1.0.2-flv/html/ |
到现在为止, FLV 服务器已经架设完毕。
我们访问测试一下看:
访问方法:
http://flv.xx.com/player.swf?type=http&file=7345.flv
↑访问协议 ↑FLV服务器地址 ↑播放器名称↑http分发方式↑访问的文件名
本文出自 “crazy_sir” 博客,请务必保留此出处http://douya.blog.51cto.com/6173221/1389162
原文:http://douya.blog.51cto.com/6173221/1389162
内容总结
以上是互联网集市为您收集整理的利用nginx搭建http和rtmp协议的流媒体服务器全部内容,希望文章能够帮你解决利用nginx搭建http和rtmp协议的流媒体服务器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。