Проблема при попытке воспроизвести (с помощью MPMoviePlayerViewController) видео / песню, которые я скачал и сохранил в файле - PullRequest
2 голосов
/ 04 января 2011

Вот моя проблема.

У меня есть MPMoviePlayerViewController, который воспроизводит некоторые видео, которые находятся в Интернете. Эта часть работает.

Но чтобы воспроизвести их позже, без подключения к интернету, я сохраняю их на телефоне с этим фрагментом кода

    NSData * data = [NSData dataWithContentsOfURL:[self dataURL]];

    NSArray * documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * baseDocumentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil;

    [data writeToFile:[baseDocumentPath stringByAppendingPathComponent:_itemId] 
       atomically:YES];

Эта часть в порядке, я могу воспроизводить файлы на моем iMac, если я беру их с телефона.

Но после этого, когда я сделаю

    NSArray * documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * baseDocumentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil;
    videoController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:[baseDocumentPath stringByAppendingPathComponent:file.itemId]]];

В модальном viewController просто серое окно. И я не получаю уведомлений от игрока.

Есть идеи?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 08 июля 2011

Сегодня я столкнулся с той же самой проблемой.

Кажется, что iOS не будет загружать медиа-файлы с неправильным расширением.ИМХО, это довольно глупое поведение, так как я храню свои медиа-файлы со случайными именами (UUID).

Быстрый обходной путь - использовать следующий код для создания символической ссылки на исходный файл и предоставления ему правильногорасширение.Теперь iOS с радостью загрузит файл.

// Create a symlink for iOS as it won't load any files with the wrong extension
NSString *fixedFileName = [fileName stringByAppendingString:@".mp4"];
[[NSFileManager defaultManager] createSymbolicLinkAtPath:fixedFileName 
                                     withDestinationPath:fileName error:NULL];

Надеюсь, это поможет.Мы просто игнорируем тот факт, что произошла ошибка, если символическая ссылка уже существует.

1 голос
/ 04 января 2011

Кто-то нашел причину проблемы.

Имя файла не имеет расширения (например .mp4), поэтому MPMovieController не пытается его прочитать (это звучит для меня безумно -_-) Если бы у меня был вручную .mp4 к моему видеофайлу. приложение может прочитать его ... Я добавлю расширение каждого файла к его имени.

Спасибо в любом случае:)

...