2016-10-29 3 views
1

Я просто потратил впустую, как 3 часа на это, и я не вижу, где я ошибаюсь.Воспроизведение локального видео с использованием AVPlayer

Я пытаюсь воспроизвести видео, которое я сохранил локально, используя AVPlayer. Это, как я запустить проигрыватель:

- (void)openVideo:(NSURL *)videoURL { 

    NSLog(@"Playing video with the url:\n%@", videoURL); 
    AVPlayer *player = [AVPlayer playerWithURL:videoURL]; 

    AVPlayerViewController *playerViewController = [AVPlayerViewController new]; 
    playerViewController.player = player; 
    [self presentViewController:playerViewController animated:YES completion:nil]; 

} 

И это NSURL я передаю:

+ (NSURL *)getURL:(NSString *)itemKey withType:(NSString *)itemType { 

    NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *dataFilePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: [NSString stringWithFormat:@"%@.%@", itemKey, itemType]]]; 

    NSURL *itemURL; 
    if ([[NSFileManager defaultManager] fileExistsAtPath: dataFilePath]){ // if data exists 
     itemURL = [NSURL fileURLWithPath:dataFilePath]; 
    } 
    else { 
     NSLog(@"The data requested does not exist! Returning an empty url file..."); 
     itemURL = nil; 
    } 
    return itemURL; 

} 

Когда я бегу openVideo, выход я получаю:

Playing video with the url: 
/var/mobile/Containers/Data/Application/72C35DC4-9EF1-4924-91F4-EDA4BDB6AAD3/Documents/sample.vid 

Но я продолжаю получать отключенный видеоплеер.

enter image description here

Что я делаю неправильно?

+0

- это локальный файл, который вы пытаетесь воспроизвести с именем 'sample.vid', или просто переименовали его для кода, который вы выбрали в этом вопросе? Я думаю, что AVPlayer может использовать расширение (например, 'mov',' mp4' и т. Д.), Чтобы определить кодировку видео. –

+0

@MichaelDautermann Файл переименован здесь, но он заканчивается 'vid'. Я попытался переименовать его в 'mp4', но это тоже не сработало. – Malfunction

+0

Не указывайте его расширение '.vid'. Вы уверены, что это файл .mp4'? Вы можете открыть этот файл с помощью проигрывателя QuickTime на вашем Mac и/или мобильном Safari на вашем устройстве? –

ответ

2

Наконец-то вышла проблема. Я загружал свои файлы и сохранял их как NSData, и мне пришлось использовать writeToFile и указать правильное расширение, чтобы их правильно прочитать.

NSString *saveFilePath; = [NSTemporaryDirectory()stringByAppendingPathComponent:@"temp.mp4"]; 

[fileData writeToFile:saveFilePath atomically:YES]; 
NSURL *filepath = [NSURL fileURLWithPath:saveFilePath]; 
AVPlayer *player = [AVPlayer playerWithURL:filepath]; 

Надеюсь, это поможет кому-то там.

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

  • Нет связанных вопросов^_^