iPhone4, iOS 4.3.3, iOS SDK4.3
Привет всем,
Я создаю функцию загрузки видео. Видео извлекается с помощью UIImagePickerController и может быть захвачено с помощью камеры или выбрано из библиотеки фотографий. У меня есть ограничение приложения длительностью 60 секунд. Это легко достигается при записи видео с помощью камеры через:
// Ограничение видео до 60 секунд
[подборщик setVideoMaximumDuration: 60];
Однако, когда видео выбрано из библиотеки фотографий, единственный способ получения длительности - использовать свойство длительности MPMoviePlayerController следующим образом:
// MediaType может быть kUTTypeImage или kUTTypeMovie.
NSString * mediaType = [info objectForKey: UIImagePickerControllerMediaType];
NSLog (@ "% @", MEDIATYPE);
// если это фильм
if ( [mediaType isEqualToString:(NSString*)kUTTypeMovie] ) {
// get the URL
NSURL* mediaURL = [info objectForKey:UIImagePickerControllerMediaURL];
NSLog(@"%@",mediaURL);
// can use MPMoviePlayerController class to get duration
int duration = -1;
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: mediaURL];
if (moviePlayer != nil) {
duration = moviePlayer.duration;
NSString *path = moviePlayer.contentURL;
[moviePlayer release];
}
однако длительность всегда равна 0. Я знаю, что у видео есть продолжительность, потому что продолжительность отображается как часть субтитра при выборе его в библиотеке фотографий. Я понимаю, что продолжительность может быть не всегда доступна, но в этом случае продолжительность отображается в фотобиблиотеке. Я также проверяю свойство contentURL, и оно имеет хорошее значение. Я могу получить файл, получить его размер и т. Д., Поэтому я знаю, что NSURL файла хорош ...
Спасибо!