【问题标题】:Embedded AVPlayer is not playing video嵌入式 AVPlayer 不播放视频
【发布时间】:2016-10-30 05:59:29
【问题描述】:

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

【问题讨论】:

  • 你能检查一下吗-> 而不是将 playercontroller 添加为 childcontroller.. 呈现/推送它。现在上班了吗。。如果是,那么至少我们知道..这是由于添加了 childviewcontroller 否则,AVPlayer 还有一些其他问题。
  • @Mehul,我想是的。我会试试看。
  • 另外,通过调试文件URL路径检查您使用的是否正确。有时,使用 fileurlpath 的路径会出现问题,所以也尝试其他方式
  • @MehulThakkar,我已经检查了文件 url 路径,我可以看到从服务器接收的文件路径。
  • 如果您使用服务器 url.. 则永远不要使用 fileURLWithPath,遇到问题.. 使用 urlWithString 作为服务器 url。 fileURLWithPath 用于本地 url。现在它将起作用。尝试。我 100% 确定,这个网址有问题,对吗?

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


【解决方案1】:

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

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

查看此线程以了解如何执行此操作: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()
}

【讨论】:

  • 我使用的是 iOS 8.1。在 info.plist 中,我设置了“允许任意负载 = YES”。我也尝试过使用 NSURL(string: videoUrl) ,但结果是一样的。视频仍未播放。
  • 我编辑了我的答案,从您的视图控制器尝试这种方法。希望对您有所帮助!
  • 感谢您的帮助,仍然无法播放视频。
  • 糟糕!抱歉,我刚刚意识到我错过了一行 playerController.player = AVPlayer(URL: streamingURL),我更新了代码块
  • 在我的代码中,我在 videoContainerView 中嵌入了 playerController。因此,除了您的代码之外,我还添加了两行代码,用于将子视图添加到 videoContainerView 中。但结果也不例外。
【解决方案2】:

我认为除了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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您可以将 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];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-02
        • 1970-01-01
        • 2018-04-16
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多