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

本文涉及的产品
视频直播,500GB 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 ,如需转载请自行联系原作者

相关文章
|
开发框架 .NET
ueditor上传大容量视频报http请求错误的解决方法
故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报“http请求错误”的解决方法详解; 原因分析: 目前很多CMS整合了百度的ueditor编辑器,但是上传稍微大一点的文件就会报错, 解决方案 1:修改相对应的ueditor\asp\config.
3042 0
Bad Request, Resolved [org.springframework.http.converter.HttpMessageNotReadableException,跟着视频仔细比对
Bad Request, Resolved [org.springframework.http.converter.HttpMessageNotReadableException,跟着视频仔细比对
|
5月前
|
Windows
Windows【工具 01】视频下载工具BBDown.exe详细使用说明(https://github.com/nilaoda/BBDown)mp4格式无法识别问题处理(最新版本1.6.1网盘分享)
Windows【工具 01】视频下载工具BBDown.exe详细使用说明(https://github.com/nilaoda/BBDown)mp4格式无法识别问题处理(最新版本1.6.1网盘分享)
503 0
|
编解码 iOS开发 流计算
调用Live555接收RTSP直播流,转换为Http Live Streaming(iOS直播)协议
调用Live555接收RTSP直播流,转换为Http Live Streaming(iOS直播)协议
473 1
|
存储 编解码 缓存
HTTP Live Streaming直播(iOS直播)技术分析与实现
HTTP Live Streaming直播(iOS直播)技术分析与实现
173 1
|
数据采集 存储 数据库
HTTP代理如何爬取?保姆式教程(附测试视频)
我们可以使用Python中的requests和beautifulsoup库来获取并解析这些信息。
HTTP代理如何爬取?保姆式教程(附测试视频)
|
Java 测试技术 Android开发
Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试
Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试
137 0
|
JavaScript 视频直播 5G
基于阿里云直播实现视频推流(ffmpeg)/拉流(Django2.0)以及在线视频直播播放(支持http/https)功能
由于5g网络的光速推广,视频业务又被推上了风口浪尖,在2019年初我们还在谈论照片,短视频等关键字,而进入2020年,我们津津乐道的就只有视频,视频,还是视频,普通人拿起手机做直播早已不是奢望。
基于阿里云直播实现视频推流(ffmpeg)/拉流(Django2.0)以及在线视频直播播放(支持http/https)功能
|
Web App开发 流计算 C++
The best Site to Watch Live Cricket Streaming and Scores
UC Cricketis an Indian cricket news website which features news, articles, live coverageof cricket matches including videos, GIFs, scorecards, text c.
866 0

热门文章

最新文章