Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift AVPlayer无法播放视频_Swift_Avplayerviewcontroller - Fatal编程技术网

Swift AVPlayer无法播放视频

Swift AVPlayer无法播放视频,swift,avplayerviewcontroller,Swift,Avplayerviewcontroller,我试图在JSQMessagesViewController的子类中播放视频,但它没有开始播放onClick事件。 我正在从firebase下载视频,然后通过附加一个唯一的引用(LK7WSGtGAQ2anpDxkCQ)在设备上写入数据。有关完整路径,请参见下面的打印输出语句 //response to collection view tap events //called every time we type on a message override func collectio

我试图在JSQMessagesViewController的子类中播放视频,但它没有开始播放onClick事件。 我正在从firebase下载视频,然后通过附加一个唯一的引用(LK7WSGtGAQ2anpDxkCQ)在设备上写入数据。有关完整路径,请参见下面的打印输出语句

  //response to collection view tap events
   //called every time we type on a message
   override func collectionView(_ collectionView: JSQMessagesCollectionView!, didTapMessageBubbleAt indexPath: IndexPath!) {
    let message = messages[indexPath.item]

    print("message type is \(message.type) and message media uid is \(message.mediaMessage?.mediaUID)")

    if message.type == MessageType.image {
      let jsqMessage = jsqMessages[indexPath.item]
      let mediaItem = jsqMessage.media as! JSQPhotoMediaItem
      let photos = IDMPhoto.photos(withImages: [mediaItem.image])
      let browser = IDMPhotoBrowser(photos: photos)
      self.present(browser!, animated: true, completion: nil)
}

 if message.type == MessageType.video {

    let jsqMessage = jsqMessages[indexPath.item]
        if jsqMessage.isMediaMessage {

            if let mediaItem = jsqMessage.media as? JSQVideoMediaItem {

                print("mediaItem.fileURL is \(mediaItem.fileURL)")
               let player = AVPlayer(url: mediaItem.fileURL)
                let playerViewController = AVPlayerViewController()
                playerViewController.player = player
                self.present(playerViewController, animated: true) {
                    playerViewController.player!.play()
                }
            }
        }
    }

  }
}//end of extension
mediaItem.fileURL为 可选的(file:///Users/bogdanbarbulescu/Library/Developer/CoreSimulator/Devices/7FB42206-997D-4AC2-B0BD-CEE2E22DAFBE/data/Containers/Data/Application/8F17DF31-16B1-4B27-ACB2-015AA55D8979/Documents/-LK7WSGtGAQ2anpDxkCQ)

更新

将.MOV添加到上面的url后,现在可以播放视频,但播放时没有声音。如何解决此问题?

问题是,当我在磁盘上保存数据时,我没有在路径的末尾附加
.MOV
扩展名,因此AVPlayer无法播放视频

之前: mediaItem.fileURL为file:///Users/bogdanbarbulescu/Library/Developer/CoreSimulator/Devices/7FB42206-997D-4AC2-B0BD-CEE2E22DAFBE/data/Containers/Data/Application/8F17DF31-16B1-4B27-ACB2-015AA55D8979/Documents/-LK7WSGtGAQ2anpDxkCQ


之后:file:///Users/bogdanbarbulescu/Library/Developer/CoreSimulator/Devices/7FB42206-997D-4AC2-B0BD-CEE2E22DAFBE/data/Containers/Data/Application/8F17DF31-16B1-4B27-ACB2-015AA55D8979/Documents/-LK7WSGtGAQ2anpDxkCQ.MOV

也许可以尝试调用
playervewcontroller.player!。在显示另一个视图之前播放()?我感觉这不能在完成块中正确运行这一行。我现在可以播放它,看到我的答案,但是没有声音。您是否有
Do{try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)try AVAudioSession.sharedInstance().setActive(true)}catch{print(错误)}
在您的AppDelegate中?为了让您的应用程序在设备处于静默模式时播放声音,您需要执行这些操作。我相信这可能是您在播放过程中没有收到任何音频的原因。请参阅:。感谢您的解释。它可以工作:)