嵌入式AVPlayer无法播放视频

时间:2016-06-28 04:44:30

标签: ios swift avplayer app-transport-security embedded-video

我正在尝试使用 Swift 嵌入视频播放器。当我运行应用程序时,我可以看到视频播放器,但视频没有播放。你能查看一下缺失点吗?提前谢谢。

var playerItem: AVPlayerItem?
var player: AVPlayer?

if let videoLink = newLaunch.videoLinks where newLaunch.videoLinks!.count > 0{

    let videoUrl = videoLink[0]
    let streamingURL: NSURL = NSURL(fileURLWithPath: videoUrl)
    player = AVPlayer(URL: streamingURL)
    let playerController = AVPlayerViewController()
    playerController.player = player
    self.addChildViewController(playerController)
    self.videoContainerView.addSubview(playerController.view)
    playerController.view.frame = self.videoContainerView.bounds
    player!.play()
}

enter image description here

4 个答案:

答案 0 :(得分:2)

最后,我使用Swift Youtube Player来嵌入视频。它非常易于使用。

答案 1 :(得分:0)

您使用的是什么版本的IOS?看起来这可能与Apple的新transport layer security enhancements有关。

您需要启用应用以允许来自该特定域的流视频。您可以在开发应用程序时绕过传输层安全性。

查看此主题如何执行此操作:https://stackoverflow.com/a/36305505/5229157

,您可能希望使用其他网址构造函数来传输文件:

let videoUrl = videoLink[0]
let streamingURL = NSURL(string: videoUrl) //- assuming videoLink is of type [String]
player = AVPlayer(URL: streamingURL)

修改

请尝试以下代码:

let videoUrl = videoLink[0]
let streamingURL = NSURL(string: videoUrl)
let playerController = AVPlayerViewController()
playerController.player = AVPlayer(URL: streamingURL)
self.presentViewController(playerController, animated: true) {
    self.playerController.player?.play()
}

答案 2 :(得分:0)

我认为除了UIWebView之外没有办法在iOS应用程序中播放youtube视频。 您也可以通过传递视频网址重定向到youtube应用程序。所以youtube应用程序将处理其余的事情。

您可以阅读YouTube第2部分第10点的指南:https://developers.google.com/youtube/terms?hl=en

您可以使用youtube播放器:https://developers.google.com/youtube/v3/guides/ios_youtube_helper#installation

答案 3 :(得分:-1)

您可以在视图上添加AVPlayer作为图层:

player = [[AVPlayer alloc] init....

playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
CGSize size = self.view.bounds.size;
float x = size.width/2.0-187.0;
float y = size.height/2.0 - 125.0;

playerLayer.frame = CGRectMake(x, y, 474, 320);
[playerLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[self.view.layer addSublayer:playerLayer];
[player play];