无法在我的 ios 应用中播放视频

Posted

技术标签:

【中文标题】无法在我的 ios 应用中播放视频【英文标题】:Cant play video in my ios app 【发布时间】:2018-01-19 13:43:55 【问题描述】:

我想在我的 ios 应用程序中安装视频播放器(我使用的是 xcode 版本 9.2 和 swift 版本 4)。它必须播放来自互联网的 m3u8 视频。我为此使用下面的代码:

import UIKit
import AVKit
import AVFoundation

class ViewControllerPlayer: UIViewController 

    override func viewDidLoad()             
        super.viewDidLoad()
        let videoURL = URL(string: "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
        let video = AVPlayer(url: videoURL!)
        let videoPlayer = AVPlayerViewController()
        videoPlayer.player = video
        present(videoPlayer, animated: true, completion: 
            video.play()
        )

    

    override func viewDidAppear(_ animated: Bool) 
        super.viewDidAppear(animated)
    

但不幸的是,编译后我的应用程序崩溃并且不播放视频。然后我将代码从viewDidLoad() 方法转移到viewDidAppear()。但是没有效果。那么,如何在我的 ios 应用程序中播放来自互联网的视频?谢谢。

【问题讨论】:

检查你的控制台,你是否得到类似:App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file Andrea Mugnaini,是的,你是对的 不要在viewDidLoad 中调用present,因为它可能尚未显示,因此无法显示任何内容。 【参考方案1】:

present 方法的文档对completion 进行了以下说明:

演示结束后要执行的块。这个块没有返回值,也没有参数。您可以为此参数指定 nil。

video.play() 移到present 上方,它应该可以工作。

但是您使用的是 HTTP,所以 ATS 会抱怨它并且不会显示视频。

将以下代码添加(不良做法)到您的 Info.plist 以禁用 ATS:

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

【讨论】:

不幸的是,它没有帮助:(

以上是关于无法在我的 ios 应用中播放视频的主要内容,如果未能解决你的问题,请参考以下文章

无法使用YTPlayerView在iOS上播放背景中的YouTube视频

无法通过扬声器播放视频音频 - iOS

在我的 iOS 应用程序中与我的外部附件通信以播放流中的视频

无法在 iOS 上加载播放视频

我想在我的 ios 应用程序中播放在线视频,我正在使用 Swift3 + xcode [重复]

Html 视频标签无法在我的 Angular 应用程序中的 Safari 中播放