添加视频背景视图的最佳做法是啥?

Posted

技术标签:

【中文标题】添加视频背景视图的最佳做法是啥?【英文标题】:What is the best practice add video background view?添加视频背景视图的最佳做法是什么? 【发布时间】:2015-06-22 09:06:59 【问题描述】:

我想在应用程序“Uber”中添加带有视频(或 gif)的背景视图 我想在我的应用中长时间使用视频背景视图。

我想知道这些问题的答案:

其中哪些会消耗更少的电池能量 我可以在 iPhone 或 iPad 上使用它吗 此方法的性能

报名表截图

【问题讨论】:

“最佳实践”问题不鼓励提问者表现出努力。因为它们不适合 Stack Overflow。 meta.stackexchange.com/questions/142353/… 我同意你的观点,但是如果我想长时间使用那种或其他方式的背景视图,我想知道,它们中的哪一个会消耗更少的电池能量,我可以在上面使用它吗? iPhone 或 iPad。 所以你的问题只是一个很好的例子,为什么最佳实践问题不好:有人应该如何通过询问最佳实践来预测这一点? 现在您得到了 5 个不再回答您编辑的问题的答案。 @vikingosegundo 下次我会更聪明... 【参考方案1】:

首先,

您有两个主要选择:使用带有 GIF 的 imageView使用带有 AVPlayer 或 MPMoviePlayerController 的视频作为背景。你可以找到很多关于这两种方式的例子,这里有一些:

use a GIF for cool background video cover ios

回答您的问题:

其中哪些会消耗更少的电池能量

通常使用视频:正如用户所指出的,vikingosegundo 视频通常经过优化,其编解码器处理 GPU;显示 GIF 应该是唯一的“CPU 作业”,因为它只是显示帧循环。因此,能量比较是在一个简单的帧循环 (GIF) 和一个可以通过多种方式加速的更复杂的帧循环(视频)之间进行的。然而,根据我的经验,一个小的 GIF 无论如何都能提供良好的性能。

我可以在 iPhone 或 iPad 上使用它吗

两者都有,但你必须小心纵横比和自动布局约束

此方法的性能

在这两种情况下都非常出色,但您必须注意 GIF 或视频的大小:文件(GIF 或视频)越大,性能应该越差。对于视频更准确地说,质量越高,性能越差,而视频的持续时间不应该受到影响。

【讨论】:

为什么gif会消耗更少的能量? 感谢您的回答@MassimoPolimeni,我想我会在性能和质量之间找到中庸之道。 @vikingosegundo 我添加了更多信息:) 现在我的答案更准确了。 @TikhonovAlexander ;) 玩得开心并做一些测试以找到最佳选择 我没有可依赖的真实数据。但是我看到我的计算机的 cpu 用于显示短 GIF,但通常不会显示 2 小时长的大分辨率 MPG。视频经过高度优化,其编解码器处理 GPU。我对 GIF 表示怀疑。 这是一个很好的观点。我看到小 GIF 在设备上的消耗非常小,但我从未对与视频的比较进行过如此多的调查。因此,感谢您对此发表评论,您让我搜索了有关它的更多信息,并且我肯定会更新我的答案!【参考方案2】:

背景视频播放库示例源代码的流行和开源库之一,从下面的链接下载

    VideoCover-iOS-Demo AMLoginViewController Uses GPUImage For Filter videos.

希望对您有帮助。

【讨论】:

完全满足您的要求@TikhonovAlexander【参考方案3】:

您可以为此目的使用许多开源组件。

比如这个支持GIF,电影播放

https://github.com/kaiinui/KIChameleonView

或者这个用于 GIF 播放

https://github.com/liyong03/YLGIFImage

【讨论】:

【参考方案4】:

您可以直接使用视频并以重复模式播放,

您可以将图像与UIImageView 类的默认animationImages 属性一起使用。

如下图,

 YourImageView.animationImages = [NSArray arrayWithObjects:  
                                   [UIImage imageNamed:@"sample_1.png"],
                                   [UIImage imageNamed:@"sample_2.png"],
                                   [UIImage imageNamed:@"sample_3.png"],
                                   [UIImage imageNamed:@"sample_4.png"],
                                   [UIImage imageNamed:@"sample_5.png"],
                                   nil];

 // How many seconds it should take to go through all images one time.
 YourImageView.animationDuration = 5.0;

 // How many times to repeat the animation (0 for indefinitely).
 YourImageView.animationRepeatCount = 4;

 [YourImageView startAnimating];

希望对你有所帮助。

【讨论】:

【参考方案5】:

您可以使用.png.jpeg 格式的图像集来实现此目的,并将图像分配给UIImageView

UIImageView *backgroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 548)];

//Add images which will be used for the animation using an array. Here I have created an array on the fly
NSMutableArray *drawingImgs = [NSMutableArray array];
[drawingImgs addObject:[UIImage imageNamed:@"image1.png"]];
[drawingImgs addObject:[UIImage imageNamed:@"image2.png"]];
[drawingImgs addObject:[UIImage imageNamed:@"image3.png"]];
[drawingImgs addObject:[UIImage imageNamed:@"image4.png"]];
[drawingImgs addObject:[UIImage imageNamed:@"image5.png"]];

backgroundImageView.animationImages = drawingImgs;
//Set the duration of the entire animation
backgroundImageView.animationDuration = 0.5;

//Set the repeat count. If you don't set that value, by default will be a loop (infinite)
backgroundImageView.animationRepeatCount = 1;

//Start the animationrepeatcount
[backgroundImageView startAnimating];

【讨论】:

【参考方案6】:

我使用了 xCode 7 和 iOS 9。 我使用了 gif 图像,它可以正常工作。

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Name of your image" ofType:@"gif"];
    NSData *gif = [NSData dataWithContentsOfFile:filePath];
    UIWebView *webViewBG = [[UIWebView alloc] initWithFrame:self.view.frame];
    [webViewBG loadData:gif MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];
    webViewBG.userInteractionEnabled = NO;
    [self.view addSubview:webViewBG];

【讨论】:

以上是关于添加视频背景视图的最佳做法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

生成视频缩略图的最佳方法是啥?

在 SwiftUI 中,如何将视频循环添加为全屏背景图像?

我可以将具有透明背景的视频放在视频视图中吗

使用 python 进行视频编辑:为有声视频添加背景音乐

在 iOS 中实现永久动画背景的最佳技术是啥?

使用拆分背景设置垂直表格样式的最佳方法是啥