博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中的视频播放
阅读量:6223 次
发布时间:2019-06-21

本文共 1863 字,大约阅读时间需要 6 分钟。

  hot3.png

iOS中的视频播放

    iOS提供了MPMoviePlayerController 和 MPMoviePlayerViewController两个类,可以用来轻松播放视频和网络流媒体\网络音频。这两个类都定义在MediaPlayer框架中。

    YouTobe就是用MPMoviePlayerController实现的。

    MPMoviePlayerViewController只能全屏播放视频。

    网络音频同样可以使用此控制器播放。

MPMoviePlayerController:

    1> 继承自NSObject;

    2> 内部有个view可以展示视频内容;

    3> 将该视图添加到其他控制器的view上,即可显示视频内容。

MPMoviePlayerController可以播放的视频格式包括:H.264 、MPEG-4等。

     支持的文件扩展名包括:avi、mkv、mov、m4v、mp4等。

提示:

    MPMoviePlayerController并不支持所有的视频格式,如果要播放不支持的视频格式,需要借助第三方框架进行解码,如VLC,下载地址: 

    可以从苹果官网:  下载一些用来测试的视频文件,文件都比较小 。

MPMoviePlayerController的使用:

    1> 加载视频资源(如果url为nil同样可以加载);

NSAssert(self.url, @"URL不能为空");[[MPMoviePlayerController alloc] initWithContentURL:self.url];

    2> 显示:通过设置AutoresizingMask属性可以在横竖屏转换时自动调整视图大小 ;

[self.view addSubview:self.moviePlayer.view];

    3> 播放

[self.moviePlayer play];

    4> 全屏

[self.moviePlayer setFullscreen:YES animated:YES];

    MPMoviePlayerController的播放状态是通过通知中心监听的。

常用监听通知事件:

 // 添加播放状态的监听    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; // 1.监听状态变化    [nc addObserver:self selector:@selector(stateChanged) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil]; // 2. 播放完成    [nc addObserver:self selector:@selector(finished) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; // 3. 全屏    [nc addObserver:self selector:@selector(finished) name:MPMoviePlayerDidExitFullscreenNotification object:nil]; // 4. 截屏完成通知    [nc addObserver:self selector:@selector(captureFinished:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:nil];

截屏方法

    // 数组中有多少时间,就通知几次    // MPMovieTimeOptionExact 精确    // MPMovieTimeOptionNearestKeyFrame 大概齐    [self.moviePlayer requestThumbnailImagesAtTimes:@[@(5.0), @(20.0)] timeOption:MPMovieTimeOptionNearestKeyFrame];

NSAssert(断言)在程序开发中的意义:

    1> 断言NSAssert仅在debug版本起作用,用于检查“不应该”发生的情况;

    2> 可以把NSAssert看成一个在任何系统状态下都可以安全使用的无害测试手段。

转载于:https://my.oschina.net/aofe/blog/269278

你可能感兴趣的文章
JDBC的事务
查看>>
Io流的概述
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
JS 对象机制深剖——new 运算符
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
大型网站技术架构(一)大型网站架构演化
查看>>
百度页面分享插件源代码
查看>>
《别做正常的傻瓜》的一些读书心得
查看>>
作业:实现简单的shell sed替换功能和修改haproxy配置文件
查看>>
spring配置多数据源问题
查看>>
Altium 拼板方法以及 注意的 地方
查看>>
团队编程项目作业3-模块测试过程
查看>>
UTF-8的CSV文件用Excel打开会出现乱码的解决方案
查看>>
简明Linux命令行笔记:tail
查看>>
简明Linux命令行笔记:umask
查看>>
验证用户必选CheckBox控件
查看>>
紧跟时代步伐,让我们拥抱MVC 3
查看>>
RubyMine 5 RC 发布,新特性一览
查看>>
云计算里AWS和Azure的探究(4)
查看>>