2012-07-20 9 views
8

Ich habe eine Testanwendung, die AVPlayer zum Abspielen von Video verwendet, das von einer m3u8 HLS-Wiedergabeliste angegeben wird. Die Wiedergabeliste gibt mehrere alternative Audiostreams an, die der von Apple gefundenen Beispielwiedergabeliste "Listing 10" entsprechen: http://developer.apple.com/library/ios/#technotes/tn2288/_index.html#//apple_ref/doc/uid/DTS40012238-CH1-ALTERNATE_MEDIA Die App muss während der Wiedergabe des Videos zwischen den alternativen Audiostreams wechseln können. Zum Beispiel sollte die App in der Lage sein, zwischen den englischen, französischen und spanischen Audiostreams zu wechseln, indem der Benutzer während der Wiedergabe des Videos auf Schaltflächen in der App tippt.So wechseln Sie mit AVPlayer zwischen alternativen Audiostreams

Welche AVFoundation-Klassen und -Methoden würden vom AVPlayer und seinen verwandten Objekten verwendet, um zwischen den Audio-Streams zu wechseln, die in der m3u8-Playlist angegeben sind? Ich habe mir die Dokumentation der AVFoundation-Klasse angesehen, sehe aber nicht, wie das geht.

Ein Link zu einem Beispielcode, der zeigt, wie das geht, wäre großartig. Ich habe im Internet nach dieser Information ohne Erfolg gesucht. Danke für jede Hilfe mit diesem.

+0

Ich bin auch neugierig, aber für alternative Video ähnlich wie "Listing 12" auf: http://developer.apple.com/library/ios/#technotes/tn2288/_index.html. Ich kann mir vorstellen, dass jede Antwort, die du findest, mir helfen wird – user1636983

Antwort

18

Für die Wiedergabe von m3u8 mit AVPlayer sieht es so aus, als könnten Sie kein AVAsset verwenden, um ein AVPlayerItem zu erstellen. Sie müssen ein AVPlayerItem direkt aus dem URI erstellen. Wenn Sie einen AVPlayer mit diesem AVPlayerItem instanziieren und dann KVO auf der Eigenschaft @ "status" hören, haben Sie ein Asset innerhalb der [[avPlayerInstance currentItem] asset], wenn der Status AVPlayerStatusReadyToPlay lautet. Dies wird auf Seite 20 der AV Foundation Programming Guide beschrieben.

Audio zu ändern, um verschiedene Stellvertreter verwenden:

AVMediaSelectionGroup *audioSelectionGroup = [[[avPlayerInstance currentItem] asset] mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicAudible]; 

NSLog(@"audioSelectionGroup: %@", audioSelectionGroup); 

// [audioSelectionGroup options] // Array of the options in the group above. 

und die Auswahl AVMediaSelectionOption (der Audiokanal Sie möchten) mit:

[[avPlayerInstance currentItem] selectMediaOption:avMediaSelectionOptionInstance] inMediaSelectionGroup: audioSelectionGroup]; 

Das gleiche gilt für Video funktioniert.

Dies wird im Abschnitt "Auswahl von Audio- und Untertitelmedien nach Sprache und anderen Kriterien" der AV Foundation Release Notes for IOS 5 (3. Abschnitt) beschrieben.