Http Live Streaming 实现iphone在线播放视频[转]

本文涉及的产品
视频直播,500GB 1个月
播放器SDK+直播LIVE组合试用套餐,播放器+流量+转码 1个月
播放器SDK+超低延时直播RTS组合试用套餐,播放器+流量+转码 1个月
简介:

http://hi.baidu.com/lphack/item/83865611c5f82c8988a956df

本人新手,难免会出错,请各位指点!

 

最近要做一个项目,是通过iphone来播放工厂摄像头录制的视频达到监控设备的目的,要求可以实现点播和直播

对于视频流的操做其实一无所知,但是老同事给我开了一个头,给了我几篇文章,关于苹果http live streaming 流媒体技术的,于是我就从这里入手了。

先讲讲前提基础:

我的系统是:雪豹

需要实现目标是:

           把获得的ts格式的视频,切片成一系列ts文件,在iphone上实现在线播放

好开始了

========================完美分隔符=============================================

HLS简介

         简单来说,Http Live Streaming (HLS)技术就是视频切片技术用于在线播放,也就是使用Http渐进下载视频播放。

因为最早要播放视频,是需要整个文件下载完成后,然后在本地播放。后来出现了流媒体传输技术,才实现了在线播放视频。而HLS就是其中一种。

        之所以称之为视频切片,是因为,HLS技术是需要把获得的视频流(我这里得到的是现成的ts视频文件,如果不是应该需要通过ffmpeg转换吧),然后通过工具切成一系列ts文件(最好每段10秒),最好,同时会生成一个.m3u8的文件,其实m3u8就是一个索引文件,是一个文本,里面记载了一系列ts文件的索引,这些全都放在web服务器。最后通过iphone访问服务器上m3u8的地址,就可以在线播放视频了。

        再讲讲传输的过程,当访问服务器上m3u8文件时,iphone就开始根据这个索引里面的顺序,逐段下载那一系列ts文件,一般下载第一个ts后缓冲结束开始播放,然后后台继续下载,这样循序渐进,达到在线播放的效果。

           下面给出一些参考文章,会有详细的说明的,深入了解HLS的概念还是很有必要的

 

           明了的阐述:HTTP Live Streaming (HLS) 视频直播技术  

           09年老外的文献:iPhone HTTP Streaming with FFMpeg and an Open Source Segmenter

           11年国内的基于那老外的实现:苹果http视频点播技术

   

          以上文章可能有点乱,稍微看看,有个了解就行。

如何实现HLS

         由于我得到的是现成的ts文件,那么就省到了使用ffmpeg转换格式的步骤了。HLS关键的是如何切割视频。可以使用mediaStreamSegmenter和mediaFileSegmenter。前者是分割网络上流媒体的,后者是分割本地文件。苹果还有开源的segmenter,可以注册开发者账号后去论坛下载,可以移植到linux吧。但是对于我还算是比较庆幸,我的系统已经内置了mediaStreamSegmenter(在终端中输入),于是我就直接用这个吧。其他的我并没有研究。

        开始使用mediaStreamSegmenter。对于详细的mediaStreamSegmenter参数使用请参考这里:

                   manpagez: man(manual) pages & more man mediastreamsegmenter(1)

 

 

        我在终端中使用的是如下命令:

mediastreamsegmenter -b http://10.137.103.199/segstream -f /Library/WebServer/Documents/segstream 10.137.103.199:1234

        当然这样不会有任何结果的。

 

 

        mediaStreamSegmenter的使用指南中我们发现,一定要指定[address:port], 那这个怎么来呢?现在就扯开话题讲一下这个ip和端口吧。

        由于他要一个address和port,那么我就查了下资料,给我的苹果机配了服务器,然后自己访问自己。方法如下:

 

系统偏好设置--->共享--->勾选WEb共享, 那结果就如下:

 

 

这就就设置了服务器,因为系统已经集成了Apatch服务器,至于上面两个访问地址,对应的是不同的目录,详细可以参考那个问号按钮。

 

       好了回到正题,这样配置完了后,我发现依然不能使用那个命令来分割文件,关键是连 那个port该写什么都不知道。

 

       

        几经周折,发现如下文章,帮我解决了,

                Having trouble setting up mediastreamsegmenter on Mac OS X 10.6

       他说mediaStreamSegmenter需要一个udp的网络环境,才可以抓去流媒体。需要使用VLC这个播放软件创造udp网络环境。我用的是vlc 1.1.11版本的。

       

 

       然后使用VLC播放我的流文件(可能这样就创造了一种网络流的环境,我是这么认为的),最后终端中就出来了一连串的提示,一切都这么美妙。然后再去看我的目录/Library/WebServer/Documents/segstream ,就出来了一系列ts文件和m3u8文件:

     

最后使用iphone模拟器中mediaPlayer(自己下的)的来访问我这个服务器目录下的m3u8就ok了,如下:

                   

 

这样就实现了iphone的在线视频播放了

 

当然这样的操作只是用手工的分割视频,肯定不符合要求的,但是至少为一无所知的我打开了一条路,让我可以进一步的去探索,这文章只能算是有提示作用,写在这里希望能给同样被HLS困扰的同志们一点点帮助。

顺便提示一下:听过VLC不只是一个开源的播放软件,还可以作为服务器软件,可能它就可以直接实现格式转换和分割任务,所以下面就要好好研究一下VLC了。

这里贡献一篇文章:http://wiki.videolan.org/Documentation:Streaming_HowTo/Streaming_for_the_iPhone

 

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处!




















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sunshine-anycall/p/3352863.html,如需转载请自行联系原作者


相关文章
|
10月前
|
网络协议 Linux iOS开发
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
335 1
|
10月前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
8月前
|
编解码 监控 网络协议
采用Qt+Live555搭建RTSP服务器
Live555是一个跨平台的流媒体开发库,支持多种流媒体协议,包括RTSP、SIP、RTP等,可以帮助我们快速实现视频流的传输和处理。
429 1
采用Qt+Live555搭建RTSP服务器
|
10月前
|
移动开发 网络协议 应用服务中间件
HTTP-FLV详解及分析(一)
HTTP-FLV详解及分析
432 0
|
10月前
|
编解码 索引
HTTP-FLV详解及分析(三)
HTTP-FLV详解及分析
246 0
|
编解码 iOS开发 流计算
调用Live555接收RTSP直播流,转换为Http Live Streaming(iOS直播)协议
调用Live555接收RTSP直播流,转换为Http Live Streaming(iOS直播)协议
579 1
|
存储 编解码 缓存
HTTP Live Streaming直播(iOS直播)技术分析与实现
HTTP Live Streaming直播(iOS直播)技术分析与实现
208 1
|
JavaScript 视频直播 5G
基于阿里云直播实现视频推流(ffmpeg)/拉流(Django2.0)以及在线视频直播播放(支持http/https)功能
由于5g网络的光速推广,视频业务又被推上了风口浪尖,在2019年初我们还在谈论照片,短视频等关键字,而进入2020年,我们津津乐道的就只有视频,视频,还是视频,普通人拿起手机做直播早已不是奢望。
基于阿里云直播实现视频推流(ffmpeg)/拉流(Django2.0)以及在线视频直播播放(支持http/https)功能
|
测试技术 视频直播
RTMP、RTSP、HTTP视频协议详解(附:直播流地址、播放软件)
一、RTMP、RTSP、HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议。理论上这三种都可以用来做视频直播或点播。但通常来说,直播一般用 RTMP、RTSP。而点播用 HTTP。
8063 0