10

AVPlayer を使用して、m3u8 HLS プレイリストで指定されたビデオを再生するテスト アプリケーションがあります。このプレイリストは、Apple が提供する「リスト 10」のサンプル プレイリストと同様に、いくつかの代替オーディオ ストリームを指定します 。 doc/uid/DTS40012238-CH1-ALTERNATE_MEDIA アプリは、ビデオの再生中に代替オーディオ ストリームを切り替えることができる必要があります。たとえば、アプリは、ビデオの再生中にユーザーがアプリのボタンをタップすることで、英語、フランス語、スペイン語のオーディオ ストリームを切り替えることができる必要があります。

m3u8 プレイリストで指定されているオーディオ ストリームを切り替えるために、AVPlayer とその関連オブジェクトが使用する AVFoundation クラスとメソッドはどれですか? AVFoundation クラスのドキュメントを見ましたが、これを行う方法がわかりません。

これを行う方法を示すサンプルコードへのリンクは素晴らしいでしょう。この情報をウェブで検索しましたが、うまくいきませんでした。これについて助けてくれてありがとう。

4

1 に答える 1

23

AVPlayer での m3u8 再生の場合、AVAsset を使用して AVPlayerItem を構築できないようです。URI から AVPlayerItem を直接構築する必要があります。この AVPlayerItem を使用して AVPlayer をインスタンス化し、KVO がプロパティ @"status" をリッスンすると[[avPlayerInstance currentItem] asset]、ステータスが AVPlayerStatusReadyToPlay の場合、アセットが 内に作成されます。これについては、AV Foundation Programming Guideの 20 ページに記載されています。

オーディオをさまざまな代替に変更するには、次を使用します。

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

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

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

そして、次のように AVMediaSelectionOption (必要なオーディオ チャンネル) を選択します。

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

同じことがビデオでも機能します。

これについては、 IOS 5 の AV Foundation リリース ノート(第 3 セクション)の「言語およびその他の基準によるオーディオおよび字幕メディアの選択」セクションで説明されています。

于 2012-08-30T23:54:18.537 に答える