Video: Writing 2D Games in C using SDL by Thomas Lively 2025
In diesem Abschnitt wird gezeigt, wie Sie eine High-Level-Abstraktion, die MPMoviePlayerViewController-Klasse, verwenden, um Videos in einer iOS-App abzuspielen. Hier ist der Code (im Videoansicht-Controller aus der Datei TTTVideoViewController. M):
- (IBAction) playVideo: (id) sender {MPMoviePlayerViewController * moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL: movieURL]; [self presentMoviePlayerViewControllerAnimated: moviePlayer];}
Einfachheit selbst! Alles, was Sie benötigen, ist eine URL, die auf eine Filmdatei im Dateisystem oder auf eine Internet-URL verweist, mit der Sie den Movie-Player instanziieren können. Die Benutzeroberfläche des Players behandelt Stopp, Start und so weiter.
Die Membervariable movieURL wird in der viewDidLoad-Methode festgelegt, die aufgerufen wird, nachdem die Anzeige für diesen Ansichtscontroller initialisiert wurde (ein Beispielfilm wird jetzt in einer Ressourcendatei namens "Videos. Bundle" gespeichert), wie hier gezeigt.:
- (void) viewDidLoad {[super viewDidLoad]; // Führen Sie nach dem Laden der Ansicht zusätzliche Einstellungen durch. NSString * videoPath = [[NSBundle mainBundle] PfadForResource: @ "Videos. Bundle / SampleVideo" ofType: @ "MOV"]; movieURL = [NSURL fileURLWithPath: videoPath];}
Das folgende Beispiel zeigt Ihnen, wie Sie eine Abstraktion verwenden, die um eine Ebene niedriger ist als die vorherige, indem Sie die unter recordVideo genannte untergeordnete Methode verwenden:
- (IBAction) recordVideo: (id) Absender {UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init]; imagePicker. sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker. mediaTypes = [[NSArray-Zuweisung] initWithObjects: (NSString *) kUTTypeMovie, nil]; imagePicker. Delegierter = Selbst; [[UIApplication sharedApplication] setStatusBarHidden: JA]; [self presentViewController: imagePicker animiert: JA Vervollständigung: nil];}
Wenn diese Methode aufgerufen wird, erscheint ein Bildschirm mit einer Kamera-Oberfläche. Mit diesem Bildschirm kann die Videoaufnahme gestartet und gestoppt werden. Wenn die Videoaufzeichnung abgeschlossen ist, überträgt dieser Bildschirm die Steuerung zurück an den rufenden View-Controller.
Die folgenden beiden Methoden sind die Callback-Methoden, die von der Image-Auswahl aufgerufen werden (beachten Sie, wie der Video-View-Controller sich als Delegate mit dem ImagePicker-Objekt registriert):
-
imagePickerControllerDidCancel wird aufgerufen, wenn die Aufzeichnung abgebrochen. Sie entlässt einfach den Picker und zeigt die iOS-Statusleiste wieder an.
- (void) imagePickerControllerDidCancel: (UIImagePickerController *) Auswahl {[[UIApplication sharedApplication] setStatusBarHidden: NO]; [picker dismissViewControllerAnimated: JA Vervollständigung: nil];}
-
didFinishPickingMediaWithInfo zeigt die iOS-Statusleiste erneut an und entlässt die Auswahl. Es speichert dann das aufgezeichnete Video in der Kamerarolle des Geräts. Schließlich setzt diese Methode die Membervariable movieURL so, dass sie auf dieses neue Video zeigt. Wenn Sie also erneut "Video wiedergeben" auswählen, wird der neu aufgezeichnete Film abgespielt.
- (void) imagePickerController: (UIImagePickerController *) Auswahlliste didFinishPickingMediaWithInfo: (NSDictionary *) Ergebnisse {NSURL * moviePathURL = [Ergebnisse objectForKey: UIImagePickerControllerMediaURL]; NSString * moviePath = [moviePathURL-Pfad]; movieURL = FilmPathURL; // In der Kamera speichern, wenn (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {UISaveVideoAtPathToSavedPhotosAlbum (moviePath, nil, nil, nil);} [[UIApplication sharedApplication] setStatusBarHidden: NO]; [picker dismissViewControllerAnimated: JA Vervollständigung: nil];}
