TSHAlphaVideos 1.1.0

TSHAlphaVideos 1.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 自定义
发布最后发布2015年9月

Tyler Sheaffer 维护。



  • tsheaff 和 ctscoville

在 iOS 上播放带有透明背景的小 mp4 视频。TSHAlphaVideos 功能强大、性能出色且易于使用。

Example

此视频大小为 53kb,远小于 PNG 系列或 mov。

安装

如果您在使用 CocoaPods(您应该这么做),那么请在 Podfile 中添加以下行

pod 'TSHAlphaVideos'

否则,只需将文件从 此处 拖放到您的项目中。

无论哪种方式,您还需要在您的rake 路径中获取 alpha_video.rake 的一个副本。

视频处理

您需要从一个带有 Alpha 通道的 .mov 文件开始。AVPlayer 可以直接播放此文件,但是这样可能需要捆绑或下载一个非常大的文件 -- 带有 Alpha 通道的 mov 文件每分钟可能接近或超过 100MB。

使用 AfterEffects 或您选择的视频渲染软件将您的 .mov 预乘(蒙版)导出。(在 AfterEffects 中,请选择支持 Alpha 的 Animation 编码,而不是 H264 或其他任何编码)

然后,在您的 rake 路径中有 alpha_video.rake,运行

rake split_mov /path/to/matted/my_awesome_video.mov

您将收到提示安装两个依赖项 1 2。第二个依赖项,AVAnimatorUtils,将要求您手动下载 tarball 并将可执行文件包含在您的 $PATH

一旦安装了这些依赖项,脚本就应该运行,并且产生一系列结果文件。这些文件看起来像

my_awesome_video_audio.wav
my_awesome_video_alpha.mp4
my_awesome_video_rgb.mp4
my_awesome_video_no_audio.mp4
my_awesome_video.mp4

如果您没有最终的合成版本,那是因为您的视频没有音频。只需使用合成的 *_no_audio.mp4。无论哪种方式,这将是包含在您的应用程序包中的文件。

此文件的大小应该远远小于您的 .mov,可能大一个或多个数量级。

用法

现在您有了合成的 RGB 和 Alpha 通道并排,我们将使用 TSHAlphaVideos 向您的用户显示它们。这是一个非常简单的过程,就像在屏幕上添加一个 UIImageView 一样简单。

TSHAlphaVideoController *myAwesomeVideo = [TSHAlphaVideoController videoWithRGBVideoFile:@"my_awesome_video"
                                                                            withDelegate:self];
[self.view addSubview:myAwesomeVideo.view];
[myAwesomeVideo play];

那就是所有了。TSHAlphaVideoController 在调用 play 之前有一些额外的配置标志,如 repeatsstopInsteadOfPauseWhenViewEntersBackground。视图的大小将根据视频文件正确设置。

TSHAlphaVideoDelegate 对一系列有用的消息做出响应,这些都是可选的

- (void)alphaVideoWillPlay:(TSHAlphaVideoController *)alphaVideo;
- (void)alphaVideoDidPlay:(TSHAlphaVideoController *)alphaVideo;

- (void)        alphaVideo:(TSHAlphaVideoController *)alphaVideo
didPlayFrameAtTimeInterval:(NSTimeInterval)timeInterval
      previousTimeInterval:(NSTimeInterval)previousTimeInterval;

- (BOOL)alphaVideoShouldStop:(TSHAlphaVideoController *)alphaVideo;
- (void)alphaVideoWillStop:(TSHAlphaVideoController *)alphaVideo;
- (void)alphaVideoDidStop:(TSHAlphaVideoController *)alphaVideo;

- (void)memoryWarningStoppedVideo:(TSHAlphaVideoController *)alphaVideo;