AVPlayer cannot play video

倾然丶 夕夏残阳落幕 提交于 2019-12-25 03:06:51

问题


I am trying to play a video inside a subclass of JSQMessagesViewController, but it doesn't start playing onClick event. I am downloading the video from firebase, and then I write the data on the device by appending a unique reference -LK7WSGtGAQ2anpDxkCQ. Please see below print out statement for the complete path.

  //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 is Optional(file:///Users/bogdanbarbulescu/Library/Developer/CoreSimulator/Devices/7FB42206-997D-4AC2-B0BD-CEE2E22DAFBE/data/Containers/Data/Application/8F17DF31-16B1-4B27-ACB2-015AA55D8979/Documents/-LK7WSGtGAQ2anpDxkCQ)

Update
The video can by played now after appending .MOV to the url above, but there is no sound when it's played. How to fix this?


回答1:


The problem was that when I was saving the data on the disk, I did not append .MOV extension to the end of the path, thus AVPlayer, could not play the video.

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

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



来源:https://stackoverflow.com/questions/51911924/avplayer-cannot-play-video

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!