IOS开发----流媒体

来源:互联网 发布:消防球 淘宝 编辑:程序博客网 时间:2024/05/17 06:41

流媒体技术从传输形式上可以分为:渐进式下载和实施流媒体。
一.渐进式下载
它是介于实时播放和本地播放之间的一种播放方式,渐进式下载不必等到全部下载完成后在播放,可以边下载边播放,播放完成后,整个文件会保存下来。从用户的体验上合播放方的效果来看,渐进式下载和实时流媒体没有什么区别,不过是渐进式下载保留有文件在本地。下面来介绍下渐进式下载的开发
渐进式下载的API和本地播放的API没有什么太大的区别,可以使用MediaPlayer框架中得MediaPlayerController和MediaPlayerViewController进行播放,亦可以使用AVFoundation框架中得AVPlayer进行播放。在mac os系统下都有一个Apache HTTP服务器,首先打开服务,使用命令行:sudo apachectl -v 输入密码后 接着输入 sudo apachectl start 就可以了 然后把要播放的文件放到/Library/WebServer/documents下就可以了
如图这里写图片描述
我们使用MPMoviePlayerViewController播放

if(_moviewPlayer == nil){            _moviewPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[self movieUrl]];            _moviewPlayer.moviePlayer.scalingMode = MPMovieScalingModeAspectFill;            _moviewPlayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finishMoview:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];        }-(NSURL*)movieUrl{    return [NSURL URLWithString:@"http://localhost/stream/stream.mp4"];}-(void)finishMoview:(NSNotification* )notion{    NSLog(@"播放完成");    [[NSNotificationCenter defaultCenter] removeObserver:self];    [_moviewPlayer.view removeFromSuperview];    _moviewPlayer = nil;}

这样就完成了 渐进式下载的开发,效果和本地播放没什么区别。

二,实时流媒体
实时流媒体是一边接收数据包一边进行播放,本地不保留文件副本,数据总是实时传送的。用户可以快进快退,不过,实时流媒体播放必须保证数据包的传输速度大于文件的播放速度,否则影响播放效果。
实时流媒体传输的协议有:RTSP和HLS、MMS。HLS是苹果公司提出的,它只请求基本的HTTP报文,与RTSP和MMS不同,HLS可以穿过任何允许HTTP数据通过的防火墙。而且,HLS对服务器没有特殊要求,只要能够提供HTTP服务就可以了。
HLS的解决方案:首先通过音频或视频采集设备采集数据,然后将数据传递给Server对音频或者视频进行编码,编码要求采用MPEG-2格式,编码完成之后再通过媒体文件分隔工具进行分割,然后再讲这些分割好的文件和他们的索引文件发布到发布服务器上,然后客户端就可以访问了。(ios设备最低要求是 ios3.0以上版本,Safari浏览器最低要求是4.0以上版本)
下一篇重点总结下 实时流媒体服务器配置以及编码。

0 0