Techniken: iPhone Multimedia
Embed Size (px)
description
Transcript of Techniken: iPhone Multimedia
Techniken: iPhone Multimedia
Techniken: iPhone MultimediaUniversitt zu KlnRe-usable Content in 3DJohannes DhrnSS 2012
AudioSystemSoundsAVAudioPlayerAudioaufnahmeAudioToolboxVideoMediaPlayerVideoaufnahmeMediaKitFilme auswhlen und bearbeitenMPMediaPickerControllerMPMusicPlayerController
InhaltAudioGebrauch in ApplicationsSoundeffekte (Klicks, Warnungen, andere kurze Sounds)Musik, Podcasts, Hrbcher etc.Streams aus dem InternetAufgenommene AudioinhalteAudioCoreAudio:Einfacher Gebrauch:System Sound API kurze SoundgeruscheAVAudioPlayer ObjC, simple API
Komplex, aber mit besseren Controls:AudioToolbox aufnehmen und abspielen, StreamingAudioUnits komplexe Audio-Plug-Ins zum Bearbeiten von Audio-Dateien (Filterung, Hall, Sampling, MIDI-basierte Synthesizer etc.)OpenAL 3D Sound (z.B. bei Ego-Shootern)Xcode: Vor dem StartDisable Automatic Reference Counting (ARC)Project/Build Settings/Levels -> in die Suchleiste automatic eingeben/ARC von YES auf NO
Frameworks hinzufgen:- Project Navigator / Project / Build Phases / Link Binary With Libraries > Add (+) -> AVFoundation.framework; AudioToolbox.framwork; MediaPlayer.frameworkAudioSystem Sound APIKurze Soundgerusche (> 5 sec)Sehr simple API, aberKeine SchleifenwiedergabeKeine Handhabung der LautstrkeUmgehendes PlaybackNur wenige untersttzte FormateLinear PCM oder IMA4.caf-, .aif-, oder .wav-DateienCode:NSURL *dateiURL = ... // url zu der DateiSystemSoundID myID;// Sound initialisierenAudioServicesCreateSystemSoundID ((CFURLRef)dateiURL, &myID);// Dann abspielenAudioServicesPlaySystemSound (myID);
AudioSystem Sound APIAufrumen:Wenn abgespielt oder eine Warnung auftritt, abbrechenCode:SystemSoundID myID;
//abbrechen des zuvor initialisierten SoundsAudioServicesDisposeSystemSoundID (myID);
VibrationErlaubt das Auslsen der Vibration- (void) vibrate {AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);}AudioAVAudioPlayerErmglicht das Abspielen lngerer SoundsLokal gespeicherte Daten (kein Streaming)Ermglicht Schleifenwiedergabe, bestimmen und whlen der Wiedergabeposition, Play, PauseAudiopegel knnen berwacht werdenGleichzeitige Wiedergabe mehrerer Sound-DatenCocoa-basiertes InterfaceInitialisierung ber Datei-URL oder DatenErmglicht die Delegation zwischen ObjektenUntersttzt viele Audio-FormateAudioAVAudioPlayer:Initialisierungself.player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:self.path] error:&error];if (!self.player){NSLog(@"Error: %@", [error localizedDescription]);return NO;}
Einfache Methoden zum Starten/StoppenIf (!self.player.playing) {[self.player play];} else {[self.player pause];}AudioAVAudioPlayer:Vorbereitung des Players, um mit der Wiedergabe beginnen zu knnen[self.player prepareToPlay]Vollstndiges Beenden der Wiedergabe durch self.player stopAudiopegel:Einrichten der Eigenschaft meteringEnabled = YES;Aktualisierung der Pegelstnde durch updateMeters -> ablesen der Stnde durch peakPowerForChannel und averagePowerForChannelDie Lautstrke wird mit der Eigenschaft volume ermittelt- (void) setVolume: (id) sender //Anpassung der Lautstrke bei Bettigung des Reglers{if (self.player) self.player.volume = volumeSlider.value;}AudioAVAudioPlayer:Wiedergabeposition bestimmen und whlenEigenschaften currentTime und durationself.player.currentTime = scrubber.value * self.player.duration; // Positionswahl durch UISliderNach Ende der Bewegung des Slider, wird Wiedergabe an der gewhlten Position wieder aufgenommen- (void) scrubbingDone: (id) sender{[self play:nil];}Ende der WiedergabeDelegierungs-Callback audioPlayerDidFinishPlaying:successfullyBsp.https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/01-Play%20AudioAudioSchleifenwiedergabe:Ermglicht das Gestalten von Hintergrundgeruschen, durch Schleifenwiedergabe (self.player setNumberOfLoops)Fading-Effekthttps://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/02-Audio%20LoopUnterbrechungen:z.B. bei Eingang eines Telefonats, Gert bernimmtAudiositzung 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 werdenhttps://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/03-Audio%20InterruptionsAudioAudioaufnahme:Einrichtung einer AVAudioSessionVerwenden einer Aufnahmesitzung (AVAudioSessionCategoryRecord) o. Wiedergabe- und Aufnahme (AVAudioSessionCategoryPlayAndRecord)
AufnahmeAufnahmeeinstellungen, die beschreiben, wie die Aufnahme erfasst werden sollz.B. AudioFormat, Sample-Rate (Abtastvorgnge), Kanle (mono, stereo) etc.Initialisierung des zugewiesenen Recorders durch Datei-URL und DictionaryInitialisierung der Delegierung, Pegelmessung etc.Einrichten eines Timers zur Beobachtung der Pegel und der AufnahmepositionAudioAudioaufnahme:Audiometer (updateMeters) funktioniert wie beim AVAudioPlayerDurch stopRecording wird audioRecorderDidFinishRecording:successfully ausgelst und die Oberflche fr die Wiedergabe bereitgemacht
Bsp.https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/05-Record%20Audio
AudioAudioToolbox:- Audio File Stream Services & Audio Queue ServicesUntersttzt eine grere Anzahl von FormatenBessere Kontrolle ber die Wiedergabez.B. Streaming von Audio ber ein Netzwerk
Queue:Ermglicht die Aneinanderreihung von Audio-Dateien in einer WarteschlangeSpezifiziert, welcher Song wann gespielt werden sollBsp. iPod (Playlist)Ermglicht AufnahmeLeistungsfhige, systemnahe, aufwendige AudioroutinenAudioAudioaufnahme:Erstelle eine QueueDefiniere eine callback-Funktion um das Aufgenommene zu erhaltenStarte die QueueSpeicherung der erhaltenen DatenBeende die Queue
Bsp:Speak Here (iOS Dev Center)https://github.com/erica/iphone-3.0-cookbook-/blob/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/06-AudioQueue%20RecordingVideoGebrauch von Video:Szenische Animationen in einem SpielStream-Inhalte aus dem InternetAbspielen lokaler Videos
MediaPlayer:Abspielen von Videos ber application bundle oder URLPlayer immer Full ScreenMastab kann konfiguriert werdenOptionale controlsUntersttzt:.mov, .mp4, .m4v, .3gpBsp.https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/07-OffsiteVideoVideoMPMoviePlayerController:Gehrt zum Framework MediaPlayer(id)initWithContentURL:(NSURL *)url;(void)play;(void)stop;Eigenschaften:backgroundColor (u.a. clear)scalingMode aspect fit, aspect fill, fill, no scalingmovieControlMode default, volume only, hiddenNotifikationen:MPMoviePlayerPlaybackDidFinishNotification (bei Ende der Wiedergabe oder Done)Video ist bereit zu startennderungen des Mastabs
VideoVideoaufnahme:berprfung, ob Kamera vorhanden- (BOOL) videoRecordingAvailable{if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) return NO;return [[UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera] containsObject:@"public.movie"];}
Videoaufzeichnung hnelt Aufnahme von EinzelbildernZuweisung und Initialisierung eines Bild-PickersEinrichtung seiner DelegierungAuswahl, ob Bearbeitung und DarstellungVideoVideoaufnahme:Festlegung von Eigenschaften im Videorecorder:Bildqualitt (ipc.videoQuality)Maximale Filmdauer in Sekunden (ipc.videoMaximumDuration)Medientyp-Array: eine Liste mit dem Objekt public.movieEventuell 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 secondsipc.mediaTypes = [NSArray arrayWithObject:@"public.movie"];// ipc.mediaTypes = [NSArray arrayWithObjects:@"public.movie", @"public.image", nil];[self presentModalViewController:ipc animated:YES];}VideoVideoaufnahme:Speicherung:didFinishSavingWithError berprft, ob Fehler vorhandenFalls nicht, kann die Datei mit der Funktion UISaveVideoAtPathToSavedPhotosAlbum() gespeichert werden.
Bsp:https://github.com/erica/iphone-3.0-cookbook-/blob/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/08-RecordingVideoVideoAuswhlen und Bearbeiten:Erstellung eines reinen Video-Pickers (s. Videorecorder)berprfung, ob das Video bearbeitet werden kann (Methode canEditVideoAtPath der Klasse UIVideoEditorController)Wenn ja, neuer Editor weist Eigenschaften delegate und videoPath zuCallbacks zum Handhaben fr den Erfolg / Fehlschlag des Vorgangs oder den Abbruch durch den BenutzerNach Beendigung der Bearbeitung, Speicherung (videoEditorController:didSaveEditedVideoToPath)Bsp:https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/09-Editing%20VideoAudioauswahlMPMediaPickerController:Ermglicht Auswahl von Elementen, wie Musikstcke, Podcasts und Hrbchern aus der MusikbibliothekOberflche im iPod-Stil (z.B. Durchsuchen von Wiedergabelisten, Listen von Knstlern und Songs, Alben etc.)Erstellung eines neuen Pickers; Initialisierung mit gewnschtem Medientyp (MPMediaTypeMusic, MPMediaTypePodcast, _Audio, _AnyAudio, _Any)
MPMediaPickerController *mpc = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];mpc.delegate = self;mpc.prompt = @"Please select an item";mpc.allowsPickingMultipleItems = YES;[self presentModalViewController:mpc animated:YES];AudioauswahlMPMediaPickerController:Benutzerauswahl abschlieen:Callback mediaPicker:didPickMediaItemsInstanz MPMediaItemCollection:Kann durch Zugriff auf ihre Elemente aufgelistet werden.Jedes Element (Item) ist ein Member der Klasse MPMediaItemEigenschaften (Property) von MPMediaItem knnen abgefragt werden (z.B. MPMediaItemPropertyTitle, MPMediaItemPropertyArtist etc.)
Bsp.https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/10-Media%20PickerMedienabfragenMPMediaQuery:Filterung der Inhalte einer iPod-Bibliothek und Einschrnkung des Suchbereichs9 vordefinierte Suchvorgnge (z.B. albumsQuery, artistsQuery)Dazugehrige Gruppierungstypen legen die Gliederung der zurckgegebenen 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);Prdikate:Prdikate aus Medieneigenschaften filtern die zurckgegebenen ElementeBsp.https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/11-Media%20QueryAudioMPMusicPlayerController:Ein weiterer komplexer Musik-Player fr MusiksammlungenVerffentlicht optionale Benachrichtigungen, wenn sich der Wiedergabestatus ndertErmglicht zufllige Reihenfolge bei Wiedergabe (Eigenschaft shuffleMode); Wiederholungsmodus (repeatMode)Ermglicht das Anzeigen von Grafiken aus einem Album (MPMediaItemArtwork)
Bsp.https://github.com/erica/iphone-3.0-cookbook-/tree/b8ca8905d17015839a0917e1dcd407d055890236/C15-Media/12-Pick%20and%20PlayQuellenSadun, Erica: Das groe iPhone Entwicklerbuch. Mnchen 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=vTFT0G11VfYSpeak Here, iOS Developer Library. https://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007802