Как воспроизвести видео из NSData - PullRequest
11 голосов
/ 17 февраля 2011

Привет всем, я хотел бы знать, возможно ли воспроизвести видео из объекта NSData ... с помощью MPMoviePlayerController.

Заранее спасибо, Серхио

Ответы [ 4 ]

14 голосов
/ 17 февраля 2012

Ответ Бена отлично работает на симуляторе, но не работает на устройстве. Вы не можете писать на устройстве нигде.Проверьте код ниже

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"myMove.mp4"];

    [videoData writeToFile:path atomically:YES];
    NSURL *moveUrl = [NSURL fileURLWithPath:path];
    player = [[MPMoviePlayerController alloc]init];
    [player setContentURL:moveUrl];
    player.view.frame = viewPlayer.bounds;
    [viewPlayer addSubview:player.view];
    [player play];
0 голосов
/ 09 сентября 2013

В этом случае лучше использовать NSFileManager вместо writeToFile

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"myMove.mp4"];

[[NSFileManager defaultManager] createFileAtPath:path contents:videoData attributes:nil];

NSURL *moveUrl = [NSURL fileURLWithPath:path];
player = [[MPMoviePlayerController alloc]init];
[player setContentURL:moveUrl];
player.view.frame = viewPlayer.bounds;
[viewPlayer addSubview:player.view];
[player play];
0 голосов
/ 13 июня 2011
  1. создайте файл с типом ваших NSData, например, если ваши NSData имеют тип mp4, создайте файл с этим типом - например, "myMove.mp4"

  2. скопировать файл за пределы вашего ресурса

  3. добавить этот код

    NSData *mediaData; //your data    
    NSString *movePath=[[NSBundle mainBundle] pathForResource:@"myMove" ofType:@"mp4"];         
    [mediaData writeToFile:movePath atomically:YES];        
    NSURL *moveUrl= [NSURL fileURLWithPath:movePath];    
    MPMoviePlayerController *movePlayer=[[MPMoviePlayerController alloc]init];          
    [movePlayer setContentURL:moveUrl]; 
    [movePlayer play];
    
0 голосов
/ 17 февраля 2011

Насколько я знаю, это невозможно. Если данные поступают из вашей БД, можете ли вы сохранить их во временный файл и воспроизвести их?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...