`

HLS

 
阅读更多

OS设备上要用原生的浏览器或者播放器来跑直播流媒体,确实是有点费周折,不过找对了软件和方法就相对容易许多。收集了一下关于iOS设备上搭建直播流媒体服务器的一些解决方案,如下: 1、凤雨小城,HLS 简介,http://www.vexx.cn/blog/read.php?240 2、dancong , wowza服务器无法将RTMP的流播放到iOS上(已解决),http://www.cocoachina.com/bbs/read.php?tid-47849.html HLS简介 - rainstown (小城秋雨) HLS(HTTP Live Streaming)是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的基于HTTP协议的流媒体解决方案。 在 HLS 技术中 Web 服务器向客户端提供接近实时的音视频流。但在使用的过程中是使用的标准的 HTTP 协议,所以这时,只要使用 HLS 的技术,就能在普通的 HTTP 的应用上直接提供点播和直播。 在App Store中的视频相关的应用,基本都是应用的此种技术。 该技术基本原理是将视频文件或视频流切分成小片(ts)并建立索引文件(m3u8)。支持的视频流编码为H.264,音频流编码为AAC。 m3u8文件示例: #EXTM3U #EXT-X-TARGETDURATION:10 #EXTINF:10, http://192.168.1.36/vod/tt/tt-1.ts #EXTINF:10, http://192.168.1.36/vod/tt/tt-2.ts #EXTINF:10, http://192.168.1.36/vod/tt/tt-3.ts #EXT-X-ENDLIST 可以在iOS或Mac OS上通过quicktime或safari(其实还是调用quicktime)来进行播放。 下面分点播和直播分别进行一下介绍。 点播: 苹果官方提供了Segmenter软件,参数如下: segmenter <segment duration in seconds><output mpeg-ts file prefix><output m3u8 index file><http prefix> 示例: segmenter youku.m2ts 10 tt/tt index.m3u8 http://192.168.1.36/vod/ 注意:输入文件必须为MPEG2TS格式。对我们的mp4文件来说,必须先进行一次容器格式转换才能进行分割。分割命令: ffmpeg -i youku.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb youku.m2ts 我们下一阶段要做的视频分割项目,针对iOS平台的播放,可以考虑采用此种方式。只是若如此做,存储成本会加倍.。 直播: 客户端软件推送H.264视频流和AAC音频流到服务器软件,服务器软件将接收到的流每缓存一定时间后包装为一个新的ts文件,然后更新m3u8文件.。m3u8文件中只保留最新的几个片段的索引,以保证观众任何时候连接进来都会看到较新的内容,实现近似直播的效果。这种方式的理论最小延时为一个ts文件的时长,一般为2-3个ts文件的时长。 苹果没有官方的HLS直播服务器软件和客户端软件。其它第三方公司的产品有: ·  TVersity ·  Helix Universal Server ·  Wowza Media Server ·  VLC Media Player version 1.2 我采用Helix Universal Server和Helix Producer(客户端软件)进行了直播测试。 若要做针对iOS平台的直播,目前来看,只能采用此种方式。但在其它平台(除了iOS和Mac之外)上无法观看直播,也决定了此种直播方式的应用场景暂时具有相当的局限性,只能作为常规直播方式的一种补充。 wowza服务器无法将RTMP的流播放到iOS上(已解决) 我现在需要将本地Macbook的rtmp的视频流直播到iOS上,准备采用wowza作为服务器。 我按照这个教程用FlashMediaLiveEncoder 3.2 采集本机的iSight视频后,按视频H.264, Baseline 3.0, 音频 AAC为格式输出rtmp协议的流。复制代码 . FMS URL里填rtmp://localhost:1935/live . Stream里填mp4:myStream 我在本地按wowza官方的配置方法配完后,Mac OS X 网页上可以用jwplayer直接以:复制代码 . var flashvars = { . file:'myStream', . streamer:'rtmp://localhost/live/' . }; 这种方式播放rtmp流,说明wowza已经接收到rtmp流了。 问题是,用iOS访问“http://localhost:1935/live/myStream.sdp/playlist.m3u8”,结果iOS虽然出现播放界面,但是报错“File not found”,查看wowza控制台报错,说:复制代码 . INFO stream create myStream.sdp - . WARN server comment - HTTPStreamerAdapterCupertinoStreaming.getAppInstance: Stream not found [live/myStream.sdp/playlist.m3u8]: myStream.sdp . WARN server comment - HTTPStreamerAdapterCupertinoStreaming.getAppInstance: Stream not found [live/myStream.sdp/playlist.m3u8]: myStream.sdp . INFO stream destroy myStream.sdp - 说明访问到了wowza,但是wowza无法将rtmp流转成myStream。 我看过了Apple官方的HTTP live stream的文档,说需要segmenter将视频流切分成多个ts的视频文件和m3u8的播放列表,我觉得这些都是wowza负责实现的。 请问如何配置wowza才能将rtmp流转成Apple HTTP live stream。 另外,虽然wowza要求SDP文件,但是我不知道怎么生成SDP文件,而且网上有人说不用SDP文件也可以。是因为这个SDP缺失导致的吗?如何生成SDP? 解决方案: 根本不用生成SDP。 原来是iOS上的访问地址被官方误导了,晕死,官网上的竟然是错的。URL里不需要写“.sdp”,应该是http://localhost:1935/live/myStream/playlist.m3u8就可以了。</http></output></output></segment>

分享到:
评论

相关推荐

    hls拉流实例1,hls推流,C#

    本实例主要关注C#环境下如何实现HLS拉流和推流,以及如何创建一个简单的HLS拉流播放器。以下是关于HLS拉流、推流及C#实现的相关知识点: 1. **HLS协议**:HLS通过将多媒体内容切割成小段的TS(Transport Stream)...

    RGB_To_HLS.rar_HLS_HLS色彩变换_RGB to H_rgb to hls_rgb转换hls公式

    RGB到HLS(Hue, Lightness, Saturation)色彩空间的转换是计算机图形学中的一个常见任务,尤其在图像处理和色彩分析中扮演着重要角色。RGB色彩模型是我们日常生活中最直观的颜色表示方式,它基于红(Red)、绿...

    HLS.js加密

    在这个例子中,`hls.loadSource()`方法加载了M3U8播放列表,`hls.attachMedia()`方法将HLS实例与`&lt;video&gt;`元素关联,从而开始播放加密的HLS流。 总的来说,HLS.js加密涉及到的内容包括HLS协议、M3U8播放列表解析、...

    HLS 压力测试 解释

    ### HLS压力测试详解 #### 一、HLS (HTTP Live Streaming) 概念与原理 HTTP Live Streaming(HLS)是一种由苹果公司开发的基于HTTP的流媒体传输协议,主要用于实时视频流或预录制视频的分发。HLS通过将视频内容...

    HLS协议官方文档

    根据提供的文件内容,这份文档是关于HLS协议的第七版官方文档。HLS的主要作用是将无边界(不受限制)的多媒体数据流从服务器传输到客户端,并定义了文件的数据格式以及服务器(发送者)和客户端(接收者)应当执行的...

    海康摄像头HLS视频播放示例

    本示例主要探讨如何通过HLS协议在浏览器上实现海康摄像头视频的播放。 首先,我们来理解HLS的基本工作原理。HLS将视频流分割成多个小的TS(Transport Stream)文件,每个文件通常包含几秒钟的视频内容。服务器会...

    基于Intel FPGA的HLS应用.pdf

    1、HLS基本知识介绍 1 1.1HLS简介 1 1.2 Intel HLS的编译器 1 1.3 x86仿真 2 1.4联合仿真 5 1.5 HTML报告 8 1.6默认的接口 10 1.7查看仿真波形 11 1.8 Intel Quartus 软件集成 11 2、HLS模块的接口 13 2.1Avalon接口...

    ZYNQ之HLS开发指南_V1.1.pdf

    【领航者ZYNQ之HLS开发指南】是一份专为Zynq系列FPGA开发板提供的HLS(High-Level Synthesis,高层综合)使用教程。这份指南内容详尽,适合初学者入门,旨在帮助用户理解并掌握如何在Zynq FPGA上进行基于HLS的开发...

    HLS进行c simulation没有hls-opencv.h的文件,出现Segmentation fault

    在使用HLS(High-Level Synthesis,高层次综合)进行C语言模拟时,如果遇到“hls-opencv.h”文件缺失并伴随“Segmentation fault”的错误,这通常涉及到OpenCV库在HLS项目中的集成问题。OpenCV是一个广泛使用的...

    hls拉流实例1,hls推流,C#源码.rar

    在本实例中,我们关注的是HLS的拉流和推流技术,以及C#语言实现的相关源码。下面将详细介绍HLS拉流、推流的概念及其在C#中的实现。 一、HLS拉流 HLS拉流是指客户端通过HTTP请求从服务器端获取HLS流的过程。客户端...

    Vivado HLS之Fir滤波器实现

    在本文中,我们将深入探讨如何使用Xilinx的Vivado High-Level Synthesis (HLS)工具来实现一个FIR(Finite Impulse Response)滤波器。FIR滤波器是数字信号处理领域中的一个重要组成部分,它广泛应用于音频、图像和...

    hls.js-master_hls.js_hlsjs_mediasource_mp3播放器_

    hls.js是一个JavaScript库,可实现HTTP Live Streaming客户端。...它通过将MPEG-2传输流和AAC / MP3流转换为ISO BMFF(MP4)片段来工作。...hls.js用ECMAScript6编写,并使用Babel在ECMAScript5中转译。

    H5视频播放工具hls.js

    6. 事件监听:hls.js提供了多种事件,如`hls.on('levelloaded', callback)`,可以监听到当前播放的视频质量变化,方便进行用户界面更新或其他定制逻辑。 7. 缓存策略:为了优化播放体验,hls.js会缓存已加载的TS...

    Flash 播放器的插件支持HLS播放

    这些插件通常是开发者或者第三方工具提供的,例如压缩包中的"osmf-hls-plugin-master",这可能是一个开源项目,用于扩展Open Source Media Framework (OSMF)以支持HLS播放。OSMF是Adobe提供的一个灵活的媒体管理框架...

    XILINX VITIS HLS 2021.2例程

    Xilinx Vitis HLS 2021.2是一款高级综合工具,用于将C,C++或OpenCL软件代码转换为可部署在Xilinx FPGA(现场可编程门阵列)上的硬件描述语言(HDL)实现。这个工具允许设计者利用高级编程语言的便利性和FPGA的并行...

    HLS opencv编译库

    在FPGA(Field-Programmable Gate Array)平台上,利用High-Level Synthesis(HLS)技术可以将高级语言(如C++)编写的代码转化为硬件描述语言(如Verilog或VHDL),从而实现高效的硬件加速。Vitis HLS是Xilinx公司...

    videojs-contrib-hls.js资源

    《videojs-contrib-hls.js:实现HLS直播流播放的关键技术》 在现代网络视频播放领域,HTML5的Video元素已经成为了主流,然而对于HTTP Live Streaming(HLS)这种流媒体协议的支持,浏览器原生并不完全兼容。为了...

    ug1399-vitis-hls_HLS_

    《Xilinx Vivado HLS在HLS设计中的深度解析》 Xilinx Vivado HLS(High-Level Synthesis,高级综合)是Xilinx公司推出的一款强大的硬件描述语言工具,它允许工程师使用C、C++或SystemC等高级语言进行硬件设计,极大...

    Vivado HLS教程.pdf

    Vivado HLS(High-Level Synthesis)是一款由Xilinx公司提供的工具,用于将高级语言(如C、C++)编写的算法转换为FPGA(Field-Programmable Gate Array)可执行的硬件描述语言(HLS)。这款工具使得软件工程师也能...

Global site tag (gtag.js) - Google Analytics