我需要在格式为m3u8的接收视频流中切换音轨,我该怎么做?这是可能的?如何检测它们? (我收到流HLS,10秒段.ts,格式MPEG-2,传输流)
基于这个问题:
Alternate audio tracks with HTTP Live Streaming
我设法从使用Fairplay编码的HLS流中检索音轨(我在解码内容后检索曲目)。该流有两种不同的音频,英语和西班牙语,因此我使用字典来保存从HLS流中提取的每个音频,并简化它们之间的切换。
每个音频都由AVMediaSelectionOption对象表示,这是您必须传递给AVPlayerItem对象(在select方法中)进行音频切换的对象。
let mediaSelectionGroup = self.player!.currentItem!.asset.mediaSelectionGroup(forMediaCharacteristic: AVMediaCharacteristicAudible)!
print("ASSET AUDIO TRACKS: \(mediaSelectionGroup)")
self.mediaSelectionOptions = Dictionary<String, AVMediaSelectionOption>()
for mediaSelectionOption in self.mediaSelectionGroup!.options {
if let locale = mediaSelectionOption.locale, let languageCode = locale.languageCode {
if languageCode == "en" {
self.mediaSelectionOptions!["Inglés"] = mediaSelectionOption
} else if languageCode == "es" {
self.mediaSelectionOptions!["Español"] = mediaSelectionOption
}
}
}
// Set Spanish audio
self.player!.currentItem!.select(
self.audioManager!.mediaSelectionOptions!["Español"],
in: mediaSelectionGroup
)
// Set English audio
self.player!.currentItem!.select(
self.audioManager!.mediaSelectionOptions!["Inglés"],
in: mediaSelectionGroup
)
希望能帮助到你!