4

我正在尝试使用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()
}

在此处输入图像描述

4

4 回答 4

2

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

于 2016-06-28T09:53:38.750 回答
1

UIWebView我认为除了在 iOS 应用程序中播放 youtube 视频之外别无他法。您也可以通过传递您的视频 url 重定向到 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

于 2016-06-28T06:41:53.577 回答
0

你用的是什么版本的IOS?看起来这可能与 Apple 的新传输层安全增强功能有关。

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

查看此线程以了解如何执行此操作:https ://stackoverflow.com/a/36305505/5229157

此外,您可能希望使用不同的 url 构造函数来流式传输您的文件:

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()
}
于 2016-06-28T04:57:16.660 回答
-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];
于 2016-11-25T10:44:00.903 回答