Http Live Streaming 实现iphone在线播放视频[转]
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
Http Live Streaming 实现iphone在线播放视频[转]相关推荐
- 龙芯版UOS 自带浏览器无法使用flash在线播放视频
龙芯版UOS 自带浏览器无法使用flash在线播放视频 1.案例 无法播放视频 龙芯CPU使用MIPS指令集,用互联网的最新flash(一般情况下,是X86指令集flash),点击下载安装最新flas ...
- 在线视频播放网站服务器配置,在线播放视频网站应该如何选择服务器
原标题:在线播放视频网站应该如何选择服务器 我们都知道视频类应用对服务器的要求是非常高的,特别是在线播放的视频类网站.要满足大量用户同时在线观看视频,并且做到随意拖动进度条都能流畅播放,对服务器的配置 ...
- realplayer java,不同浏览器调用realplayer插件在线播放视频的有关问题,请大神们进来看看...
不同浏览器调用realplayer插件在线播放视频的问题,请大神们进来看看 上面代码是调用realplayer实现在线播放的,在安装realplayer后IE.火狐.chrome都是可以播放的,但是在 ...
- SSM上传,下载,在线播放视频
SSM上传,下载,在线播放视频 前言 基于ckplayer插件的视频在线播放,首先需要下载ckplayer插件.引入你的javaweb项目. 核心代码 上传的Jsp代码 <form method ...
- Exoplayer在线播放视频
谷歌的一个在线播放视频的框架,使用起来非常简单 1.官方地址:https://github.com/google/ExoPlayer 有兴趣的,可以去官方地址,看一下框架的源码,本例子只是介绍简单使用 ...
- android视频恢复播放器,AndroidVideoPlayer在线播放视频
AndroidVideoPlayer在线播放视频 AndroidVideoPlayer在线播放视频,自定义SuperVideoPlayer里面封装了startPlayVideo()播放视频 loadA ...
- 实现pc和手机两终端都可以在线播放视频的一种方法
我是晓文,我来写个博客.目前很多用户的网站,或企业网站要求实现手机在线播放视频,来宣传自己的企业,那么问题来了,如何最简单的快速的实现这样的要求呢?我最近试用了一下酷播云端播放器产品,觉得他们做得还不 ...
- ios AVPlayer无法在线播放视频
最近开发视频功能遇到的问题.公司服务器上放了个mp4格式的视频,给了我链接地址,但是死活都不能在线播放.奇怪的是我从网上另外找了几个视频地址都可以正常播放. 公司服务器上的视频虽然不能在线播,但是下载 ...
- 调试海康在线播放视频
今天调试海康在线播视频碰的问题做下简单记录. 特殊是端口:在外网管理中心的端口,554.444都要开放. 首先根据SDK文档说明,找到appkey和secret(这里碰到问题,API网关菜单没找到,原 ...
最新文章
- ThinkPHP 3.2 Token表单令牌
- 快速生成解决方案 ctrl + shilf + b
- 如何从eclipse迁移到idea
- OpenGL延迟着色之一
- c语言中变量有几种存储方式,C语言变量的存储类别有哪些详细资料介绍
- 重新深入理解零拷贝技术
- WebAssembly已支持所有主流浏览器
- [USACO 4.2] 完美的牛栏
- 未来10年,最具颠覆性的5大指数型技术(附应用建议)
- python datetime datetime
- ActiveMq工作笔记003---SpringBoot集成ActiveMq_随时更新
- 从浏览器输入地址到渲染出网页这个过程发生了什么?
- 如何避免大规模线上故障?
- DATE_FORMAT、when case函数用法
- HCIE-RS面试---交换机原理
- visa虚拟卡生成器_英国虚拟卡 获取多张VISA和Mastercard
- Wpf 初学---01设计一个优美的注册界面
- origin自定义拟合,拟合公式带有复数i怎么办?用matlab能是实现吗?怎么实现呢,可以的话额能否给个示例。
- STM32控制SG90舵机与超声波HC_SR04测距模块
- android启用hdcp_如何在Android的Google键盘中启用单手模式
热门文章
- 【数据结构】栈的编写以及栈的简单应用
- 来自 Dropbox 的可扩展性设计经验
- 登陆126邮箱 出现 403 Forbidden 腾达路由器问题
- IIS6.0服务器架站无法访问解决方案总结
- 安装/卸载.deb文件
- 冲刺第五天 1.6 SUN
- go语言的安装、环境变量配置及简单使用
- 解决树莓派的gpio口不能读取ds18b20的设备文件
- linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)
- Sharepoint学习笔记---Debug--使用ULS Log跟踪Solution错误信息