Как воспроизводить видео из NSData

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

Ответ 1

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

    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];

Ответ 2

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

Ответ 3

Лучше использовать 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];

Ответ 4

  • создайте файл с типом NSData, например, если ваш NSData является типом mp4, создайте файл с этим типом - например, "myMove.mp4"

  • Скопируйте файл в приложение к вашему приложению

  • добавить этот код

    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];