AKVideoImageView
动机
AKVideoImageView 的创建是因为我在为一款应用实现视频背景时,对标准的 AVPlayer 不满意。主要问题是 AVPlayer 不允许手机进入睡眠模式。另外,当应用进入后台时,您无法从第一帧默默地开始视频。这个类解决了这些问题,并在从最后一帧切换到第一帧时具有更小的延迟。
功能
- 允许手机进入睡眠模式
- 能够动态切换视频
- 当应用从后台返回时,自动切换到视频的第一帧以实现无缝过渡
- 最小内存占用
- 良好的性能
- 能够使用 mp4 文件作为视频源
- 支持 Interface Builder
用法
压缩您的视频文件
在开始使用此类之前,您需要正确地压缩视频。
以下是在 OS X 系统上使用 FFmpeg 工具的 libx264 压缩选项的示例。
ffmpeg -i input.mov -vcodec libx264 -level 3.1 -pix_fmt yuv420p -threads 1 -preset placebo -crf 19 -tune film -x264opts colorprim=bt709:transfer=bt709:colormatrix=bt709:fullrange=off output.mp4
使用 Interface Builder
只需将 UIImageView
拖动到您的 UIView
中,并将其类设置为 AKVideoImageView
。在属性检查器中,将 Video File Name
设置为您的无扩展名的 .mp4
视频文件名。如果需要更多信息,请查看示例项目。
使用代码
Objective-C
#import "AKVideoImageView.h"
NSURL *videoURL = [[NSBundle mainBundle] URLForResource:@"videoName" withExtension:@"mp4"];
AKVideoImageView *videoBG = [[AKVideoImageView alloc] initWithFrame:self.view.bounds
videoURL:videoURL];
[self.view addSubview:videoBG];
[self.view sendSubviewToBack:videoBG];
Swift
import AKVideoImageView
let url = Bundle.main.url(forResource: "video_1", withExtension: "mp4")!
let videoView = AKVideoImageView(frame: view.bounds, videoURL: url)!
view.addSubview(videoView)
动态更改视频
NSURL *videoURL = [[NSBundle mainBundle] URLForResource:@"anotherVideoName" withExtension:@"mp4"];
self.videoBG.videoURL = videoURL;
安装
手动操作
只需将 AKVideoImageView.h 和 AKVideoImageView.m 文件添加到您的项目中即可。
CocoaPods
将以下行添加到您的 Podfile 中。
pod "AKVideoImageView", "~> 1.1"
然后运行 pod install
。
许可协议(MIT)
版权所有 (c) 2017 Oleksandr Kirichenko
准许任何获得本软件和相关文档文件(“软件”)副本的人无限制地使用该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,以及准许向提供该软件的人授予执行上述操作的权限,但受以下条件的约束:
以上版权声明和此许可声明应包含在所有软件的副本或主要部分中。
本软件按"原样"提供,不提供任何形式保证,明示或暗示包括但不限于商品性、针对特定目的适用性和非侵权性。在任何情况下,作者或版权持有人不应对任何索赔、损害或其他责任负责,无论是基于合同、侵权或任何其他行为,无论是源于、关乎还是与该软件或其使用或其他方式有关。