【问题标题】:Why isn't video playing or is my URL not working?为什么没有视频播放或我的 URL 不起作用?
【发布时间】:2017-08-08 22:22:18
【问题描述】:

我想通过按下单元格内的按钮来播放视频。在我的代码中没有错误,所以我认为每件事都设置正确,但是当我运行模拟器时,视频不会播放。是 URL 还是我需要在某处添加更多代码?播放网站上托管的视频的最佳方式是什么,提供它的网址?如果是这样,这对我不起作用。

代码如下:

import UIKit
import AVFoundation
import AVKit

 class VideoPlayerView: UIView {

override init(frame: CGRect) {
    super.init(frame: frame)

    backgroundColor = UIColor.black


    let urlString = "www.dailymotion.com./video/x1prji_scott-hall-vs-hollywood-hulk-hogan-sport"

    if let url = URL(string: urlString) {
    let player = AVPlayer(url: url)

        let playerLayer = AVPlayerLayer(player: player)
        self.layer.addSublayer(playerLayer)
        playerLayer.frame = self.bounds


        player.play()
    }
}
required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}


 }

 class DrillsTableViewCell: UITableViewCell {

@IBOutlet weak var logoImage: UIImageView!

@IBOutlet weak var drillTitle: UILabel!


@IBOutlet weak var playButton: UIButton!
@IBAction func watchButton(_ sender: Any) {
    print(123)



        if let keyWindow = UIApplication.shared.keyWindow {
            let view = UIView(frame: keyWindow.frame)
            view.backgroundColor = UIColor.white


           view.frame = CGRect(x: 0.0, y: 0.0, width: keyWindow.frame.width, height: keyWindow.frame.height)

            let videoPlayerFrame = CGRect(x: 0, y: 0, width: keyWindow.frame.width, height: keyWindow.frame.width * 9 / 16)
            let videoPlayerView = VideoPlayerView(frame: videoPlayerFrame)
            view.addSubview(videoPlayerView)


            keyWindow.addSubview(view)
            UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseOut, animations: {

                    view.frame = keyWindow.frame

            }, completion: { (completedAnimation) in
                //possible features implemented later
                UIApplication.shared.isStatusBarHidden = true


            })



    }

    }

 }

【问题讨论】:

  • 我怀疑AVPlayer 需要一个视频文件(如.mp43gp),但您的代码正在给它一个网页(.html 文件)。您可以使用webView打开网页。

标签: url video video-streaming cell avplayer


【解决方案1】:

正如 VC.One 所说,您使用的 URL 指向一个网页 - 即一个看起来像这样的 HTML 页面:

换句话说,您提供的是整个 HTML5 页面、图像、视频、CSS 等 - 浏览器显示整个页面所需的信息。

AVPlayer 期待视频资源的 URL - 即 MP4 文件或流式索引文件或清单。

通常情况下,YouTube 或 DailyMotion 等网站希望您在包含他们的视频时包含他们的品牌。

对于您的示例,如果您单击共享按钮,您将看到一些嵌入代码,您可以在网页上包含这些代码以仅包含此特定视频。(这是针对网络而不是本机播放器):

<iframe frameborder="0" width="480" height="270" src="//www.dailymotion.com/embed/video/x1prji" allowfullscreen></iframe><br /><a href="http://www.dailymotion.com/video/x1prji" target="_blank">Scott Hall vs. &quot;Hollywood&quot; Hulk Hogan</a> <i>by <a href="http://www.dailymotion.com/Stinger1981" target="_blank">Stinger1981</a></i>

还有一个 SDK 可让您在应用程序中嵌入 DailyMotion 视频 - 如果是用于 ObjectiveC 的 SDK,还有一个用于 Swift 的较新的:

【讨论】:

  • 因此,为了让我只从网站获取视频文件,而不是整个网站 URL,我该如何将代码格式化为播放视频的位置?
  • 如果是原生应用,你真的很想使用 SDK。
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 2018-03-12
  • 2018-01-14
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多