Я пытаюсь создавать эскизы для видео файлов:Возможно ли сделать работу AVURLAsset без расширения файла?
- (UIImage*) thumbnailForVideoAtURL: (NSURL*) videoURL
{
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
CGImageRef imageHandle = [generator copyCGImageAtTime:kCMTimeZero actualTime:NULL error:NULL];
if (imageHandle) {
UIImage *frameImage = [UIImage imageWithCGImage:imageHandle];
CFRelease(imageHandle);
return frameImage;
} else {
return nil;
}
}
Загвоздка в том, что видео файлы хранятся в content-addressable store и не имеют расширения. Это, кажется, бросить AVURLAsset
прочь, как актив будет создаваться, но при чтении изображения кадра, я получаю следующее сообщение об ошибке:
Error Domain=AVFoundationErrorDomain Code=-11828 "Cannot Open" UserInfo=0x167170 {NSLocalizedFailureReason=This media format is not supported., NSUnderlyingError=0x163a00 "The operation couldn’t be completed. (OSStatus error -12847.)", NSLocalizedDescription=Cannot Open}
ли это документированный или упоминается где-нибудь? Я не могу поверить, что мне действительно нужно передать информацию о формате файла через имя файла. Аргумент options
для инициализатора AVURLAsset
выглядит как хорошее место для подачи файла, но, согласно документации, похоже, для этого нет никакой поддержки.
PS. Я протестировал код, тот же файл с правильным расширением делает миниатюры просто прекрасными.
Можете ли вы сказать мне плз. что как u создал жесткую ссылку на файл, на самом деле у меня есть url для видеороликов, и мне нужно создать миниатюру этого видео, используя его url –
Вы имеете в виду локальный URL-адрес файла или обычный URL-адрес HTTP YouTube? Локальный URL-адрес файла можно легко связать с помощью '[NSFileManager linkItemAtURL: toURL: error:]'. Создание миниатюры с URL-адреса видеоролика HTTP заслуживает внимания [отдельный вопрос] (http://stackoverflow.com/questions/ask), IMHO. – zoul
Все еще не исправлено в iOS7 и '[[AVAudioPlayer alloc] initWithContentsOfURL: ошибка URL: nil];' не имеет проблем с файлами, не имеющими расширений –