首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用AVPlayer播放视频?

如何使用AVPlayer播放视频?
EN

Stack Overflow用户
提问于 2017-02-23 00:18:04
回答 1查看 11.9K关注 0票数 2

苹果Swift 3.0.2版(-800.63 clang-800.0.42.1)

我想用AVPlayer播放一个来自互联网的视频。但是,源列表下面的super.init(frame:frame)在AVPlayer.swift中出现了一个错误。

线程1:EXC_BAD_ACCESS (code=2,address=0x16fc07fe0)

如何使用AVPlayer播放视频?如果除了错误点之外,还有错误的地方,也让我知道。

AVPlayerView.swift

代码语言:javascript
运行
AI代码解释
复制
import Foundation
import UIKit

final class AVPlayerView : UIView {
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
    }
    override init(frame: CGRect) {
        super.init(frame: frame)
    }
    override public class var layerClass: Swift.AnyClass {
        get {
            return AVPlayerView.self
        }
    }

}

ViewController.swift

代码语言:javascript
运行
AI代码解释
复制
import UIKit
import AVFoundation
import CoreMedia

class ViewController: UIViewController {
    var playerItem : AVPlayerItem!
    var videoPlayer : AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()
        let url:NSURL = NSURL(string: "https://aaa.com/test.m3u8")!
        let avAsset = AVURLAsset(url: url as URL, options: nil)

        playerItem = AVPlayerItem(asset: avAsset)

        videoPlayer = AVPlayer(playerItem: playerItem)

        print(self.view.bounds)
        let videoPlayerView = AVPlayerView(frame: self.view.bounds)

        let layer = videoPlayerView.layer as! AVPlayerLayer
        layer.videoGravity = AVLayerVideoGravityResizeAspect
        layer.player = videoPlayer

        self.view.layer.addSublayer(layer)
        videoPlayer.play()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-23 00:59:25

下面是播放视频的代码:

代码语言:javascript
运行
AI代码解释
复制
let videoURL = NSURL(string: "PUT_YOUR_PROPER_URL")
let playerAV = AVPlayer(url: videoURL! as URL)
let playerLayerAV = AVPlayerLayer(player: playerAV)
playerLayerAV.frame = self.view.bounds
self.view.layer.addSublayer(playerLayerAV)
playerAV.play()

扩展下面的AVPlayer支持:

代码语言:javascript
运行
AI代码解释
复制
public.mpeg
public.mpeg-2-video
public.avi
public.aifc-audio
public.aac-audio
public.mpeg-4
public.au-audio
public.aiff-audio
public.mp2
public.3gpp2
public.ac3-audio
public.mp3
public.mpeg-2-transport-stream
public.3gpp
public.mpeg-4-audio

确保可以在AVPlayer中使用受支持的视频。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42410339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档