搭建nginx流媒体服务器(支持HLS)
环境搭建
(一)下载源代码
nginx,地址:http://nginx.org/可以选择需要的版本下载
nginx_mod_h264_streaming-2.2.7.tar.gz ,支持MP4流,具体的说明在下面的这个网页
http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Nginx-Version2
m3u8-segmenter: HLS分片工具 ,下载地址,https://github.com/johnf/m3u8-segmenter
ffmpeg:媒体编解码工具,这里做为HLS 直播流的发布工具
(二)安装nginx
tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz
tar -zxvf nginx-1.4.4.tar.gz
cd nginx-1.4.4
./configure --prefix=/usr/local/nginx-stream --with-debug --with-http_dav_module --with-http_gzip_static_module --with-http_ssl_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --add-module=../nginx_mod_h264_streaming-2.2.7 --with-http_flv_module --with-http_mp4_module
如果没有出现错误
make
如果出现错误类似:‘ngx_http_request_t’ 没有名为 ‘zero_in_uri’ 的成员,则进入 nginx_mod_h264_streaming-2.2.7目录,进入src,修改 ngx_http_streaming_module.c,注释掉 TODO window32 模块下的:
if (r->zero_in_uri) {
return NGX_DECLINED;
}
然后make clean之后重新configure和make
如果出现错误类似:[objs/addon/src/mp4_reader.o]..进入nginx源码中的obis目录,修改Makefile,删除 --wrror
然后重新编译make
编译通过后
sudo make install
(三)安装 m3u8-segmenter,这个在下载地址中有安装步骤。
(四)安装ffmpeg,在本博客其它日志中有安装方式。
配置
在server模块下加入以下内容:
location /hls {
alias /usr/local/media/hls;
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
add_header Cache-Control no-cache;
expires -1;
}
location ~* \.flv$ {
flv;
root /usr/local/media/flv;
}
location ~* \.mp4$ {
mp4;
root /usr/local/media/mp4;
}
然后保存退出,启动nginx服务器
点播flv,mp4视频
在FLV和MP4的根目录(usr/local/media/flv,/usr/local/media/mp4)分别放入测试视频test.flv和test.mp4
使用ffmpeg中的播放器ffplay测试,
ffplay http://ip:port/test.flv
ffplay http://ip:port/test.mp4
HLS 点播
使用m3u8-segmenter把视频切成一系列TS文件同时生成后缀为m3u8的播放列表,视频编码需为H264/AAC 或者H264/MP3。
进入 /usr/local/media/hls,放入测试文件test.ts,然后使用以下命令分割,
m3u8-segmenter -i testvod.ts -d 10 -p test -m testvod.m3u8 -u http://ip:port/hls/
-i ,输入文件
-d ,每个分片的时长
-p ,每个分片的名称的前缀
-m ,播放列表名称
-u ,播放列表中url前缀
使用ffplay测试:
ffplay http://ip:port/hls/test.m3u8
HLS直播
使用ffmpeg发布直播流,这里没有用设备抓取视频,使用ffmpe 的-re选项来模拟直播流,re表示依照输入视频的帧率
ffmpeg -re -i test.ts -codec copy -hls_time 10 testlive.m3u8
使用ffplay测试
ffplay http://ip:port/hls/testlive.m3u8
注:mp4转ts ,ffmpeg -i test.mp4 -codec copy -vbsf h264_mp4toannexb test.ts
hls协议支持自适应码率,可以使用播放列表的嵌套,nginx-rtmp-module对hls有类似的一些支持
搭建nginx流媒体服务器(支持HLS)的更多相关文章
- 使用Nginx搭建本地流媒体服务器
Mac搭建nginx+rtmp服务器 1.打开终端,查看是否已经安装Homebrew,直接输入命令 man brew 如果Mac已经安装了, 会显示一些命令的帮助信息. 此时输入Q退出即可, 直接进入 ...
- HLS-搭建Nginx流媒体服务器
Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功能相对比较完善的流媒 ...
- 为SRS流媒体服务器添加HLS加密功能(附源码)
为SRS流媒体服务器添加HLS加密功能(附源码) 之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的叫做 ...
- Windows下搭建Nginx图片服务器
在项目最开始,上传图片的时候,服务器先保存原图再使用ImageMagick生成上传图片缩略图,这种方法有很多缺点,例如生成的缩略图的大小是固定的,不能动态请求指定大小的缩略图. 虽然有非常多的图片云存 ...
- Windows环境搭建Red5流媒体服务器指南
Windows环境搭建Red5流媒体服务器指南 测试环境:Windows 7 一. 下载安装程序 red5-server 下载地址 https://github.com/Red5/red5-ser ...
- 搭建Nginx图片服务器
搭建Nginx图片服务器 Part-I 安装Nginx 安装PCRE 下载 ngx_cache_purge 并解压,用来清除缓存 下载Nginx并解压 cd nginx-1.7.7 编译,--pref ...
- Windows环境搭建Red5流媒体服务器指南(转)
Windows环境搭建Red5流媒体服务器指南 Windows环境搭建Red5流媒体服务器指南 测试环境:Windows 7 一. 下载安装程序 red5-server 下载地址 https:// ...
- 第一次项目上Linux服务器(八:——搭建Nginx图片服务器)
一.准备工作 安装Nginx,参考历史博客 二.搭建Nginx图片服务器 1.效果 例如:图片通过xftp服务上传到/home/java/upload目录下,我想通过访问Nginx服务器来访问xftp ...
- Windows环境搭建Red5流媒体服务器
Windows环境搭建Red5流媒体服务器指南 测试环境:Windows 7 一. 下载安装程序 red5-server 下载地址 https://github.com/Red5/red5-ser ...
随机推荐
- FastReport.Net使用:[28]数据合并
基础数据 1.拖动数据源中的数据列到报表设计器中,获得一张简单的报表. 2.下面使用两种方法将期中考试和期末考试的成绩合并到一行显示 合并数据(分组方法) 1.按学生名字和科目来进行分组,成绩文本框咱 ...
- java8新特性——Lambda表达式
上文中简单介绍了一下java8得一些新特性,与优点,也是为本次学习java8新特性制定一个学习的方向,后面几篇会根据上文中得新特性一一展开学习.本文就从java8新特性中比较重要的Lambda表达式开 ...
- Linux下burg引导
用得比较久了,比grub顺手: 安装: sudo add-apt-repository ppa:n-muench/burg; sudo apt-get update; sudo apt-get ins ...
- 「UOJ218」火车管理
「UOJ218」火车管理 解题思路:观察发现,在弹出 \(x\) 之前,它前面这个元素都是保持不变的,所以可以用一棵可持久化线段树维护每一个栈顶元素的插入时间,每次找到当前时间\(-1\) 的版本就可 ...
- poj 1743 后缀数组 求最长不重叠重复子串
题意:有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题. “主题”是整个音符序列的一个子串,它需要满足如下条件:1 ...
- zoj 2966 Build The Electric System 最小生成树
Escape Time II Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showP ...
- CSS的outline属性
input标签的outline的三个属性: outline-color outline-style outline-width 当设置input的focus状态的时候可以使用. input:focus ...
- Jenkins使用jenkins-cli.jar进行远程调用时出现“ERROR: No such job 'test'”或者权限不够等问题解决(Windows)
网上最提倡的解决办法是用SSH的key进行登录,但是我发觉Linux上非常容易实现,但是Windows压根不知道在哪里设置. 原文:https://issues.jenkins-ci.org/brow ...
- 用Javascript轻松制作一套简单的抽奖系统
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN"> <html> <head ...
- JAVA RMI调用实战学习
JAVA RMI 实战示例,参考网址: http://diaoge.iteye.com/blog/245170 这个示例很清楚地阐释了rmi的使用方法, 但示例都是放在一起的, 实际使用中我们可能会将 ...