我試圖爲視頻文件創建縮略圖:是否可以使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
參數看起來是提供文件類型的好地方,但根據文檔,似乎沒有任何支持。
PS。我測試了代碼,具有正確擴展名的相同文件產生縮略圖就好了。
你能告訴我PLZ。你如何創建硬鏈接到文件,實際上我有一個你管視頻的網址,我必須使用它的網址創建該視頻的縮略圖 – 2012-03-01 12:20:23
你的意思是一個本地文件的URL,或一個普通的HTTP YouTube網址?使用'[NSFileManager linkItemAtURL:toURL:error:]''可以很容易地鏈接本地文件的URL。從HTTP YouTube視頻URL創建縮略圖值得[單獨的問題](http://stackoverflow.com/questions/ask),恕我直言。 – zoul 2012-03-01 13:04:11
在iOS7和[[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]中仍然沒有修復;'沒有擴展名的文件沒有問題 – 2013-10-19 19:51:28