Nginx+ffmpeg的HLS开源服务器搭建配置及开发详
本文概述:
至目前为止,HLS 是移动平台上非常重要并十分流行的流媒体传输协议。做移动平台的流媒体开发,不知道它不掌握它 ,真是一大遗憾。而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋友,将方案实施中的一些细节和流程进行分享交流。本文介绍了,使用开源服务器nginx 搭建 HLS 服务比较详细的方案。测试使用 VLC以及JWPlayer播放。交流邮箱leoluopy@gmail.com,本文出自CSDN-固本培元。转载请注明出处。
切片器:
HLS 是按照切片发送流媒体子块的,切片当然不可少。
编译和使用的命令如下,可以参考。
编译m3u8-segment 修改makefile
- all:
- gcc -Wall -g segmenter.c -o segmenter -lm -lbz2 -lz -lpthread -lavformat -lavcodec -lavutil -std=c99
- clean:
- rm segmenter
- install: segmenter
- cp segmenter /usr/local/bin/
- uninstall:
- rm /usr/local/bin/segmenter
参考segmenter和ffmpeg转换ts流以及分片的命令:
- 使用ffmpeg将测试视频和音频转为mpeg ts格式文件
- ffmpeg -i /var/flvs/baluobu.flv -f mpegts -acodec libmp3lame -ar 48000 -ab 128k -vcodec libx264 -b 96k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 96k -bufsize 96k -rc_eq ‘blurCplx^(1-qComp)’ -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 320:240 -g 30 -async 2 /var/app/baluobu/baluobu.ts
- ffmpeg -i /var/flvs/10year.mp3 -f mpegts -acodec libmp3lame -ar 48000 -ab 128k -vcodec libx264 -b 96k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 96k -bufsize 96k -rc_eq ‘blurCplx^(1-qComp)’ -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 320:240 -g 30 -async 2 /var/app/10year/10year.ts
- cd /var/app/10year
- segmenter -i 10year.ts -d 5 -o 10year -x 10year.m3u8
- cd /var/app/baluobu
- segmenter -i baluobu.ts -d 5 -o buluobu -x baluobu.m3u8
切片之后如下图所示:
服务器搭建:
nginx服务器下载地址:
http://nginx.org/en/linux_packages.html#stable
PCRE下载地址:
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
过程很简单。不多说了。如果不清楚,详细的可以阅读文章尾的参考文章。如果还有问题的话可以发邮件交流:leoluopy@gmail.com。
安装完成后如下图:
测试:
搭建完成后使用vlc检测效果成功如下图:
有的时候如果ts的编码存在问题,在跳转播放时间时不能正常反应,同时网页测试时也不能通过,下面是网页测试的一个地址:
即: HLSProvider - HLS Flash Plugin for JWPlayer
http://streambox.fr/HLSProvider/jwplayer6/
同时还有flash的安全文件需要加入后html才能正常播放。
参考文章:
http://blog.csdn.net/cjsafty/article/details/7922849
如何用nginx+ffmpeg实现苹果HLS协议 (http living stream)
http://blog.csdn.net/funkri/article/details/10192095
ffmpeg+HLS的工程示例
http://jueshizhanhun.blog.51cto.com/4372226/1368768
基于HTTP Live Streaming(HLS) 搭建在线点播系统
http://blog.csdn.net/funkri/article/details/10946027
nginx安装教程:
http://wwwzhouhui.iteye.com/blog/1305512
http://blog.csdn.net/xiaoliouc/article/details/8613935
RTMP/RTP/RTSP/RTCP的区别
http://blog.csdn.net/xiaoliouc/article/details/8613935
Nginx+ffmpeg的HLS开源服务器搭建配置及开发详的更多相关文章
- 转:Nginx+ffmpeg的HLS开源服务器搭建配置及开发详解
转:http://itindex.net/detail/51186-nginx-ffmpeg-hls 本文概述: 至目前为止,HLS 是移动平台上非常重要并十分流行的流媒体传输协议.做移动平台的流媒体 ...
- Nginx+ffmpeg的HLS开源server搭建配置及开发具体解释
本文概述: 至眼下为止.HLS 是移动平台上很重要并十分流行的流媒体传输协议.做移动平台的流媒体开发,不知道它不掌握它 .真是一大遗憾.而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋友 ...
- Linux下SVN服务器搭建配置
Linux下SVN服务器搭建配置 1.SVN服务安装 yum install subversion 2.创建SVN代码仓库 mkdir /data/svn svnadmin create /data/ ...
- rtmp与hls流媒体服务器搭建:ubuntu下Nginx搭建初探与rtmp-module的添加
关键词:Nignx(http服务器):rtmp,hls(流媒体服务) 前言:感谢开源,感谢战斗民族.现在在做流媒体服务的一些工作,流媒体服务器搭建的网上教程多入牛毛,但是细细查看,发现很多同志贴上来的 ...
- Samba服务器搭建配置
本次环境: 服务端-centos6.8-192.168.2.200 客户端1-centos6.8-192.168.2.201 客户端2-Windows7-192.168.2.104 假设条件如下: 使 ...
- Redis服务器搭建/配置/及Jedis客户端的使用方法
摘要 Redis服务器搭建.常用参数含意说明.主从配置.以及使用Jedis客户端来操作Redis Redis服务器搭建 安装 在命令行执行下面的命令: $ wget http://download.r ...
- 基于nginx的HLS简单服务器搭建
一,首先搭建nginx服务器: 1.1,选定源码目录 选定目录 /usr/local/HLS cd /usr/local/HLS 1.2,安装PCRE库 cd /usr/local/HLS 到www. ...
- Nginx 怎么给一台服务器,配置两个域名?详细的解说+截图教程
一. 环境.条件准备 一台云服务器(我的是腾讯的centos7) 至少两个域名.(我的是simuhunluo.xyz和simuhunluo.top.这两个域名之间没有任何关系,我是在阿里 ...
- Linux 下搭建jsp服务器(配置jsp开发环境)
Linux 做为服务器的高效一直时为人所熟知的了,在linux 上搭建各种各样的服务器和开发环境也时学计算机的人常做的.以下时最近在linux配置jsp服务器的全过程,包含一些基本步骤和排错过程: 1 ...
随机推荐
- Window系统下MongoDB安装及远程访问
1.编辑mongodb 安装文件夹bin\mongod.cfg 把bindIP 改为 127.0.0.1, 192.168.1.180(局域网IP) 可以参考https://blog.csdn.net ...
- 石子合并DP
DP Time Limit:3000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu Submit Status Pra ...
- Ajax 中的高级请求和响应
一.概述 在本文中,重点介绍这个请求对象的 3 个关键部分的内容: 1.HTTP 就绪状态 2.HTTP 状态代码 3.可以生成的请求类型 这三部分内容都是在构造一个请求时所要考虑的因素:但是介绍这些 ...
- Java基础 - 变量的定义和使用
变量定义 public class Main { public static void main(String[] args) { // 定义byte类型的变量 byte b = 10; System ...
- IO密集型操作时,为什么线程比进程更好?
在IO密集型的操作时,进程线程都不会太占用CPU,但是进程消耗的资源比较多.
- python+NLTK 自然语言学习处理五:词典资源
前面介绍了很多NLTK中携带的词典资源,这些词典资源对于我们处理文本是有大的作用的,比如实现这样一个功能,寻找由egivronl几个字母组成的单词.且组成的单词每个字母的次数不得超过egivronl中 ...
- CentOS7 添加用户到 sudoers
1.在装完系统后,CentOS默认普通用户是无法使用sudo命令的,这时我们就需要将登陆的用户加入/etc/sudoers 文件中 假设用户名是yhd 3.切换到超级用户:$ su - 当然输入的 p ...
- python 常用的字符串方法
st = ' hello Kitty 'str = 'hello {name} {age}' #print(st.format(name='fadfa'))#常用的字符串方法print(st.coun ...
- EntityFramework 学习 一 Entity Lifecycle 实体生命周期
当我们执行CRUD(Create,Read,Update,Delete)操作之前,最重要的是搞明白实体的生命周期和EntityFrameword怎么管理实体 在一个实体的生命周期里,每个实体都有一个实 ...
- STL头文件有哪些及简单介绍
#include <iostream>标准输入输出cin cout等 #include <algorithm> 算法库 如sort find等 #include <vec ...