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,如需转载请自行联系原作者

Http Live Streaming 实现iphone在线播放视频[转]相关推荐

  1. 龙芯版UOS 自带浏览器无法使用flash在线播放视频

    龙芯版UOS 自带浏览器无法使用flash在线播放视频 1.案例 无法播放视频 龙芯CPU使用MIPS指令集,用互联网的最新flash(一般情况下,是X86指令集flash),点击下载安装最新flas ...

  2. 在线视频播放网站服务器配置,在线播放视频网站应该如何选择服务器

    原标题:在线播放视频网站应该如何选择服务器 我们都知道视频类应用对服务器的要求是非常高的,特别是在线播放的视频类网站.要满足大量用户同时在线观看视频,并且做到随意拖动进度条都能流畅播放,对服务器的配置 ...

  3. realplayer java,不同浏览器调用realplayer插件在线播放视频的有关问题,请大神们进来看看...

    不同浏览器调用realplayer插件在线播放视频的问题,请大神们进来看看 上面代码是调用realplayer实现在线播放的,在安装realplayer后IE.火狐.chrome都是可以播放的,但是在 ...

  4. SSM上传,下载,在线播放视频

    SSM上传,下载,在线播放视频 前言 基于ckplayer插件的视频在线播放,首先需要下载ckplayer插件.引入你的javaweb项目. 核心代码 上传的Jsp代码 <form method ...

  5. Exoplayer在线播放视频

    谷歌的一个在线播放视频的框架,使用起来非常简单 1.官方地址:https://github.com/google/ExoPlayer 有兴趣的,可以去官方地址,看一下框架的源码,本例子只是介绍简单使用 ...

  6. android视频恢复播放器,AndroidVideoPlayer在线播放视频

    AndroidVideoPlayer在线播放视频 AndroidVideoPlayer在线播放视频,自定义SuperVideoPlayer里面封装了startPlayVideo()播放视频 loadA ...

  7. 实现pc和手机两终端都可以在线播放视频的一种方法

    我是晓文,我来写个博客.目前很多用户的网站,或企业网站要求实现手机在线播放视频,来宣传自己的企业,那么问题来了,如何最简单的快速的实现这样的要求呢?我最近试用了一下酷播云端播放器产品,觉得他们做得还不 ...

  8. ios AVPlayer无法在线播放视频

    最近开发视频功能遇到的问题.公司服务器上放了个mp4格式的视频,给了我链接地址,但是死活都不能在线播放.奇怪的是我从网上另外找了几个视频地址都可以正常播放. 公司服务器上的视频虽然不能在线播,但是下载 ...

  9. 调试海康在线播放视频

    今天调试海康在线播视频碰的问题做下简单记录. 特殊是端口:在外网管理中心的端口,554.444都要开放. 首先根据SDK文档说明,找到appkey和secret(这里碰到问题,API网关菜单没找到,原 ...

最新文章

  1. ThinkPHP 3.2 Token表单令牌
  2. 快速生成解决方案 ctrl + shilf + b
  3. 如何从eclipse迁移到idea
  4. OpenGL延迟着色之一
  5. c语言中变量有几种存储方式,C语言变量的存储类别有哪些详细资料介绍
  6. 重新深入理解零拷贝技术
  7. WebAssembly已支持所有主流浏览器
  8. [USACO 4.2] 完美的牛栏
  9. 未来10年,最具颠覆性的5大指数型技术(附应用建议)
  10. python datetime datetime
  11. ActiveMq工作笔记003---SpringBoot集成ActiveMq_随时更新
  12. 从浏览器输入地址到渲染出网页这个过程发生了什么?
  13. 如何避免大规模线上故障?
  14. DATE_FORMAT、when case函数用法
  15. HCIE-RS面试---交换机原理
  16. visa虚拟卡生成器_英国虚拟卡 获取多张VISA和Mastercard
  17. Wpf 初学---01设计一个优美的注册界面
  18. origin自定义拟合,拟合公式带有复数i怎么办?用matlab能是实现吗?怎么实现呢,可以的话额能否给个示例。
  19. STM32控制SG90舵机与超声波HC_SR04测距模块
  20. android启用hdcp_如何在Android的Google键盘中启用单手模式

热门文章

  1. 【数据结构】栈的编写以及栈的简单应用
  2. 来自 Dropbox 的可扩展性设计经验
  3. 登陆126邮箱 出现 403 Forbidden 腾达路由器问题
  4. IIS6.0服务器架站无法访问解决方案总结
  5. 安装/卸载.deb文件
  6. 冲刺第五天 1.6 SUN
  7. go语言的安装、环境变量配置及简单使用
  8. 解决树莓派的gpio口不能读取ds18b20的设备文件
  9. linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)
  10. Sharepoint学习笔记---Debug--使用ULS Log跟踪Solution错误信息