Wirksamste Methode für Video als Hintergrund in iOS

Möglicherweise haben Sie einen der neuesten Trends in iOS-Apps bemerkt: Verwenden von Videos als Hintergrund - hauptsächlich beim Anmelden oder beim ersten Start. Gestern habe ich versucht, dies mit einem sehr einfachen Testprojekt nachzuahmen (nur ein View-Controller), und ich bin mit den Ergebnissen zufrieden, mit Ausnahme desPerformanc. Beim Ausprobieren im iOS-Simulator (auf einem simulierten iPhone 6) wird dasCPU auslastun schwankt zwischen 70-110%. Dies erscheint für einen einfachen Anmeldebildschirm sehr unangemessen.

So sieht es in Aktion aus:http: //oi57.tinypic.com/nqqntv.jp

Die Frage ist dann: Gibt es eine CPU-effektivere Möglichkeit, dies zu erreichen? Wie machen die Apps wie Vine, Spotify und Instagram das?

Bevor Sie antworten; Als Methode habe ich ein Full-HD-Video verwendet, das mit MPMoviePlayerController wiedergegeben wurde:

- (void)viewDidLoad {
    [super viewDidLoad];

    // find movie file
    NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"arenaVideo" ofType:@"mp4"];
    NSURL *movieURL = [NSURL fileURLWithPath:moviePath];

    // load movie
    self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
    self.moviePlayer.controlStyle = MPMovieControlStyleNone;
    self.moviePlayer.view.frame = self.view.frame;
    self.moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
    [self.view addSubview:self.moviePlayer.view];
    [self.view sendSubviewToBack:self.moviePlayer.view];
    [self.moviePlayer play];

    // loop movie
    [[NSNotificationCenter defaultCenter] addObserver: self
                                             selector: @selector(replayMovie:)
                                                 name: MPMoviePlayerPlaybackDidFinishNotification
                                               object: self.moviePlayer];
}

#pragma mark - Helper methods

-(void)replayMovie:(NSNotification *)notification
{
    [self.moviePlayer play];
}

Natürlich könnten die Ränder des Videos so beschnitten werden, dass die Auflösung etwa 700 x 1080 statt 1920 x 1080 beträgt, aber hätte dies einen großen Unterschied in der Leistung bewirkt? Oder sollte ich das Video mit einem bestimmten Format und Einstellungen komprimieren, um eine optimale Leistung zu erzielen? Vielleicht gibt es dafür einen völlig alternativen Ansatz?

Eigentlich habe ich versucht, GIFs zu verwenden, wie in diesem Artikel beschrieben:https: //medium.com/swift-programming/ios-make-an-awesome-video-background-view-objective-c-swift-318e1d71d0a

Das Problem dabei ist:

Das Erstellen von GIFs aus Videos erfordert viel Zeit und MüheIch habe keine signifikante Verringerung der CPU-Auslastung festgestellt, als ich es ausprobiert habeDas Unterstützen mehrerer Bildschirmgrößen ist bei diesem Ansatz ein großes Problem (zumindest als ich es versuchte - mit aktivierter Autolayout- und Größenklasse - konnte ich das GIF nicht für eine korrekte Skalierung über Geräte hinweg erhalten)Qualität des Videos ist schlecht

Antworten auf die Frage(5)

Ihre Antwort auf die Frage