Я извлекаю все видеоустройства из ALAssetsLibrary (в основном все, что записывается из собственного приложения камеры).Затем я запускаю перечисление для каждого видеоактива, который делает это с каждым видео:
// The end of the enumeration is signaled by asset == nil.
if (alAsset) {
//Get the URL location of the video
ALAssetRepresentation *representation = [alAsset defaultRepresentation];
NSURL *url = [representation url];
//Create an AVAsset from the given URL
NSDictionary *asset_options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:AVURLAssetPreferPreciseDurationAndTimingKey];
AVAsset *avAsset = [[AVURLAsset alloc] initWithURL:url options:asset_options];//[AVURLAsset URLAssetWithURL:url options:asset_options];
//Here is the problem
NSLog([NSString stringWithFormat:@"%i", [avAsset.tracks count]]);
NSLog([NSString stringWithFormat:@"%f", CMTimeGetSeconds(avAsset.duration)]);
}
NSLog сообщает, что AVAsset, который я получил от моего ALAsset, имеет 0 треков и имеет продолжительность 0.0секунд.Я проверил URL, и это "assets-library: //asset/asset.MOV? Id = 9F482CF8-B4F6-40C2-A687-0D05F5F25529 & ext = MOV", что кажется правильным.Я знаю, что на самом деле alAsset - это видео и правильное видео, потому что я отобразил alAsset.thumbnail, и он показывает правильный эскиз для видео.
Все это наводит меня на мысль, что что-то идет не так винициализация для avAsset, но для жизни я не могу понять, что происходит не так.Кто-нибудь может мне помочь?
Обновление:
Я думаю, что я подтвердил, что URL-адрес, данный мне ALAssetRepresentation, неверен, что странно, потому что дает мнеправильный эскиз.Я добавил этот код в:
NSLog([NSString stringWithFormat:@"%i", [url checkResourceIsReachableAndReturnError:&error]]);
NSLog([NSString stringWithFormat:@"%@", error]);
Это дает мне это:
0
Error Domain=NSCocoaErrorDomain Code=4 "The operation couldn’t be completed. (Cocoa error 4.)" UserInfo=0x19df60 {}
Я до сих пор не уверен, что может вызвать это.Единственное, что я замечаю, это URL-адрес, который представляет собой "assets-library: //asset/asset.MOV? Id = 9F482CF8-B4F6-40C2-A687-0D05F5F25529 & ext = MOV" отличается от того, что я видел, как яискал вокруг это.Тот, который я видел в другом месте, больше похож на «assets-library: //asset/asset.MOV? Id = 1000000394 & ext = MOV», с номером вместо буквенно-цифрового, разделенного дефисом имени.
Если это поможет, я использую XCode 4.2 Beta и iOS5.Пожалуйста, дайте мне знать, если вы можете думать о чем-либо.Благодаря.