在 iOS 上播放带有透明背景的小 mp4 视频。TSHAlphaVideos 功能强大、性能出色且易于使用。
此视频大小为 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
之前有一些额外的配置标志,如 repeats
和 stopInsteadOfPauseWhenViewEntersBackground
。视图的大小将根据视频文件正确设置。
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;