流媒体技术

在前面的学习中,一直没有介绍网络多媒体文件的播放,网络多媒体文件播放受到网络带宽、文件格式、文件大小等因素的影响,情况变得非常的复。为了提高速度、节省带宽,现在的网络多媒体文件的播放都采用流媒体技术实现播放。广义上讲流媒体技术从传输形式上可以分为:渐进式下载和实时流媒体。

7.1.1 渐进式下载

渐进式下载是介于下载本地播放与实时流媒体之间的一种播放方式,下载本地播放必须全部将文件下载完成后才能播放,而渐进式下载不必等到全部下载完成后再播放,它可以一边下载一边播放,在完成播放内容之后,整个文件会保存在计算机上。

从播放的效果和用户体验上看渐进式下载和实时流媒体是一样的,不同的是渐进式下载本地保留有文件的副本,因此有人把它称为”伪流媒体”,即不是真正意义上的”流媒体”。此外,渐进式下载不能跳过某些数据包进行播放。

7.1.2 实时流媒体

实时流媒体是一边接收数据包一边播放,本地不保留文件副本,数据总是实时传送,可以实现实况转播,支持随机访问,用户可快进或后退以观看前面或后面的内容。实时流媒体传输必须保证数据包的传输速度大于文件的播放速度,否则用户看到的视屏就会暂停。当网络堵塞情况下视屏质量会下降,所以要想保证视屏的质量渐进式下载就会更好一些。

实时流媒体网络传输协议有:RTSP、MMS和HLS。RTSP和MMS这些协议在有防火墙时有时会出现问题,导致用户有些内容无法看到,而且RTSP和MMS需要购买和配置支持他们的专门服务器。

HLS是苹果公司提出的基于HTTP的流媒体网络传输协议。HLS只请求基本的HTTP报文,与RTSP和MMS不同,HLS可以穿过任何允许HTTP数据通过的防火墙。HLS对于服务器没有特殊要求,只要能够提供HTTP服务就可以了,如Apache、Toncat和IIS都可以。

7.2 渐进式下载开发

开发渐进式下载多媒体时,在服务器端和客户端方面都不需要做太多的工作。服务器端只需要将媒体文件放在服务器目录下就可以了,而客户端,也就是我们在iOS平台上编写的程序。

渐进式下载视屏开发所使用的API与6.2节介绍的播放本地文件API没有什么区别,可以使用MediaPlayer框架中的MPMoviePlayerController和MPMoviePlayerViewController进行播放,可以使用AVFoundation框架中的AVPlayer进行播放。

在6.2节中介绍MPMoviePlayerSample实例,它是向大家介绍使用MediaPlayer框架播放视屏的实例,现在我们修改一下把要播放的视屏文件直接放到服务器上。由于MacOSX系统下都有一个APache HTTP服务器,所以我们把要播放的媒体文件YY.mp4放到Apache服务器的目录(/Library/WebServer/Documents)下面,为了便于管理我们在/Library/WebServer/Documents下面创建了子目录stream,服务器目录结构如图7-3

修改6.2节中的MPMoviePlayerSample案例中ViewController的movieURL方法如下:

- (NSURL *)movieURL
{
    return [NSURL URLWithString:@"http://localhost/stream/YY.mp4"];
}

现在返回的NSURL对象内容时来自于服务器上的YY.mp4媒体文件。其他部分的不需要修改。修改完成后,可以运行一下看看效果是否与本地部分一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值