无法使用带有 Swift 的 AVPlayer 播放视频

Posted

技术标签:

【中文标题】无法使用带有 Swift 的 AVPlayer 播放视频【英文标题】:Unable to play video using AVPlayer with Swift 【发布时间】:2016-02-22 23:53:55 【问题描述】:

当我点击播放视频时,它显示如下。想知道为什么。没有显示错误。我确实导入了 AVKit 和 AVFoundation。另外,我在我的设备和模拟器中进行了测试。还是不行。有什么建议么?非常感谢。

**Print log**
    //<PFFile: 0x79d472f0>
    //https://files.parsetfss.com/d9cdffff-4a1f-4bd9-b6ee-e60c07d49236/tfss-7e1636b9-5701-4737-9fa6-10609aec89e8-adsVido
    //<AVPlayer: 0x786f39b0>

// Click cell to play video.
    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
        if adsVideoArray[indexPath.row] != nil 
            let theVideo:PFFile = adsVideoArray[indexPath.row]!
            print(theVideo)
            let url:NSURL = NSURL(string: theVideo.url!)!
            theVideo.getDataInBackgroundWithBlock( (data:NSData?, error: NSError?) -> Void in
                if error == nil 
                    let player = AVPlayer(URL: url)
                    print(url)
                    print(player)
                    let playerController = AVPlayerViewController()
                    playerController.player = player
                    self.presentViewController(playerController, animated: true) 
                        player.play()
                    
                
            )
        
    

// load data from parse
    func loadAdsFromParse() 
        adsVideoArray.removeAll(keepCapacity: false)
        let query = PFQuery(className: "user_ads")
        query.findObjectsInBackgroundWithBlock( (objects: [PFObject]?, error: NSError?) -> Void in
            for object in objects! 
                self.adsVideoArray.append(object.objectForKey("video") as? PFFile)
            
            dispatch_async(dispatch_get_main_queue()) 
                self.adsCollectionView.reloadData()
            
        )
    

// the way to save video
    self.tempVideo = info[UIImagePickerControllerMediaURL] as! NSURL!
    let videoData = NSData(contentsOfFile:self.tempVideo.relativePath!)
    let videoFile:PFFile = PFFile(name:"adsVido", data:videoData!)!
    detailsObj["video"] = videoFile
    detailsObj.saveInBackgroundWithBlock ... 

// I tried to play the video before upload it to Parse. It works.
func playImageTapped(pressed: UIGestureRecognizer) 
    let player = AVPlayer(URL: tempVideo)
    let playerController = AVPlayerViewController()
    playerController.player = player
    self.presentViewController(playerController, animated: true) 
        player.play()
    


func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 
    let mediaType = info[UIImagePickerControllerMediaType] as! NSString
    self.tempVideo = videoAdded

【问题讨论】:

请不要多次发布您的问题。 对不起,伙计们。但是,这个问题让我很沮丧。 【参考方案1】:

您是否查看并阅读了关于此的文档...

https://parse.com/docs/osx/api/Classes/PFFile.html

您确定将数据保存为电影而不是图像吗?一个疯狂的猜测?

我似乎记得一篇新文章说 parse.com 正在关闭,所以无论如何使用它可能不是一个好主意...

http://blog.parse.com/announcements/moving-on/

【讨论】:

是的。我想我忘记添加 .mov 添加命名文件的结尾。我只是试图从 Parse 下载视频。它不能播放。但是,一旦我在最后添加 .mov,它就完美了。而且,我还尝试手动重新上传它,它可以使用模拟器播放。今晚将尝试在我的手机上进行测试。

以上是关于无法使用带有 Swift 的 AVPlayer 播放视频的主要内容,如果未能解决你的问题,请参考以下文章

Swift 应用程序中的 AVPlayer 问题

AVPlayer 暂停后无法继续播放

iOS Swift - 嵌入在 UITableViewCell 中的 AVPlayer

我无法在 swift 2.3 中播放保存在目录路径和 AVPlayer 中的视频

如何在其他视图中使用 Swift 中的 AVPlayer 暂停和播放音乐

swift 带有哈希表的多播代理