Techniken iphone multimedia
Download
1 / 27

Techniken: iPhone Multimedia - PowerPoint PPT Presentation


  • 109 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Techniken: iPhone Multimedia' - zenda


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Techniken iphone multimedia

Techniken: iPhone Multimedia

Universität zu Köln

Re-usable Content in 3D

Johannes Döhrn

SS 2012


Inhalt
Inhalt

  • Audio

    • SystemSounds

    • AVAudioPlayer

    • Audioaufnahme

    • AudioToolbox

  • Video

    • MediaPlayer

    • Videoaufnahme

  • MediaKit

    • Filme auswählen und bearbeiten

    • MPMediaPickerController

    • MPMusicPlayerController


Audio
Audio

  • Gebrauch in Applications

    • Soundeffekte (Klicks, Warnungen, andere kurze Sounds)

    • Musik, Podcasts, Hörbücher etc.

    • Streams aus dem Internet

    • Aufgenommene Audioinhalte


Audio1
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)


Xcode vor dem start
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


Audio2
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);


Audio3
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);

  • }


Audio4
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


Audio5
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];

    • }


Audio6
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;

      • }


Audio7
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


Audio8
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


Audio9
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


Audio10
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


Audio11
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


Audio12
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


Video
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


Video1
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


Video2
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


Video3
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];

      • }


Video4
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


Video5
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


Audioauswahl
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];


Audioauswahl1
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


Medienabfragen
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


Audio13
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


Quellen
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


ad