【问题标题】:AVPlayer cannot play videoAVPlayer 无法播放视频
【发布时间】:2018-08-18 19:28:16
【问题描述】:

我正在尝试在 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附加到上面的网址后,现在可以播放视频,但是播放时没有声音。如何解决这个问题?

【问题讨论】:

  • 也许尝试在呈现其他视图之前调用playerViewController.player!.play()?我有一种感觉,这无法在完成块内正确运行此行。
  • 我现在可以播放了,看我的回答,但是没有声音..
  • 您的 AppDelegate 中有 do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) try AVAudioSession.sharedInstance().setActive(true) } catch { print(error) } 吗?
  • 为了让您的应用程序播放声音,当设备处于静音模式时,您需要执行这些操作。我相信这可能是您在播放期间没有收到任何音频的原因。请参阅:stackoverflow.com/a/35988158/6448167
  • 感谢您的解释。它有效:)

标签: swift avplayerviewcontroller


【解决方案1】:

问题是当我在磁盘上保存数据时,我没有在路径末尾附加.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/文件/-LK7WSGtGAQ2anpDxkCQ.MOV

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多