2014-08-27 870 views
1

我需要切換格式爲m3u8的接收視頻流中的音軌,我該怎麼做? 有可能嗎?如何檢測它們? (ⅰ接收流HLS,10秒段.TS,格式MPEG-2,傳輸流)如何在m3u8視頻流中切換音軌?

+0

你只想從m8u3視頻文件播放音頻? – tnylee 2014-08-27 11:19:09

+0

不,音頻和視頻在一起,但也可以切換音軌) – Nubaslon 2014-08-27 12:12:23

+0

您的m3u8鏈接應該包含音頻和視頻。那麼只需使用媒體播放器來播放該鏈接 – tnylee 2014-08-27 12:13:37

回答

0

基於這樣一個問題:

Alternate audio tracks with HTTP Live Streaming

我設法檢索從與編碼的HLS流的音頻軌道Fairplay(我在解碼內容後檢索曲目)。該流有兩種不同的音頻,英文和西班牙文,所以我使用字典來保存從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 
      ) 

希望它有幫助!