`

Nginx+ffmpeg的HLS开源服务器搭建配置及开发详解

阅读更多

本文概述:

          至目前为止,HLS 是移动平台上非常重要并十分流行的流媒体传输协议。做移动平台的流媒体开发,不知道它不掌握它 ,真是一大遗憾。而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋友,将方案实施中的一些细节和流程进行分享交流。本文介绍了,使用开源服务器nginx 搭建 HLS 服务比较详细的方案。测试使用 VLC以及JWPlayer播放。交流邮箱leoluopy@gmail.com,本文出自CSDN-固本培元。转载请注明出处。

切片器:

         HLS 是按照切片发送流媒体子块的,切片当然不可少。

         编译和使用的命令如下,可以参考。

编译m3u8-segment 修改makefile

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. all:  
  2.     gcc -Wall -g segmenter.c -o segmenter -lm -lbz2 -lz -lpthread -lavformat -lavcodec -lavutil -std=c99  
  3.   
  4. clean:  
  5.     rm segmenter  
  6.   
  7. install: segmenter  
  8.     cp segmenter /usr/local/bin/  
  9.   
  10. uninstall:  
  11.     rm /usr/local/bin/segmenter  

 

 

参考segmenter和ffmpeg转换ts流以及分片的命令:

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. 使用ffmpeg将测试视频和音频转为mpeg ts格式文件  
  2.   
  3. 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  
  4.   
  5. 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  
  6.   
  7. cd /var/app/10year  
  8.   
  9. segmenter -i 10year.ts -d 5 -o 10year -x 10year.m3u8  
  10.   
  11. cd /var/app/baluobu  
  12.   
  13. segmenter -i baluobu.ts -d 5 -o buluobu -x baluobu.m3u8  

 

 

切片之后如下图所示:

 

服务器搭建:

         在切片完成后,只需要一个nginx服务器,HLS服务端就可以正常开始工作啦。
 

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才能正常播放。

 

 

 

参考文章:

nginx上搭建HLS流媒体服务器

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

RTMP,RTSP,HLS比较与分析

http://blog.csdn.net/xiaoliouc/article/details/8613935

RTMP/RTP/RTSP/RTCP的区别

http://blog.csdn.net/xiaoliouc/article/details/8613935

分享到:
评论
1 楼 kangh 2016-06-20  
转载的也拿出来  都不试一下  完全错误

相关推荐

    使用 Nginx+FFmpeg搭建HLS直播转码服务器完整可用的 修复不可用连接.rar

    总之,使用Nginx+FFmpeg搭建的HLS直播转码服务器是一种高效且灵活的解决方案,能够满足不同场景下的直播需求。在实际操作中,需要注意服务器配置、网络环境、转码参数等多方面因素,确保直播服务的稳定性和流畅性。

    搭建ffmpeg+nginx+yasm 流媒体服务器低延迟,最低延迟两三秒

    搭建ffmpeg+nginx+yasm流媒体服务器低延迟 一、流媒体服务器概念 流媒体服务器是指能够实时地传输和处理视频流的服务器,通常用于直播、监控、在线视频等应用场景中。搭建流媒体服务器需要选择合适的软件和硬件...

    nginx+ffmpeg+demo.zip

    这个压缩包提供了编译完成的Nginx服务器、FFmpeg工具集以及一个前端展示的示例。 【Nginx】是一个高性能的HTTP和反向代理服务器,广泛应用于Web服务。在这里,Nginx作为视频流服务器,它接收FFmpeg生成的视频流,并...

    nginx+ffmpeg.zip

    总的来说,"nginx+ffmpeg.zip"提供了一个完整的解决方案,让用户能够搭建一个实时音视频流服务器,支持从各种来源接收流,将其转码为适应不同网络条件的HLS格式,并通过标准的HTTP协议分发给客户端。这在在线教育、...

    用FFmpeg+nginx+rtmp搭建环境实现推流.docx

    FFmpeg、nginx、rtmp三者结合可以实现一个强大且高效的流媒体服务器,下面是它们的详细介绍和搭建过程。 FFmpeg FFmpeg是一款功能强大的开源命令行工具,能够处理视频和音频文件。它可以用于视频和音频的编解码、...

    nginx+ffmpeg.rar

    5. 配置播放器:在客户端,可以使用各种开源或商业播放器(如JW Player、HLS.js等)来播放Nginx服务器上的音视频流。 6. 测试与优化:完成基础配置后,需要进行测试以确保一切正常工作。根据实际需求,可能还需要对...

    Linux环境傻瓜式nginx+rtmp+ffmpeg套餐安装详解(获取拉流人数)

    本文旨在提供一套完整的Linux环境下Nginx、RTMP和FFmpeg的安装及配置指南,帮助读者快速搭建功能强大的流媒体服务器。文章不仅涵盖了基本概念介绍,还深入解析了各组件的具体安装步骤和配置方法。此外,还将介绍如何...

    nginx+ffmpeg,利用自己的笔记本和手机搭建直播工具

    【标题】:“nginx+ffmpeg,利用自己的笔记本和手机搭建直播工具”揭示了如何利用这两个开源软件在个人设备上创建一个简单的直播系统。Nginx是一个高性能的Web服务器,而FFmpeg则是一个强大的多媒体处理框架,它们...

    flv+nginx+vue+ffmpeg

    综上所述,这个项目可能涉及到搭建一个基于Nginx-RTMP的流媒体服务器,使用Vue.js构建前端播放器界面,利用FFmpeg处理音频文件以满足服务器要求,最终用户可以通过VLC等播放器进行观看。这个过程涵盖了从后端服务器...

    nginx-1.7.11.3-Gryphon+rtmpModule+Native HLS Playback插件+ffmpeg-x

    标题中的"nginx-1.7.11.3-Gryphon+rtmpModule+Native HLS Playback插件+ffmpeg-x"揭示了这个压缩包包含了几个关键的组件,它们都是用于搭建和优化流媒体服务器的工具。这里我们将深入探讨这些组件的作用和它们在IT...

    nginx-1.24.0-Gryphon+rtmpModule+Native HLS Playback插件+ffmpeg-x

    Native HLS Playback插件可能是为了在不依赖第三方库的情况下,让Nginx服务器支持原生的HLS播放。这使得客户端可以直接通过内置的HLS支持进行播放,无需额外的软件或插件,提高了兼容性和效率。 **FFmpeg** FFmpeg...

    NGINX+FFMPEG

    4. 创建M3U8切片:如果需要支持HLS流,可以在Nginx配置中添加 HLS 相关配置,并使用FFmpeg生成M3U8索引文件: ```nginx http { ... server { ... location /hls { alias /path/to/hls/; # 指定HLS目录 add_...

    nginx-rtmp+ffmpeg——livepush.war包

    【标题】"nginx-rtmp+ffmpeg——livepush.war包" 涉及到的是...在实际部署时,需要正确配置Nginx和Nginx-RTMP模块,利用FFmpeg将RTSP流转换为RTMP,最后通过`livepush.war`或类似工具将内容推送到服务器,供观众观看。

    使用Tomcat或Nginx搭建视频服务器

    在描述中,提到了在Ubuntu系统上使用Nginx进行视频服务器的搭建,并且使用ffmpeg来处理视频文件为HLS协议的分片以支持视频点播。HLS(HTTP Live Streaming)是苹果公司开发的一种视频流媒体传输协议,使得视频可以...

    ffmpeg+nginx+vlc

    FFmpeg、Nginx-RTMP 模块和 VLC 是三个在实时流媒体处理和播放领域中不可或缺的工具。它们各自扮演着不同的角色,共同构建了一个高效、灵活的流媒体解决方案。 FFmpeg 是一个强大的开源命令行工具,用于处理各种...

    NGINX and FFMPEG.rar

    在提供的"配置文档.docx"中,可能包含了如何配置Nginx服务器和FFMPEG的具体参数及指令,以及可能遇到的问题和解决方法。 **文件"ffmpeg_nginx2020.rar"** 这个RAR文件可能包含了最新的FFMPEG和Nginx-RTMP模块的...

    nginx(已经配置好了nginx-rtmp-module)+VLC(可播放rtmp)+ffmpeng

    本教程将详细介绍如何利用Nginx(已配置了nginx-rtmp-module)、VLC和ffmpeg来搭建一个RTMP直播系统,支持海康威视等监控设备的视频流接入。 【nginx-rtmp-module】是Nginx的一个扩展模块,专门用于处理RTMP协议的...

    nginx、FFmpeg转流文件Java源码

    总的来说,这个项目涉及到了Java编程、Nginx流媒体服务器的配置与使用,以及FFmpeg的命令行操作。对于开发基于Java的多媒体流服务或者需要处理多媒体文件转换的开发者来说,这个源码可以作为很好的学习和参考材料。...

    FFmpeg+Nginx海康大华威视rtsp转rtmp

    FFmpeg和Nginx RTMP模块是两种广泛用于视频流处理的技术。FFmpeg是一个开源的跨平台工具包,用于处理音频和...这个过程中,开发者需要理解各种协议的特性以及FFmpeg和Nginx的配置,才能有效地搭建和优化视频流系统。

    nginx和ffmpeg实现摄像头页面实时播放

    在服务器端,我们需要在nginx配置文件中添加rtmp模块的相关设置,指定接收流的服务器端点,并设置 HLS 或 DASH 相关的指令。以下是一个基本的rtmp模块配置示例: ```nginx rtmp { server { listen 1935; chunk_...

Global site tag (gtag.js) - Google Analytics