37

我正在尝试从捆绑目录播放视频,但出现此错误:

视频[29054:2968406] [MediaRemote] [AVOutputContext] 警告:sharedAudioPresentationContext 的 AVF 上下文不可用

这是我的实现:

import UIKit
import AVKit
import AVFoundation


class ViewController: UIViewController {
    var playerVC = AVPlayerViewController()
    var playerView = AVPlayer()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.playVideo()

    }


    func playVideo() {
        let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last! as NSURL
        guard let fileURL  = documentsDirectory.appendingPathComponent("video.mp4") else{ return }
        self.playerView = AVPlayer(url:fileURL as URL)
        self.playerVC.player = playerView
        self.view.addSubview(self.playerVC.view)
        self.addChildViewController(self.playerVC)
        playerView.play()

    }

你们中的任何人都知道我做错了什么吗?,我将非常感谢您的帮助。

4

3 回答 3

1

这是我的实现。它对我来说很好。

import UIKit
import AVFoundation

class ViewController: UIViewController {
    var playerViewController = AVPlayerViewController()
    var player = AVPlayer()


override func viewDidLoad() {
    super.viewDidLoad()
    self.playVideo()

}


func playVideo () {
   //creating your document folder url
    if let documentsDirectoryURL =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
        // creating your destination folder url
        let destinationUrl = documentsDirectoryURL.appendingPathComponent("video.mp4")
        self.player = AVPlayer(url: destinationUrl)
        self.playerViewController.player = self.player
        self.playerViewController.view.frame = self.view.frame
        self.view.addSubview(self.playerViewController.view)
        self.playerViewController.player?.play()
    }
}
}

希望这可以帮助你!

于 2019-10-27T08:11:48.833 回答
1

我对存储在设备上的 mp4 文件有类似的问题,通过在文件路径前加上“file://”来解决这个问题

 guard let strPath = Bundle.main.path(forResource: "demo", ofType: "mp4"), let url = URL(string: "file://\(strPath)") else {
        print("Umm, looks like an invalid URL!")
        return
    }

这篇文章的启发

于 2019-02-15T16:42:10.520 回答
-4
import UIKit
import AVKit
import AVFoundation


class ViewController: UIViewController {
    var playerVC = AVPlayerViewController()
    var playerView = AVPlayer()

    override func viewDidLoad() {
        super.viewDidLoad()

    }

override func viewDidAppear(_ animated: Bool) {

       let fileURL = NSURL(fileURLWithPath: "video.mp4")

        playerView = AVPlayer(url: fileURL as URL)
        playerViewController.player = playerView
        self.present(playerViewController, animated: true) {
        self.playerViewController.player?.play()
        }
    }
于 2017-12-01T13:47:24.010 回答