繁体   English   中英

AVPlayer返回nan视频

[英]AVPlayer returns nan videos

我正在尝试使用以下代码在avplayer上播放视频...但是由于显示持续时间nan而没有得到任何结果。

func setUpPlayer(fileURL:URL){
        let playerItem:AVPlayerItem = AVPlayerItem(url: fileURL)
        player = AVPlayer(playerItem: playerItem)
        let playerLayer=AVPlayerLayer(player: player!)
        playerLayer.frame=CGRect(x:self.videoContainer.frame.origin.x, y:self.videoContainer.frame.origin.y+20, width:self.videoContainer.frame.size.width, height:self.videoContainer.frame.size.height-40)
        player?.addObserver(
            self, forKeyPath:"currentItem", options:.initial, context:nil)

        self.view.layer.addSublayer(playerLayer)


        rangeSlider.setVideoURL(videoURL:fileURL)
        rangeSlider.delegate = self

        self.endTime = CMTimeGetSeconds((player?.currentItem?.duration)!)


       let timeInterval: CMTime = CMTimeMakeWithSeconds(0.01, 100)

//        let asset:AVURLAsset = AVURLAsset.init(url:videoURL)
//        let videoDuration:CMTime = asset.duration;
//
//
//        let timeInterval: CMTime = CMTimeMakeWithSeconds(videoDuration,100)
            //CMTimeGetSeconds(videoDuration)

        timeObserver = player?.addPeriodicTimeObserver(forInterval: timeInterval,
                                                        queue: DispatchQueue.main) { (elapsedTime: CMTime) -> Void in

                                                            self.observeTime(elapsedTime: elapsedTime)

            } as AnyObject!

    }

我是第一次这样做。请给一些解决方案,以解决此问题。谢谢!

您错过了在代码中编写“ player.play()”的过程

let timeRange = self.avPlayer.currentItem.loadedTimeRanges[0].CMTimeRangeValue
let duration = CMTimeGetSeconds(timeRange.duration)

试试这个将对您有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM