文档章节

安装hls流媒体服务器

hiwill
 hiwill
发布于 2015/08/25 11:32
字数 1047
阅读 2264
收藏 7

平台:centos6.5 x86_64最小化安装


1安装rmpforge源

rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

安装epel源

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

2更新

yum update -y

3安装相关的库

yum install -y automake autoconf make gcc gcc-c++ libtool libvpx bzip2 subversion libjpeg-devel zlib zlib-devel curl curl-devel alsa-lib alsa-lib-devel gettext gettext-devel expat expat-devel libogg theora libtheora-devel xvidcore xvidcore-devel vorbis libvorbis-devel faac-devel  lame-devel amrnb-devel opencore-amr-devel amrwb-devel perl-devel git


4安装yasm汇编器

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

tar zxvf yasm-1.3.0.tar.gz 

cd yasm-1.3.0

./configure 

make && make install


5安装mplayer编码库(仅限64位系统,可选)

wget http://www2.mplayerhq.hu/MPlayer/releases/codecs/essential-amd64-20071007.tar.bz2

tar xjvf essential-amd64-20071007.tar.bz2

mkdir -p /usr/local/lib/codecs

cp -Rvp essential-amd64-20071007/* /usr/local/lib/codecs/

vi /etc/ld.so.conf

添加

/usr/lib 

/usr/local/lib


6安装x264

wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2

tar jxvf last_stable_x264.tar.bz2 

cd x264-snapshot-20150825-2245-stable/  (日期是你当前日期,ls看一下)

./configure --enable-shared --enable-pic

make && make install


7安装libvpx

wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.4.0.tar.bz2

tar jxvf libvpx-v1.4.0.tar.bz2 

cd libvpx-v1.4.0

./configure --enable-shared --enable-pic

make && make install


8安装pkgconfig

curl http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz -o pkgconfig.tgz

tar -zxf pkgconfig.tgz && cd pkg-config-0.28

./configure --with-internal-glib

make && make install

export PKG_CONFIG_PATH=/usr/local/bin/pkg-config:$PKG_CONFIG_PATH


9安装ffmpeg

wget http://ffmpeg.org/releases/ffmpeg-2.7.2.tar.bz2

tar jxvf ffmpeg-2.7.2.tar.bz2

cd ffmpeg-2.7.2

./configure --enable-gpl --enable-version3 --enable-shared --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264

make && make install


10安装mencoder编码器(支持转换rmvb为avi,可选)

yum install -y mplayer mencoder flvtool2

mencoder -oac help 查看音频的

mencoder -oac help 查看视频的


11安装nginx

准备相关模块

yum install -y openssl-devel pcre pcre-devel yamdi


12安装支持flv/mp4播放模块

wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz

tar zxvf nginx_mod_h264_streaming-2.2.7.tar.gz

cd nginx_mod_h264_streaming-2.2.7


修改下源码,注释掉158行到161行

vi ./src/ngx_http_streaming_module.c  

/* TODO: Win32 */

     //if (r->zero_in_uri)

     // {

     //   return NGX_DECLINED;

     // }


13下载支持rtmp/hls协议的模块

wget -O nginx-rtmp-module.zip  https://github.com/arut/nginx-rtmp-module/archive/master.zip

unzip nginx-rtmp-module.zip


下载缓存模块

wget -O ngx_cache_purge.zip https://github.com/FRiCKLE/ngx_cache_purge/archive/master.zip

unzip ngx_cache_purge.zip


安装最新的nginx

wget http://nginx.org/download/nginx-1.9.4.tar.gz

tar zxvf nginx-1.9.4.tar.gz

cd nginx-1.9.4

./configure --user=daemon --group=daemon --prefix=/usr/local/nginx/ --add-module=../nginx-rtmp-module-master --add-module=../ngx_cache_purge-master --add-module=../nginx_mod_h264_streaming-2.2.7 --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_gzip_static_module --with-http_flv_module


make && make install


/usr/local/nginx/sbin/nginx -V  查看安装的模块是否正确

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bk

建立存放视频目录

mkdir /mnt/media/vod /mnt/media/app /mnt/media/vedio


vi /usr/local/nginx/conf/nginx.conf

#filename:nginx.conf

#user  nobody;

worker_processes  1;


error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

pid   logs/nginx.pid;

events {

use epoll;

worker_connections  1024;

}


