使用AVPlayer从远程URL播放HEVC(H.265)文件

时间:2018-12-03 12:31:47

标签: ios swift avplayer ios11 h.265

我正在尝试在AVPlayer上播放HEVC(H.265)编解码器媒体URL。但是视频没有显示。我没有任何解决方案。如何在ios中实现呢?

let videoURL = URL(string: "http://bitmovin-a.akamaihd.net/content/dataset/multi-codec/hevc/stream_fmp4.m3u8")
let avPlayer = AVPlayer(url: videoURL!)
let playerViewController = AVPlayerViewController() 
playerViewController.player = avPlayer 
self.present(playerViewController, animated: true) { 
    playerViewController.player!.play()
}

1 个答案:

答案 0 :(得分:1)

按照您的示例,我可以在设备(不是模拟器)上播放此内容

  

还请注意,我将URL从HTTP更改为HTTPS!

import UIKit
import AVFoundation

class ViewController: UIViewController {

    let videoURL = URL(string: "https://bitmovin-a.akamaihd.net/content/dataset/multi-codec/hevc/stream_fmp4.m3u8")
    let avPlayer = AVPlayer()


    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewDidAppear(_ animated: Bool) {
        let asset = AVAsset(url: videoURL!)
        let playerItem = AVPlayerItem(asset: asset)
        avPlayer.replaceCurrentItem(with: playerItem)

        let avLayer = AVPlayerLayer(player: avPlayer)
        avLayer.frame = view.bounds
        view.layer.addSublayer(avLayer)
        avPlayer.play()
    }

}

NB:

HEVC视频的容器格式必须为fMP4。

有几种向用户传递HEVC内容的方法:

  • 使用MPEG-2传输流块的HLS中的HEVC,Apple不这样做 支持
  • HLS中使用fMP4段的HEVC,这是Apple宣布的 WWDC17和我们的播放器支持
  • 使用fMP4片段的MPEG-DASH中的HEVC

供参考: WWDC17 – HEVC with HLS – Apple just announced a feature that we support out of the box

HLS Authoring Specification for Apple Devices