我找到了几种使用ramVectorTable
获取视频缩略图的方法,但是我想获取一系列视频的缩略图。我正在从iPad上的应用程序文档文件夹中填充阵列。这就是我得到数组的方式:
AVAsset
我正在像这样在 func listVideoFiles(){
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let videoFolderPath = documentDirectoryPath.appending("/Videos")
let videoFiles = FileManager.default.enumerator(atPath: videoFolderPath)
while let file = videoFiles?.nextObject() {
videoArray.append("\(file)")
print("")
}
if videoFiles == nil {
videoArray.append("No Videos Found")
print("No Files")
}
}
中显示数组:
collectionView
如何获取每个视频的缩略图并将其显示在相应的单元格中?
答案 0 :(得分:0)
尝试以下代码:
//Get the document directory path
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let videoFolderPath = documentDirectoryPath.appending("/Videos/")
//Generate the document directory enumerator
let videos = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last!.appendingPathComponent("Videos")
let videoFilesEnumerator = FileManager.default.enumerator(atPath: videos.path). //This will contain all the files in the videos folder
使用以下功能从“视频”文件夹中的视频生成图像
func generateThumbnail(path: URL) -> UIImage? {
do {
let asset = AVURLAsset(url: path, options: nil)
let imgGenerator = AVAssetImageGenerator(asset: asset)
imgGenerator.appliesPreferredTrackTransform = true
let cgImage = try imgGenerator.copyCGImage(at: CMTimeMake(value: 0, timescale: 1), actualTime: nil)
let thumbnail = UIImage(cgImage: cgImage)
return thumbnail
} catch let error {
print("*** Error generating thumbnail: \(error.localizedDescription)")
return nil
}
}
您可以将图像数组作为属性(在此处为“ thumbImages”)并按如下所示填充该数组:
while let element = videoFilesEnumerator?.nextObject() as? String {
let thumbImage = self.generateThumbnail(path: videos.appendingPathComponent(element))
thumbImages.append(newImage)
}
根据方案要求,您必须注意代码中的可选值。提取所有缩略图图像后,您可以将图像直接设置为表格视图中的单元格。
希望这会有所帮助。