JCVideoManager.swift 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // JCVideoManager.swift
  3. // JChat
  4. //
  5. // Created by deng on 2017/4/26.
  6. // Copyright © 2017年 HXHG. All rights reserved.
  7. //
  8. import UIKit
  9. import AVFoundation
  10. import AVKit
  11. class JCVideoManager {
  12. static func playVideo(data: Data, _ fileType: String = "MOV", currentViewController: UIViewController) {
  13. let playVC = AVPlayerViewController()
  14. let filePath = "\(NSHomeDirectory())/Documents/abcd." + fileType
  15. if JCFileManager.saveFileToLocal(data: data, savaPath: filePath) {
  16. let url = URL(fileURLWithPath: filePath)
  17. let player = AVPlayer(url: url)
  18. playVC.player = player
  19. currentViewController.present(playVC, animated: true, completion: nil)
  20. }
  21. }
  22. static func playVideo(path: String, currentViewController: UIViewController) {
  23. let playVC = AVPlayerViewController()
  24. let url = URL(fileURLWithPath: path)
  25. let player = AVPlayer(url: url)
  26. playVC.player = player
  27. currentViewController.present(playVC, animated: true, completion: nil)
  28. }
  29. static func getFristImage(data: Data) -> UIImage? {
  30. let filePath = "\(NSHomeDirectory())/Documents/getImage.MOV"
  31. if !JCFileManager.saveFileToLocal(data: data, savaPath: filePath) {
  32. return nil
  33. }
  34. let videoURL = URL(fileURLWithPath: filePath)
  35. let avAsset = AVAsset(url: videoURL)
  36. let generator = AVAssetImageGenerator(asset: avAsset)
  37. generator.appliesPreferredTrackTransform = true
  38. let time = CMTimeMakeWithSeconds(0.0,preferredTimescale: 600)
  39. var actualTime = CMTimeMake(value: 0,timescale: 0)
  40. do {
  41. let imageRef = try generator.copyCGImage(at: time, actualTime: &actualTime)
  42. let frameImg = UIImage(cgImage: imageRef)
  43. return frameImg
  44. } catch {
  45. return UIImage.createImage(color: .gray, size: CGSize(width: 160, height: 120))
  46. }
  47. }
  48. }