L'émulation splash vidéo dans une application iOS
OK, il y a très peu d'options pour émuler le démarrage de la vidéo dans iOS. Tout ce que nous pouvons faire est d'attendre jusqu'à l'application est entièrement chargé et ensuite créer Media Player et de la charge de la vidéo en elle.
J'ai mis en place avec code suivant:
-(void) moviePlayBackDidFinish:(NSNotification*)notification
{
NSLog(@"Intro video stopped");
[mMoviePlayer release];
}
- (void)applicationDidFinishLaunching:(UIApplication *)application {
NSURL* mMovieURL;
NSBundle *bundle = [NSBundle mainBundle];
if(bundle != nil)
{
NSString *moviePath = [bundle pathForResource:@"intro" ofType:@"mp4"];
if (moviePath)
{
mMovieURL = [NSURL fileURLWithPath:moviePath];
[mMovieURL retain];
}
}
mMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:mMovieURL];
[mMovieURL release];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:mMoviePlayer];
mMoviePlayer.controlStyle = MPMovieControlStyleNone;
[mMoviePlayer.backgroundView addSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Splash/background.png"]] autorelease]];
mMoviePlayer.scalingMode = MPMovieScalingModeFill;
[window addSubview:mMoviePlayer.view];
[mMoviePlayer setFullscreen:YES animated:NO];
[window makeKeyAndVisible];
[mMoviePlayer play];
<... other stuff ...>
}
Ma vidéo n'est que de 1 MO. Mais ce code faire quelque chose de différent alors j'aimerais voir:
- Tout d'abord l'utilisateur peut voir la statique de l'écran de démarrage pendant quelques secondes;
- Puis un écran noir s'affiche pendant 1 ou 2 secondes. Je pense que ce qui se passe parce que le lecteur multimédia est chargé.
- Vidéo de commencer à jouer.
- De l'interface principale de charges.
Comme vous le comprenez, je n'aime pas la pause avec un écran noir - il semble laid.
Aussi loin que je peux voir dans mon journal de la Console le problème est que le lecteur multimédia est en attente jusqu'à l'affichage principal contrôleur est entièrement chargé.
Quelques mots à propos de la vue principale: je suis en train d'écrire une application pour iPad et l'écran principal se compose de plusieurs sous-vues avec plusieurs images. Chaque image et chaque sous-vue dans la vue principale en charge les données à partir d'Internet service Web via ASIHTTPRequest lib.
Je pense que le Lecteur Multimédia est en attente pour toutes les connexions initiales pour terminer, et seulement alors, on commence par la vidéo...
Comment puis-je la force de la vidéo à jouer avant la vue principale est chargé? Ou peut-être que je peut retarder le chargement de la principale XIB?
OriginalL'auteur WASD42 | 2011-08-13
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas vous débarrasser de la statique image splash. Alors qu'il est indiqué, le système d'exploitation est le chargement de l'application et de l'instanciation des trucs jusqu'à ce qu'il est prêt à appeler votre UIApplicationDelegate. Donc tout ce que vous pouvez faire est d'utiliser soit pas de splash (écran noir pendant quelques secondes) ou faire votre film commence exactement avec la montre de l'écran de démarrage de sorte qu'il ressemble à l'image statique soudain s'animer.
Pour se débarrasser de l'écran noir pendant que le film se charge, vous pouvez essayer de rendre le joueur transparent et ont une UIImageView derrière le joueur qui montre l'image splash. Le comportement serait celui-ci:
Au moins en théorie, cela devrait provoquer l'effet que l'image statique tout d'un coup commence à animer.
Mais si vous n'utilisez pas un écran de démarrage (beaucoup de jeux à faire), alors il n'est pas question que le lecteur de film est de montrer un écran noir au premier, vous ne l'auriez pas remarqué.
Concernant montrant l'écran de démarrage dans une UIImageView: malheureusement, vous avez pour tester l'interface de la rotation et de la charge de l'image manuellement, il n'y a aucun moyen de requête de l'écran de démarrage est affiché. Si vous ne supportent qu'une seule interface d'orientation (encore une fois, beaucoup de jeux de ce faire) vous n'avez pas ce problème, bien sûr.
OriginalL'auteur DarkDust
Il y a une meilleure solution, maintenant, en supposant que vous utilisez UIViewControllers.
Au lieu d'utiliser MPMoviePlayerController, utilisez MPMoviePlayerViewController. Voici un exemple de code, adapté à partir de la question:
}
A fonctionné pour moi aussi. Mais, j'ai dû mettre le moviePlayer point de vue image pour correspondre à la rootViewController point de vue image pour se débarrasser de d'un redimensionnement automatique d'un message d'avertissement.
OriginalL'auteur supadenz
Émulation splash vidéo dans une application iOS
ce code de swift4.0
MPMoviePlayerController
est obsolète. UtilisationAVPlayerViewController
pinkstone.co.royaume-uni/how-to-play-vidéos-en-ios-9OriginalL'auteur