AVAsset не имеет треков или длительности при создании из URL-адреса ALAsset - PullRequest
2 голосов
/ 30 июля 2011

Я извлекаю все видеоустройства из 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.Пожалуйста, дайте мне знать, если вы можете думать о чем-либо.Благодаря.

1 Ответ

0 голосов
/ 31 июля 2011

Хорошо, похоже, это была ошибка в iOS5 beta v1. Я обновился до новейшего, и это сработало. Спасибо тем, кто взглянул на мой вопрос.

...