簡體   English   中英

在 iOS SDK 中手動選擇視頻質量的 HLS Streaming - AVPlayer?

[英]HLS Streaming with manual video quality selection in iOS SDK - AVPlayer?

我們已經使用 AVPlayer 實現了 HLS 流,

 fileURL = [NSURL URLWithString:@"https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8"];
 avAsset = [AVURLAsset assetWithURL:fileURL];
 AVPlayerItem *avPlayerItem =[[AVPlayerItem alloc]initWithAsset:self->avAsset];
 self->avPlayer = [AVPlayer playerWithPlayerItem:avPlayerItem];

它是根據網絡速度自動選擇視頻質量,我們也需要通過用戶選擇手動選擇視頻質量。 但我們無法手動選擇媒體文件(質量 1080p、720p、270p 等...)。

如果有人知道手動質量選擇的 HLS 流媒體,請分享您的想法。 提前致謝!

您可以通過指定來設置質量:

currentPlayerItem.preferredMaximumResolution = your value
currentPlayerItem.preferredForwardBufferDuration = your value

但最終播放器將自行調整質量,因為 HLS 是一種自適應流,可根據可用帶寬調整其質量。

是的,我們可以,但我不確定這是正確的方法。 但它對我有用

首先,我們需要獲得視頻所需的所有品質。 有兩種方法可以獲得這個選項

  1. 通過 API 從后端本身獲取它
  2. “m3u8”實際上可以下載並閱讀其內容。 您所要做的就是獲取“RESOLUTION”鍵的值

會是這樣M3U8 說明

在您獲得解決方案列表之后。 您必須將其顯示為列表或選項給用戶。

然后是第二點。 如何使選定的分辨率在 AVPlayer 中播放。

有一個選項 AVPlayer 稱為PreferredPeakBitRate

之后,我們必須通過我計算的這些值來設置比特率。 將其應用到當前播放器

 open func setBitRate(_ definition: String) {
    // 1. 240p = 700000
    // 2. 360p = 1500000
    // 3. 480p = 2000000
    // 4. 720p = 4000000
    // 5. 1080p = 6000000
    // 6. 2k = 16000000
    // 7. 4k = 45000000
    var maxBitRate: Double = 0
    switch definition {
    case "240p":
        maxBitRate = 700000
    case "360p":
        maxBitRate = 1500000
    case "480p":
        maxBitRate = 2000000
    case "720p":
        maxBitRate = 4000000
    case "1080p":
        maxBitRate = 6000000
    case "2k":
        maxBitRate = 16000000
    case "4k":
        maxBitRate = 45000000
    case "Auto":
        maxBitRate = 0
    default:
        maxBitRate = 0
    }
    player?.currentItem?.preferredPeakBitRate = maxBitRate
    print("Playing in Bit Rate \(String(describing: player?.currentItem?.preferredPeakBitRate))")
}

雖然播放器更新比特率需要一點時間,但它肯定會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM