2015-11-10 4 views
0

Это странно, но в основном я загружаю и сохраняю видео локально, а хранилище - путь к URL-адресу для предоставления AVPlayer для воспроизведения.Локальные сохраненные видео снова не воспроизводятся после закрытия приложения

Это прекрасно работает в первый раз, когда я это делаю. Я загружаю файл, а затем я могу воспроизвести его в своем сердце столько раз, пока я не выйду из приложения. Когда я запускаю приложение во второй раз, теперь я получаю черный экран, когда я пытаюсь воспроизвести то же точное видео, используя тот же самый точный путь.

Поскольку я использую Симулятор, я могу проверить, что видео и картинки действительно очень много еще существуют в той же папке, в которую я их сохранил, и я все еще могу воспроизвести их, если я нажму на них из Finder.

Возможно, это проблема с кешированием? Если это имеет значение, я сохранил их прямо в каталоге Library, когда я тестирую это.

Соответствующий код:

NSString *outputFile = [NSString stringWithFormat:@"video_%@.mp4", guid]; 
NSString *outputDirectory = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *tempPath = [outputDirectory stringByAppendingPathComponent:outputFile]; 
NSURL *fileURL = [NSURL fileURLWithPath:tempPath]; 
// save the video to the URL 

Тогда я «упорствовать» его с помощью NSString [fileURL path] (путь я построил это, предположим, что решение требует NSString для NSURL преобразования).

Позже я создать AVPlayerItem:

NSURL *url = [NSURL fileURLWithPath:persistedObject.contentURL]; 
NSLog(@"url: %@", url); // prints a valid location** 
AVPlayerItem *item = [AVPlayerItem playerItemWithURL:url]; 

**, например, это является местом Пример URL

url: file:///Users/gabriel/Library/Developer/CoreSimulator/Devices/CE1FC933-808C-4003-9BE4-DEC59B787FF7/data/Containers/Data/Application/FAD072B4-B5B0-4487-8A76-57B047324A00/Library/picture_D8DEAFA5-0843-4AA3-BB32-C61E32D13579.mp4 

Это было предложено я использую URLForDirectory:inDomain:appropriateForURL:create:error: и URLByAppendingPathComponent: вместо этого, который я буду смотреть. Но все еще запутался, почему он будет играть, когда я его сначала загружу, но не после того, как приложение выйдет, когда это тот же самый точный файл.

+0

Обновите свой вопрос соответствующим кодом. Обязательно укажите соответствующий код для получения URL-адреса видео. – rmaddy

+0

сделано, дайте мне знать, если это мне не хватает ничего полезного – gadu

ответ

2

Вы совершили классическую ошибку. Вы сохраняете полный путь. Но полный путь меняется. Никогда не сохраняйте полный путь. Только сохраняйте часть пути относительно значения, полученного от NSSearchPathForDirectoriesInDomains.

Учитывая, что вы делаете, вы должны сохранить только имя файла базы (outputFile). Затем, когда приложение запустится, вы снова создадите полный путь, как и вы, но используйте сохраненное имя файла, чтобы добавить его к динамически полученному пути в папку поддержки приложения.

Смежные вопросы