Heim  >  Artikel  >  Backend-Entwicklung  >  [Nachdruck] Verwenden Sie Nginx, um einen Streaming-Medienserver für die Protokolle http und rtmp zu erstellen

[Nachdruck] Verwenden Sie Nginx, um einen Streaming-Medienserver für die Protokolle http und rtmp zu erstellen

WBOY
WBOYOriginal
2016-08-08 09:28:561628Durchsuche

Von //http://blog.chedushi.com/archives/6532?utm_source=tuicool

Verwenden Sie Nginx, um einen Streaming-Medienserver mit den Protokollen http und rtmp zu erstellen.

Zweck des Experiments:
Lassen Sie Nginx Dateien im FLV- und MP4-Format unterstützen und gleichzeitig das Rtmp-Protokoll öffnen
Informationen:
HTTP Live Streaming (abgekürzt HLS) ist ein von Apple vorgeschlagenes HTTP-basiertes Streaming-Media-Netzwerkübertragungsprotokoll.
HLS fordert nur einfache HTTP-Nachrichten an. Im Gegensatz zum Real-Time Transport Protocol (RTP) kann HLS jede Firewall oder jeden Proxyserver passieren, der HTTP-Daten passieren lässt. Es ist auch einfach, ein Content-Delivery-Netzwerk zum Streamen von Medien zu nutzen.
Verwenden Sie ffmpeg, um die Konvertierung von FLV, MP4, MP3 und anderen Formaten abzuschließen (das On-Demand-Experiment wird derzeit nicht getestet)
1. Vorbereitungsarbeiten
Modul: nginx_mod_h264_streaming (unterstützt h264-codierte Videos )
Modul: http_flv_module Support flv
Modul: http_mp4_module Support mp4
Modul: nginx-rtmp-module Support rtmp //2015-3-5 add
Download-Adresse:
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. Abhängigkeitspakete installieren:
#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
2. Git-Tools installieren:
#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 ..
3. Installieren Sie ffmpeg und seine abhängigen Pakete:
++++++++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 ..
++++++++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 ..
#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 ..
Ändern Sie /etc/ld.so.conf wie folgt:
include ld.so.conf.d/*.conf
/lib
/ lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
/opt/ffmpeg/lib
#ldconfig
2. Installieren Sie Nginx-bezogene Module
#tar zxvf nginx_mod_h264_streaming-2.2.7.tar.gz
#git clone git://github.com/arut/nginx-rtmp-module.git
#tar zxvf pcre-8.12.tar.gz
#cd pcre-8.12
#./configure
#make && make install
#tar zxvf nginx-1.2.6.tar.gz
#cd nginx-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
3. Ändern Sie die Nginx-Hauptkonfigurationsdatei und konfigurieren Sie den virtuellen Host (hier konfigurieren und testen wir vorerst nur bei Bedarf, bitte sehen Sie sich die Referenzadresse für die Live-Übertragung an):
Benutzer niemand niemand;
worker_processes 4;
error_log logs/nginx_error.log info;
pid logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
#rtmp_auto_push on;
rtmp {
server {
listen 1935;
application vod {
play /opt/media/nginxrtmp/flv;
}
}
}
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/plain application/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 8081;
server_name 192.168.0.33;
root /opt/pub/media/nginx; #http协议时候,flv视频位置
location ~ .*.(flv|swf|mp4|wma|wmv)$ {
valid_referers none blocked *.xxxx.com http://localhost;
if ($invalid_referer) {
return 403;
}
}
location ~ \.flv$ {
flv;
limit_conn one 20;#限制客户端并发连接数
limit_rate 200k;#限制每客户端最大带宽
}
location ~ \.mp4$ {
flv;
limit_conn one 20;
limit_rate 200k;
}
access_log logs/nginxflv_access.log main;
}
server
{
listen 8082;
server_name 192.168.0.33;
index index.html;
location / {
root /opt/pub/media/nginx-rtmp;
}
access_log logs/nginxrtmpflv_access.log main;
}
server {
listen 8080;
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /opt/pub/soft/nginx-rtmp-module;
}
location / {
root /opt/pub/soft/nginx-rtmp-module/test/rtmp-publisher;
}
}
http://192.168.0.33:8080/stats 查看rtmp客户请求信息
http://192.168.0.33:8081/index.html 查看nginx http协议时候的flv视频
http://192.168.0.33:8082/index.html 查看nginx rtmp协议时候的flv视频
四、基本功能测试:
播放器采用开源播放器jwplayer,将播放器放到index.html同级目录下
NGINX-Http测试页面index.html(切记http的时候需要给视频添加关键帧)




test of nginx-http









ndex.cgi?P1_Prod_Version=ShockwaveFlash“ flashvars=“type=http&file=http://192.168.0.33:8081/2.flv&autostart=true“ wmode=“opaq
ue“ /> ;



NGINX-RTMP测试页面index.html




nginx-rtmp









ndex.cgi?P1_Prod_Version=ShockwaveFlash“ flashvars=“streamer=rtmp://192.168.0.33:1935/vod&file=2.flv&autostart=true“ wmode=“o
paque“ />



页面能打开正常播放就说明配置是正确的.
五、并发测试
NGINX-HTTP采用loadrunner测试(略)
NGINX-RTMP采用开源软件flazr测试:
前提需要安装jdk软件
Client .bat rtmp://192.168.0.33:1935/vod/2.flv -load 500定大小的时候就上不去了,故此步截图不忽略.

以上就介绍了【转载】利用Nginx搭建http和rtmp协议的流媒体服务器, 包括了方面的内容, 希望对PHP-Version兴趣的朋友有所帮助.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn