无法在我的 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 应用程序中与我的外部附件通信以播放流中的视频