Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Techniken: iPhone Multimedia

Ähnliche Präsentationen


Präsentation zum Thema: "Techniken: iPhone Multimedia"—  Präsentation transkript:

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

2 Inhalt Audio Video MediaKit 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 Vibration 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 = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:self.path] error:&error]; if (!self.player) { [error localizedDescription]); return NO; } Einfache Methoden zum Starten/Stoppen If (!self.player.playing) { [self.player play]; } 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/b8ca8905d a0917e1dcd407d /C15-Media/01-Play%20Audio

12 Audio Schleifenwiedergabe: Unterbrechungen:
Ermöglicht das Gestalten von Hintergrundgeräuschen, durch Schleifenwiedergabe (self.player setNumberOfLoops) Fading-Effekt https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d a0917e1dcd407d /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/b8ca8905d a0917e1dcd407d /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/b8ca8905d a0917e1dcd407d /C15-Media/05-Record%20Audio

15 Audio AudioToolbox: Queue:
- 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: ‚Speak Here‘ (iOS Dev Center) https://github.com/erica/iphone-3.0-cookbook-/blob/b8ca8905d a0917e1dcd407d /C15-Media/06-AudioQueue%20Recording

17 Video Gebrauch von Video: MediaPlayer:
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/b8ca8905d a0917e1dcd407d /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] } 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 // ipc.mediaTypes = 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/b8ca8905d a0917e1dcd407d /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 canEditVideoAtPath der 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/b8ca8905d a0917e1dcd407d /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 = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic]; mpc.delegate = self; mpc.prompt select an item"; mpc.allowsPickingMultipleItems = YES; [self presentModalViewController:mpc animated: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/b8ca8905d a0917e1dcd407d /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; 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/b8ca8905d a0917e1dcd407d /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/b8ca8905d a0917e1dcd407d /C15-Media/12-Pick%20and%20Play

27 Quellen Sadun, Erica: Das große iPhone Entwicklerbuch. München 2010.
Codes: ‚Audio APIs, Video Playback, Displaying Web Content, Settings‘, von Alan Cannistraro (Stanford University) ‚Speak Here‘, iOS Developer Library. https://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html#//apple_ref/doc/uid/DTS


Herunterladen ppt "Techniken: iPhone Multimedia"

Ähnliche Präsentationen


Google-Anzeigen