您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页【iOS开发细节】之-用AVPlayer播放视频

【iOS开发细节】之-用AVPlayer播放视频

来源:二三娱乐

*写在前面

在公司上次的小版本迭代中,因为我们现在的项目是奢侈品买卖的平台,所以产品经理要求加入现在绝大多数购物平台中详情页的视频展示功能,所以在几番查找资料中,完成了这个需求,现在将中间遇到的坑分享给大家,希望能帮助有需要的人!

这些方式是苹果高度封装的,播放的样式都是苹果原生的,定制功能极少,使用方法很简单,直接创建,给URL就可以播放,支持本地视频和网络视频。

1、创建

在开始之前我们需要引入两个系统库
[#import <AVKit/AVKit.h>
#import <AVFoundation/AVFoundation.h>
创建方法init或playerItemWithURL或者 initWithURL:在使用 AVPlayer 播放视频时,提供视频信息的是 AVPlayerItem,一个 AVPlayerItem 对应着一个URL视频资源。但是在创建AVPlayerItem的时候AVPlayerItem需要传入一个AVAsset用来加载URL,具体创建代码如下:

创建方法
监听AVPlayItem 的 status 监听的实现方法

如果你想在自动播放结束后做些事情,那我们需要添加一个通知

播放结束后的通知

在通知的实现方法里面做你想要做的事情,比如退出当前页面,或者更改一些状态什么的!

*下面讲一些我在做的时候遇到的一个坑

注意:我没有给视频加控制条,因为我们的需求只是播放短视频,并不需要控制暂停、播放、快进、快退和展示时间!

在我做的时候一个问题一直困扰着我,视频点开播放的时候视频总是不能够自适应屏幕我刚开始的时候出来的效果是这样的

AVLayerVideoGravityResizeAspectFill视频示例1

整个视频是以高为最大边,横向拉伸的,所以可以看出来屏幕两边都已经超出了屏幕的显示范围

我起初就知道这肯定是由某个枚举控制的值来控制拉伸的,但是不知道是、还是的某个枚举值,找了很久,一直没找到,我就先搁置了,直到项目要上线的时候,其他东西都写完了,我觉得这个东西必须得搞一下的时候,我又重新看了一下我写过的代码,让我不小心看到了一个属性:,这个属性是,让我找的好苦,它有三个值分别是:

videoGravity的三个属性值

在我一一试过之后,我觉得柳暗花明,内心无比的痛快,每每解决一个bug的时候内心都是这种感觉,原来我刚开始的时候就有设置这个值,只不过我设置成了,所以它是满屏显示的,然后我调成了其他的值 、然后它的显示效果是这样的

AVLayerVideoGravityResize视频示例2

其实它也是满屏显示的,只不过纵向做了压缩,搞的本来是横向的视频被压缩的竖向显示了,然后我换了最后一种方

视频示例3

这样设置以后,视频终于正常显示了,显示不到的地方都是黑色的,视频也没有被拉伸,显示的这个问题已经完美的被解决了,其实不设置的话默认的值就是这个,但是我都不知道我怎么设置上的,我也是醉了!

还有一点,也不能算叫做坑,是一个不足吧,有些朋友在这样做以后,发现视频可以播放了,但是没有声音,这里我们需要加入一行代码,来支持外放

支持外放

最后:我给大家的讲解,一般都是没有直接上代码的,都是截图,因为我想要大家自己敲出来,不想大家直接复制粘贴,这样可以加深对代码的映像(我会告诉你,因为我觉得这样比较好看么[捂眼笑])

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务