【问题标题】:Unable to play .mp4 video file using AVPlayer无法使用 AVPlayer 播放 .mp4 视频文件
【发布时间】:2018-02-19 06:38:59
【问题描述】:

我正在使用AVPlayer 播放来自 url 的视频。

func playVideoFromUrl(urlString: String){

        let videoURL = URL(string: urlString)
        let player = AVPlayer(url: videoURL!)
        let playerViewController = AVPlayerViewController()
        playerViewController.player = player

        let delegate : AppDelegate = UIApplication.shared.delegate as! AppDelegate
        delegate.window?.rootViewController?.present(playerViewController, animated: true) {
            playerViewController.player!.play()
        }
    }

url of video:- "http://gsn-input-dev.s3.amazonaws.com/public/video/00229/9229d4ad2a0c547e7bfa51e3fbef806f.mp4"

我没有在控制台收到任何警告。下面是模拟器的截图。我做错了什么?

【问题讨论】:

  • 视频正在播放,我刚刚检查过了。没有问题。

标签: ios avfoundation avplayer avplayerviewcontroller avkit


【解决方案1】:

我最近发现使用AVPlayer 运行iOS 14 的设备无法播放.mp4 文件。适用于AVPlayer 的兼容视频格式是.mov

【讨论】:

    【解决方案2】:

    我已经完成了你想做的事情。这是我的方法: 首先导入 AVFoundation、AVKit(我相信你有)然后我已经像这样配置了我的视图控制器

       @IBOutlet weak var avPlayerView: UIView! // drag a UIView to view controller
       var videoPlayer = AVPlayer()
       var avPlayerViewController = AVPlayerViewController()
    
       override func viewDidLoad() {
         super.viewDidLoad()
    
         let videoURL = URL(string: "http://gsn-input-dev.s3.amazonaws.com/public/video/00229/9229d4ad2a0c547e7bfa51e3fbef806f.mp4")
    
        self.playVideo(url: videoURL!)
    
    }
    

    playVideo 功能配置如下

      func playVideo(url: URL) {
           self.videoPlayer = AVPlayer(url: url)
           self.avPlayerViewController = AVPlayerViewController()
           self.avPlayerViewController.player = self.videoPlayer
           avPlayerViewController.view.frame = avPlayerView.frame
           self.addChildViewController(avPlayerViewController)
           self.view.addSubview((avPlayerViewController.view)!)
    
       }
    

    以 Source Code 的形式打开您的 info.plist

    然后将其添加到 info.plist

       <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    

    截图如下

    【讨论】:

    • 非常感谢您的辛勤工作。请接受我的赞成票。谢谢!
    • 只需添加一个“s”并使用 https 来避免所有 NSAppTransportSecurity,因为不建议将其设置为 NSAllowsArbitraryLoads。
    【解决方案3】:

    您是否尝试在 info.plist 文件中添加任意加载标志,因为我看到该 url 是一个 HTTP url 并且要使 HTTP url 工作,我们需要通过 info.plist 在应用程序运输安全中指定它,如下所示

    请尝试这样做,因为视频与您的代码完美配合。

    阅读以下文档以获取有关App Transportation Security的更多信息

    希望对你有帮助:)

    【讨论】:

    • 即使进行了这些更改,我仍然遇到同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多