FFMPEG和HLS

Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功能相对比较完善的流媒体服务器.

nginx配合ffmpeg做流媒体服务器的原理是: nginx通过rtmp模块提供rtmp服务, ffmpeg推送一个rtmp流到nginx, 然后客户端通过访问nginx来收看实时视频流. HLS也是差不多的原理,只是最终客户端是通过HTTP协议来访问的,但是ffmpeg推送流仍然是rtmp的.

现在我们的流媒体服务器有两个实时流了,一个是rtmp的,另一个是hls的,用流媒体播放器播放一下,流媒体播放器可以用vlc也可以用ffmpeg带的ffplay.手机也是可以播放的.

HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议 等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件 (MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从 服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防 火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟 一般总是会高于普通的流媒体直播协议。

时间: 2024-11-01 00:42:05

FFMPEG和HLS的相关文章

ffmpeg 解决hls拖放的问题

apple 的hls方案,采用ffmpeg转码的ts流,播放时会渐渐变得音画不同步,sohu源的处理办法是每隔5分钟加一次discontinue标签,但是这个标签会导致原生播放器重启,表现得有点卡.针对这种情况,改造播放器,不让重启,直接读取下一个流是比较好的办法.但是ffmpeg处理hls的播放存在其它一些问题:1.每遇到discontinue时,显示的播放时长会清零:2.只能在第一个discontinue前进行拖放.本文针对这个问题,对ffmpeg进行改造,使对hls源更优雅的适配. 重点修

使用ffmpeg搭建HLS直播系统

[时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, ffmpeg,live,直播,点播, nginx, ssegment] 0 引言 本文作为HLS综述的后续文章. 主要目的是使用ffmpeg搭建一个简单的HLS点播及直播系统.使用nginx作为HTTP服务器. HLS不管点播还是直播,都是基于HTTP的文件分发系统,所以本文的基本思路是: 使用nginx搭建HTTP服务器 使用ffmpeg实现ts文件的分片,并生成m3u8 ffmpeg使用本地文件模拟HLS

使用Nginx+FFMPEG搭建HLS直播转码服务器

目的:使Nginx支持Rtmp协议推流,并支持hls分发功能及FFMPEG转码多码率功能. 一.准备工作 模块:nginx-rtmp-module-master(支持rtmp协议) 下载地址: http://nginx.org https://github.com/arut/nginx-rtmp-module 1.安装依赖包: #yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel exp

FFmpeg中HLS文件解析源码

不少人都在找FFmpeg中是否有hls(m3u8)解析的源码,其实是有的.就是ffmpeg/libavformat/hlsproto.c,它依赖的文件也在那个目录中. /* * Apple HTTP Live Streaming Protocol Handler * Copyright (c) 2010 Martin Storsjo * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute

使用FFmpeg生成HLS视频

准备 1.  准备高质量音视频源文件. 2. 编译安装必要的软件 a. ffmpeg  b. nginx 3. 测试环境配置 修改nginx中的nginx.conf配置文件,当前以阿里云预装的CentOS为例: 修改命令:                vim /etc/nginx/conf.d/default.conf 直接编辑该文件,加入如下配置: #音频路径                location /audios{                    alias /share/w

Nginx+ffmpeg的HLS开源server搭建配置及开发具体解释

本文概述: 至眼下为止.HLS 是移动平台上很重要并十分流行的流媒体传输协议.做移动平台的流媒体开发,不知道它不掌握它 .真是一大遗憾.而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋友,将方案实施中的一些细节和流程进行分享交流.本文介绍了.使用开源servernginx 搭建 HLS 服务比較具体的方案.測试使用 VLC以及JWPlayer播放. 切片器: HLS 是依照切片发送流媒体子块的,切片当然不可少. 编译和使用的命令例如以下,能够參考. 编译m3u8-segment 改

使用Nginx+FFMPEG搭建HLS直播服务器

 目的:使Nginx支持Rtmp协议推流,并支持hls分发功能 一.准备工作 模块:nginx-rtmp-module-master(支持rtmp协议) 下载地址: http://nginx.org https://github.com/arut/nginx-rtmp-module 1.安装依赖包: #yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-devel get

基于ffmpeg生成hls(代码)

代码在 最简单的基于FFMPEG的转码程序(雷霄骅) 基础上简单修改 参考 基于ffmpeg的转码代码(转码为hls) https://pan.baidu.com/s/1w-fF5Ojz8M1ajKsc4DKdrg 1 /* 2 *最简单的基于FFmpeg的转码器 3 *Simplest FFmpeg Transcoder 4 * 5 *雷霄骅 Lei Xiaohua 6 *[email protected] 7 *中国传媒大学/数字电视技术 8 *Communication Universit

M3U8 的简单实现 nginx+ffmpeg

一.概念 M3U8是一种格式  用于分段请求数据来实现流媒体的技术 二.nginx的安装 先下载:http://nginx.org/download/nginx-1.5.10.zip 修改config中mime 加上: application/x-mpegURL m3u8; application/vnd.apple.mpegurl m3u8; video/MP2T ts; 修改域名端口配置,双击 nginx.exe运行  具体安装参考: windows下一分钟配置ngnix实现HLS m3u8