1 / 27

Techniken: iPhone Multimedia

Techniken: iPhone Multimedia. Universität zu Köln Re-usable Content in 3D Johannes Döhrn SS 2012. Inhalt. Audio SystemSounds AVAudioPlayer Audioaufnahme AudioToolbox Video MediaPlayer Videoaufnahme MediaKit Filme auswählen und bearbeiten MPMediaPickerController

zenda
Download Presentation

Techniken: iPhone Multimedia

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Techniken: iPhone Multimedia Universität zu Köln Re-usable Content in 3D Johannes Döhrn SS 2012

  2. Inhalt • Audio • SystemSounds • AVAudioPlayer • Audioaufnahme • AudioToolbox • Video • MediaPlayer • Videoaufnahme • MediaKit • Filme auswählen und bearbeiten • MPMediaPickerController • MPMusicPlayerController

  3. Audio • Gebrauch in Applications • Soundeffekte (Klicks, Warnungen, andere kurze Sounds) • Musik, Podcasts, Hörbücher etc. • Streams aus dem Internet • Aufgenommene Audioinhalte

  4. Audio • CoreAudio: • Einfacher Gebrauch: • System Sound API – kurze Soundgeräusche • AVAudioPlayer – ObjC, simple API • Komplex, aber mit besseren ‚Controls‘: • AudioToolbox – aufnehmen und abspielen, Streaming • AudioUnits – komplexe Audio-Plug-Ins zum Bearbeiten von Audio-Dateien (Filterung, Hall, Sampling, MIDI-basierte Synthesizer etc.) • OpenAL – 3D Sound (z.B. bei Ego-Shootern)

  5. Xcode: Vor dem Start… • Disable Automatic Reference Counting (ARC) • Project/Build Settings/Levels -> in die Suchleiste ‚automatic‘ eingeben/ARC von ‚YES‘ auf ‚NO‘ • Frameworks hinzufügen: • - Project Navigator / Project / Build Phases / Link Binary With Libraries –> Add (+) -> AVFoundation.framework; AudioToolbox.framwork; MediaPlayer.framework

  6. Audio • System Sound API • Kurze Soundgeräusche (> 5 sec) • Sehr simple API, aber • Keine Schleifenwiedergabe • Keine Handhabung der Lautstärke • Umgehendes Playback • Nur wenige unterstützte Formate • Linear PCM oder IMA4 • .caf-, .aif-, oder .wav-Dateien • Code: • NSURL *dateiURL = ... // url zu der Datei • SystemSoundID myID; • // Sound initialisieren • AudioServicesCreateSystemSoundID ((CFURLRef)dateiURL, &myID); • // Dann abspielen • AudioServicesPlaySystemSound (myID);

  7. Audio • System Sound API • Aufräumen: • Wenn abgespielt oder eine Warnung auftritt, abbrechen • Code: • SystemSoundID myID; • //abbrechen des zuvor initialisierten Sounds • AudioServicesDisposeSystemSoundID (myID); • Vibration • Erlaubt das Auslösen der Vibration • - (void) vibrate { • AudioServicesPlaySystemSound (kSystemSoundID_Vibrate); • }

  8. Audio • AVAudioPlayer • Ermöglicht das Abspielen längerer Sounds • Lokal gespeicherte Daten (kein Streaming) • Ermöglicht Schleifenwiedergabe, bestimmen und wählen der Wiedergabeposition, Play, Pause • Audiopegel können überwacht werden • Gleichzeitige Wiedergabe mehrerer Sound-Daten • Cocoa-basiertes Interface • Initialisierung über Datei-URL oder Daten • Ermöglicht die Delegation zwischen Objekten • Unterstützt viele Audio-Formate

  9. Audio • AVAudioPlayer: • Initialisierung • self.player= [[AVAudioPlayeralloc] initWithContentsOfURL:[NSURL fileURLWithPath:self.path] error:&error]; • if(!self.player) • { • NSLog(@"Error: %@", [errorlocalizedDescription]); • returnNO; • } • Einfache Methoden zum Starten/Stoppen • If (!self.player.playing) { • [self.playerplay]; • } else { • [self.player pause]; • }

  10. Audio • AVAudioPlayer: • Vorbereitung des Players, um mit der Wiedergabe beginnen zu können • [self.player prepareToPlay] • Vollständiges Beenden der Wiedergabe durch self.player stop • Audiopegel: • Einrichten der Eigenschaft meteringEnabled = YES; • Aktualisierung der Pegelstände durch updateMeters -> ablesen der Stände durch peakPowerForChannel und averagePowerForChannel • Die Lautstärke wird mit der Eigenschaft volume ermittelt • - (void) setVolume: (id) sender //Anpassung der Lautstärke bei Betätigung des Reglers • { • if (self.player) self.player.volume = volumeSlider.value; • }

  11. Audio • AVAudioPlayer: • Wiedergabeposition bestimmen und wählen • Eigenschaften currentTime und duration • self.player.currentTime = scrubber.value * self.player.duration; // Positionswahl durch UISlider • Nach Ende der Bewegung des Slider, wird Wiedergabe an der gewählten Position wieder aufgenommen • - (void) scrubbingDone: (id) sender • { • [self play:nil]; • } • Ende der Wiedergabe • Delegierungs-Callback audioPlayerDidFinishPlaying:successfully • Bsp. • https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/01-Play%20Audio

  12. Audio • Schleifenwiedergabe: • Ermöglicht das Gestalten von Hintergrundgeräuschen, durch Schleifenwiedergabe (self.player setNumberOfLoops) • Fading-Effekt • https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/02-Audio%20Loop • Unterbrechungen: • z.B. bei Eingang eines Telefonats, Gerät übernimmt • Audiositzung wird deaktiviert (audioPlayerBeginInteruption) • Wird das Telefonat abgelehnt oder endet, bevor der Benutzer antworten konnte, wird die Wiedergabe wieder aufgenommen (audioPlayerEndInteruption) • Die Aktuelle Abspielposition kann gespeichert werden • https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/03-Audio%20Interruptions

  13. Audio • Audioaufnahme: • Einrichtung einer AVAudioSession • Verwenden einer Aufnahmesitzung (AVAudioSessionCategoryRecord) o. Wiedergabe- und Aufnahme (AVAudioSessionCategoryPlayAndRecord) • Aufnahme • Aufnahmeeinstellungen, die beschreiben, wie die Aufnahme erfasst werden soll • z.B. AudioFormat, Sample-Rate (Abtastvorgänge), Kanäle (mono, stereo) etc. • Initialisierung des zugewiesenen Recorders durch Datei-URL und Dictionary • Initialisierung der Delegierung, Pegelmessung etc. • Einrichten eines Timers zur Beobachtung der Pegel und der Aufnahmeposition

  14. Audio • Audioaufnahme: • Audiometer (updateMeters) funktioniert wie beim AVAudioPlayer • Durch stopRecording wird audioRecorderDidFinishRecording:successfully ausgelöst und die Oberfläche für die Wiedergabe bereitgemacht • Bsp. • https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/05-Record%20Audio

  15. Audio • AudioToolbox: • - Audio File Stream Services & Audio Queue Services • Unterstützt eine größere Anzahl von Formaten • Bessere Kontrolle über die Wiedergabe • z.B. Streaming von Audio über ein Netzwerk • Queue: • Ermöglicht die Aneinanderreihung von Audio-Dateien in einer Warteschlange • Spezifiziert, welcher Song wann gespielt werden soll • Bsp. iPod (Playlist) • Ermöglicht Aufnahme • Leistungsfähige, systemnahe, aufwendige Audioroutinen

  16. Audio • Audioaufnahme: • Erstelle eine Queue • Definiere eine callback-Funktion um das Aufgenommene zu erhalten • Starte die Queue • Speicherung der erhaltenen Daten • Beende die Queue • Bsp: • ‚SpeakHere‘ (iOSDev Center) • https://github.com/erica/iphone-3.0-cookbook-/blob/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/06-AudioQueue%20Recording

  17. Video • Gebrauch von Video: • Szenische Animationen in einem Spiel • Stream-Inhalte aus dem Internet • Abspielen lokaler Videos • MediaPlayer: • Abspielen von Videos über application bundle oder URL • Player immer ‚Full Screen‘ • Maßstab kann konfiguriert werden • Optionale controls • Unterstützt: • .mov, .mp4, .m4v, .3gp • Bsp. • https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/07-OffsiteVideo

  18. Video • MPMoviePlayerController: • Gehört zum Framework ‚MediaPlayer‘ • (id)initWithContentURL:(NSURL *)url; • (void)play; • (void)stop; • Eigenschaften: • backgroundColor (u.a. clear) • scalingMode – aspect fit, aspect fill, fill, no scaling • movieControlMode – default, volume only, hidden • Notifikationen: • MPMoviePlayerPlaybackDidFinishNotification (bei Ende der Wiedergabe oder ‚Done‘) • Video ist bereit zu starten • Änderungen des Maßstabs

  19. Video • Videoaufnahme: • Überprüfung, ob Kamera vorhanden • - (BOOL) videoRecordingAvailable • { • if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) return NO; • return [[UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera] containsObject:@"public.movie"]; • } • Videoaufzeichnung ähnelt Aufnahme von Einzelbildern • Zuweisung und Initialisierung eines Bild-Pickers • Einrichtung seiner Delegierung • Auswahl, ob Bearbeitung und Darstellung

  20. Video • Videoaufnahme: • Festlegung von Eigenschaften im Videorecorder: • Bildqualität (ipc.videoQuality) • Maximale Filmdauer in Sekunden (ipc.videoMaximumDuration) • Medientyp-Array: eine Liste mit dem Objekt public.movie • Eventuell auch public.image, um zwischen Video und Bild zu wechseln • - (void) recordVideo: (id) sender { • UIImagePickerController *ipc = [[UIImagePickerController alloc] init]; • ipc.sourceType = UIImagePickerControllerSourceTypeCamera; • ipc.delegate = self; • ipc.allowsEditing = YES; • ipc.videoQuality = UIImagePickerControllerQualityTypeMedium; • ipc.videoMaximumDuration = 30.0f; // 30 seconds • ipc.mediaTypes = [NSArray arrayWithObject:@"public.movie"]; • // ipc.mediaTypes = [NSArray arrayWithObjects:@"public.movie", @"public.image", nil]; • [self presentModalViewController:ipc animated:YES]; • }

  21. Video • Videoaufnahme: • Speicherung: • didFinishSavingWithErrorüberprüft, ob Fehler vorhanden • Falls nicht, kann die Datei mit der Funktion UISaveVideoAtPathToSavedPhotosAlbum() gespeichert werden. • Bsp: • https://github.com/erica/iphone-3.0-cookbook-/blob/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/08-RecordingVideo

  22. Video • Auswählen und Bearbeiten: • Erstellung eines reinen Video-Pickers (s. Videorecorder) • Überprüfung, ob das Video bearbeitet werden kann (Methode canEditVideoAtPathder Klasse UIVideoEditorController) • Wenn ja, neuer Editor weist Eigenschaften delegate und videoPath zu • Callbacks zum Handhaben für den Erfolg / Fehlschlag des Vorgangs oder den Abbruch durch den Benutzer • Nach Beendigung der Bearbeitung, Speicherung (videoEditorController:didSaveEditedVideoToPath) • Bsp: • https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/09-Editing%20Video

  23. Audioauswahl • MPMediaPickerController: • Ermöglicht Auswahl von Elementen, wie Musikstücke, Podcasts und Hörbüchern aus der Musikbibliothek • Oberfläche im iPod-Stil (z.B. Durchsuchen von Wiedergabelisten, Listen von Künstlern und Songs, Alben etc.) • Erstellung eines neuen Pickers; Initialisierung mit gewünschtem Medientyp (MPMediaTypeMusic, MPMediaTypePodcast, _Audio, _AnyAudio, _Any) • MPMediaPickerController *mpc = [[MPMediaPickerControlleralloc] initWithMediaTypes:MPMediaTypeMusic]; • mpc.delegate = self; • mpc.prompt = @"Pleaseselect an item"; • mpc.allowsPickingMultipleItems = YES; • [selfpresentModalViewController:mpcanimated:YES];

  24. Audioauswahl • MPMediaPickerController: • Benutzerauswahl abschließen: • Callback mediaPicker:didPickMediaItems • Instanz MPMediaItemCollection: • Kann durch Zugriff auf ihre Elemente aufgelistet werden. • Jedes Element (Item) ist ein Member der Klasse MPMediaItem • Eigenschaften (Property) von MPMediaItem können abgefragt werden (z.B. MPMediaItemPropertyTitle, MPMediaItemPropertyArtist etc.) • Bsp. • https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/10-Media%20Picker

  25. Medienabfragen • MPMediaQuery: • Filterung der Inhalte einer iPod-Bibliothek und Einschränkung des Suchbereichs • 9 vordefinierte Suchvorgänge (z.B. albumsQuery, artistsQuery) • Dazugehörige Gruppierungstypen legen die Gliederung der zurückgegebenen Daten fest (z.B. MPMediaGroupingAlbum) • Beispiel einer Abfrage (hier: Anzahl der Alben) • MPMediaQuery *query = [MPMediaQuery albumsQuery]; • NSArray *collections = query.collections; • NSLog(@"You have %d albums in your library\n", collections.count); • Prädikate: • Prädikate aus Medieneigenschaften filtern die zurückgegebenen Elemente • Bsp. • https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/11-Media%20Query

  26. Audio • MPMusicPlayerController: • Ein weiterer komplexer Musik-Player für Musiksammlungen • Veröffentlicht optionale Benachrichtigungen, wenn sich der Wiedergabestatus ändert • Ermöglicht zufällige Reihenfolge bei Wiedergabe (Eigenschaft shuffleMode); Wiederholungsmodus (repeatMode) • Ermöglicht das Anzeigen von Grafiken aus einem Album (MPMediaItemArtwork) • Bsp. • https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/12-Pick%20and%20Play

  27. Quellen • Sadun, Erica: Das große iPhone Entwicklerbuch. München 2010. • Codes: http://github.com/erica/iphone-3.0-cookbook- • ‚Audio APIs, Video Playback, Displaying Web Content, Settings‘, von Alan Cannistraro (Stanford University) http://www.youtube.com/watch?v=vTFT0G11VfY • ‚Speak Here‘, iOS Developer Library. https://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007802

More Related