【问题标题】:Avplayer wont playing video from urlAvplayer 没有从 url 播放视频
【发布时间】:2016-10-02 07:41:54
【问题描述】:

当我尝试从 url 播放视频时,AVPlayer 不播放视频。但是当我尝试下载和播放视频时,它正在播放。我做错了什么?

self.avAsset = AVAsset(URL: NSURL(string: contentURLString)!)
 let item = AVPlayerItem(asset: avAsset)
            avPlayer = AVPlayer(playerItem: item)
            playerLayer = AVPlayerLayer(player: avPlayer)
            playerLayer.frame = self.view.frame
            playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
            cell.videoView.layer.addSublayer(playerLayer)
            self.avPlayer.seekToTime(kCMTimeZero)
            avPlayer.play()

【问题讨论】:

  • AVPlayer not playing video 只是不玩?还是有错误信息?有什么症状?
  • 只是不播放视频。
  • 有黑屏吗??
  • 在播放远程文件时,您应该使用 KVO 来获得播放器状态变化的通知。然后您应该能够判断播放是否失败。
  • 查看这个问题以了解更多关于 Xcoder 所谈论的内容stackoverflow.com/questions/5401437/…

标签: ios swift video avplayer


【解决方案1】:

我有同样的症状,我尝试播放来自URL 的示例视频。

但是,我得到一个空的播放器视图,但视频没有播放。 在设备上测试时没有错误消息,但在模拟器上测试时收到以下消息:

无法加载资源,因为应用传输安全策略要求使用安全连接。

所以问题基本上是 HTTP 协议

解决方案 A:使用带有 https 的视频源。

解决方案 B:更改信息文件中的应用传输安全策略 (as described in this topic)

【讨论】:

    【解决方案2】:

    除非服务器支持 Http Range: 参数,否则 AVplayer 不会播放远程 url 视频。否则显示空白黑屏

    【讨论】:

      【解决方案3】:

      Objective-C 答案的 Swift 3.0 翻译

          let videoURL: URL = URL(string: contentURLString)!
      
          let playerViewController = AVPlayerViewController()
          self.playerController = playerViewController
          self.playerController.player = AVPlayer(url: videoURL)
          self.present(self.playerController, animated: true) { 
              self.playerController.player?.play()
          }
      

      【讨论】:

        【解决方案4】:

        为了将 AVPlayer 与远程文件一起使用,创建一个示例项目并在 ViewController 的 viewDidLoad() 中添加以下行。

        NSURL *videoURL = [NSURL URLWithString:contentURLString];
        
        //Use AVPlayerViewController to use default Apple Controls
        AVPlayerViewController *playerViewController = [AVPlayerViewController new];
        self.playerController = playerViewController;
        self.playerController.player = [AVPlayer playerWithURL:videoURL];
        [self presentViewController:self.playerController animated:YES completion:^{
             //Start Playback
             [self.playerController.player play];
        }];
        

        【讨论】:

        • 问题被标记为“swift”,不是“objective-c”。请将您的 Objective-C 示例替换为 Swift 示例。
        猜你喜欢
        • 1970-01-01
        • 2016-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多