rtmp {

server {

listen 1935;

chunk_size 4000;


# video on demand

application vod {

play /mnt/media/vod;

}


# HLS

# HLS requires libavformat & should be configured as a separate

# NGINX module in addition to nginx-rtmp-module:

# ./configure … –add-module=/path/to/nginx-rtmp-module/hls …

# For HLS to work please create a directory in tmpfs (/tmp/app here)

# for the fragments. The directory contents is served via HTTP (see

# http{} section in config)

#

# Incoming stream must be in H264/AAC/MP3. For iPhones use baseline H264

# profile (see ffmpeg example).

# This example creates RTMP stream from movie ready for HLS:

#

# ffmpeg -loglevel verbose -re -i movie.avi  -vcodec libx264

#-vprofile baseline -acodec libmp3lame -ar 44100 -ac 1

#-f flv rtmp://localhost:1935/hls/movie

#

# If you need to transcode live stream use ‘exec’ feature.

#

application hls {

hls on;

hls_path /mnt/media/app;

hls_fragment 10s;

}

}

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

gzip on;

 #log format

log_format  access  ‘$remote_addr – $remote_user [$time_local] “$request” ‘

 ‘$status $body_bytes_sent “$http_referer” ‘

 ‘”$http_user_agent” $http_x_forwarded_for’;

 #定义一个名为addr的limit_zone,大小10M内存来存储session

limit_conn_zone $binary_remote_addr zone=addr:10m; 

server {

listen 8080;

 server_name localhost;

 # HTTP can be used for accessing RTMP stats

# This URL provides RTMP statistics in XML

location /stat {

rtmp_stat all;

rtmp_stat_stylesheet stat.xsl;

}

location /stat.xsl {

root /mnt/soft/nginx-rtmp-module-master;

}

 location /control {

rtmp_control all;

}

location / {

root /mnt/soft/nginx-rtmp-module-master/test/rtmp-publisher;

}

}

 server {

listen 80;

 server_name localhost;

 location / {

root /mnt/wwwroot;

index index.html;

  } 

 location ~ \.flv$ {

   root /mnt/media/vod;

 flv;

 limit_conn addr 20;

 limit_rate 200k;

}

location ~ \.mp4$ {

 root /mnt/media/vod;

 mp4;

 limit_conn addr 20;

 limit_rate 200k;

}

 location /hls {

# Serve HLS fragments

alias /mnt/media/app;

}

 access_log  logs/nginxflv_access.log access;

}

}

将nginx添加到系统服务

14安装切片工具segmenter

git clone https://github.com/johnf/m3u8-segmenter.git

cd m3u8-segmenter/

gcc -Wall -g m3u8-segmenter.c -o segmenter -lavformat

cp segmenter /usr/bin/


15测试

上传MP4文件到/mnt/media/video/

将MP4转换为flv格式

cd /mnt/media/video/

ffmpeg -i movie1.mp4 -y -vcodec libx264 -vf scale="640:-1" -r 15 -acodec libfaac ../vod/movie1.flv

cd ../vod

mv movie1.flv movie1-src.flv

添加关键帧以支持拖动播放

yamdi -i movie1-src.flv -o movie1.flv 


将flv转换成ts文件

mkdir /mnt/media/app/movie1

还在vod目录下

ffmpeg -y -i movie1.flv -f mpegts -c:v copy -c:a copy -vbsf h264_mp4toannexb /mnt/media/app/movie1/main.ts


切片

cd /mnt/media/app/movie1/

segmenter -i main.ts -d 10 -p movie1 -m movie1.m3u8 -u http://YOURSERVERIP/hls/movie1/


测试

http://YOURSERVERIP/hls/movie1/movie1.m3u8

本文参考

http://hdu104.com/294


© 著作权归作者所有

hiwill
粉丝 12
博文 132
码字总数 90849
作品 0
朝阳
私信 提问
流媒体技术学习笔记之(一)nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

参照网址: 【1】http://blog.csdn.net/redstarofsleep/article/details/45092147 【2】HLS介绍:http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html 上面这两个流的地址分别......

tinywan1227
2016/09/27
0
0
RTMP、HTTP-FLV、HLS,你了解常见的三大直播协议吗

随着直播行业大火,游戏、乐秀、教育、发布会等直播类产品层出不穷,能够满足各方人员的需求。在直播中,总能在其中找到适合自己的产品内容。喜欢玩游戏的可以看游戏直播,想学点工作技能的,...

又拍云
2018/10/31
0
0
nginx+ ffmpeg 实现 hls直播和点播

一、搭建http服务器: ./configure --add-module=/home/andrew/Work/tools/nginx-rtmp-module --with-httpdavmodule --without-httprewritemodule make && make install /usr/local/nginx/sb......

andrew810810
2016/05/17
1K
0
小玩流媒体播放——HLS流媒体点播系统

背景:前一段时间帮助一个朋友研究了下流媒体播放方面的知识,感觉挺好玩的。现在把浅薄的尝试和总结分享给大家。 一.HLS流媒体点播系统概述 HTTP Live Streaming最初是苹果公司针对其iPhon...

CasparLi
2015/05/28
3.1K
1
EasyNVR互联网监控直播分发出RTMP、HLS、HTTP-FLV视频流说明介绍

背景需求 需求比视频流协议更重要,你想要什么,什么可以满足你的需求,这个很大程度上是需求在前,选择使用什么视频流是比较靠后的。 目前Easy系列互联网直播服务将全线支持HLS、RTMP、HTP...

xiejiashu
01/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【0918】正则介绍_grep

【0918】正则介绍_grep 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 一、正则介绍 正则是一串有规律的字符串,它使用单个字符串来描述或匹配一系列符合某个语法规则的字符串。 二、grep工具 ...

飞翔的竹蜻蜓
32分钟前
4
0
为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
今天
8
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
今天
4
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
今天
5
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部