【问题标题】:Play video from Download URL从下载 URL 播放视频
【发布时间】:2019-02-22 10:59:31
【问题描述】:

我有一个网址:-“http://fitnation.theclientdemos.com:9000/media/uploads/videoplayback_3_JtVCHi1” 当我在浏览器上运行此 URL 时,我的 VDO 开始下载。

请帮助在视图中播放此视频(让视图名称为:- vdoView)

为此,我正在尝试以下代码:-

import UIKit
import AVKit
import AVFoundation

class VideoViewController: UIViewController {

    @IBOutlet weak var vdoView: UIView!

    override func viewDidLoad() {

        super.viewDidLoad()

        getVideo()
    }

    func getVideo(){

        let videoURL = URL(string: "http://fitnation.theclientdemos.com:9000/media/uploads/videoplayback_3_JtVCHi1")

        let player = AVPlayer(url: videoURL!)
        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.frame = self.vdoView.bounds
        self.vdoView.layer.addSublayer(playerLayer)
        player.play()

    }

【问题讨论】:

  • 你检查this thread了吗?
  • 根据你的代码,你忘了layer.videoGravity = AVLayerVideoGravity.resizeAspectFill
  • @mustafa 我应该在哪里添加此代码?
  • 是的,我也检查了线程,它播放已经保存的视频,在我的情况下,我通过链接播放

标签: swift xcode


【解决方案1】:

首先你必须import AVKit, import AVFoundation

使用 AVPlayer

  if let url = URL(string: "http://fitnation.theclientdemos.com:9000/media/uploads/videoplayback_3_JtVCHi1"){

            let player = AVPlayer(url: url)
            let controller=AVPlayerViewController()
            controller.player=player
            controller.view.frame = self.view.frame
            self.view.addSubview(controller.view)
            self.addChildViewController(controller)
            player.play()
        }

最好将此代码放入方法中: override func viewDidAppear(_ animated: Bool) 或之后的某个地方。

【讨论】:

    【解决方案2】:
    override func viewDidLoad()
    
        {
           let videoURL = NSURL(string: "http://fitnation.theclientdemos.com:9000/media/uploads/videoplayback_3_JtVCHi1")
            let player = AVPlayer(url: videoURL! as URL)
            let playerViewController = AVPlayerViewController()
            playerViewController.player = player
            self.present(playerViewController, animated: true) {
                playerViewController.player!.play()
            }
    
    
        }
    

    【讨论】:

      【解决方案3】:

      你应该这样尝试

      func getVideo(){
      
          let videoURL = URL(string: "http://fitnation.theclientdemos.com:9000/media/uploads/videoplayback_3_JtVCHi1")
          // Create an AVAsset
          let videoAsset = AVAsset(url: videoURL!)
          // Create an AVPlayerItem with asset
          let videoPlayerItem = AVPlayerItem(asset: videoAsset)
          // Initialize player with the AVPlayerItem instance.
          let player = AVPlayer(playerItem: videoPlayerItem)
          let playerLayer = AVPlayerLayer(player: player)
          playerLayer.frame = self.vdoView.bounds
          self.vdoView.layer.addSublayer(playerLayer)
          player.play()
      }
      

      你应该更新你的 plist 文件以允许来自 http:Refer here 的内容

      【讨论】:

      【解决方案4】:

      *您只需将代码更改为:

      import AVFoundation
      
      class your class name
      
      var player: AVPlayer?
      
      func playAudio() {
          guard let url = URL.init(string: "http://192.168.100.184:9050/uploads/sound/file/1/a1b19343-f785-4d48-b7d5-1abe26c03ff3.mp3" ) else { return }
      
          player = AVPlayer.init(url: url)
      }
      

      最后调用IBAction body中的func*

      就像下面的代码:

      @IBAction play (sender: Any) {
      playAudio()
      }
      

      【讨论】:

      • 如果你能在你的代码中添加一个小描述会更有帮助。
      猜你喜欢
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 2018-03-21
      • 1970-01-01
      • 2016-09-28
      • 2016-10-02
      • 2017-09-10
      相关资源
      最近更新 更多