Cel C
AVAsset *asset = [AVAsset assetWithURL:sourceURL];
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
CMTime time = CMTimeMake(1, 1);
CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL];
UIImage *thumbnail = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef); // CGImageRef won't be released by ARC
Swift
var asset = AVAsset.assetWithURL(sourceURL)
var imageGenerator = AVAssetImageGenerator(asset: asset!)
var time = CMTimeMake(1, 1)
var imageRef = try! imageGenerator!.copyCGImageAtTime(time, actualTime: nil)
var thumbnail = UIImage.imageWithCGImage(imageRef)
CGImageRelease(imageRef) // CGImageRef won't be released by ARC
Swift 3,0
var sourceURL = URL(string: "Your Asset URL")
var asset = AVAsset(url: sourceURL!)
var imageGenerator = AVAssetImageGenerator(asset: asset)
var time = CMTimeMake(1, 1)
var imageRef = try! imageGenerator.copyCGImage(at: time, actualTime: nil)
var thumbnail = UIImage(cgImage:imageRef)
Uwaga: Interpretuj kod Swift zgodnie z twoją szybką wersją.
Wykonanie samego ekranu działa przy użyciu obu metod, ale problem polega na tym, że zrzut ekranu jest skalowany jako pełny ekran, a nie w tym samym formacie, co moje wideo. Czy istnieje możliwość dostosowania rozmiaru "miniatury"? – kchromik
Daje mi AVErrorOperationNotSupportedForAsset kod błędu. Próbuję załadować adres URL serwera m3u8. Proszę pomóż – ruyamonis346
załadować plik m3u8, który wymaga 'AVPlayer', który jest w stanie odtwarzać plik streaming .m3u8. spróbuj zagrać za pomocą 'AVPlayer'. –