iOS: How to save a video in your directory and pla

2020-03-04 08:12发布

问题:

I am working in an iOS project. I want may application to download a video from the internet programmatically. Then I want to play it. I know how can I play a local video from the Resources, but my question is how could I download it , and the find it to be played. I am using MPMoviePlayerController to run the video.

Thanking in advance

回答1:

I found the answer

here I saved the video

    NSString *stringURL = @"http://videoURL";
NSURL  *url = [NSURL URLWithString:stringURL];
NSData *urlData = [NSData dataWithContentsOfURL:url];
NSString  *documentsDirectory ;
if ( urlData )
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
   documentsDirectory = [paths objectAtIndex:0];

    NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"videoName.mp4"];
    [urlData writeToFile:filePath atomically:YES];

}

and this code is for playing the video form its directory

    NSString  *filepath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"videoName.mp4"];

//video URL
NSURL    *fileURL    =   [NSURL fileURLWithPath:filepath];
moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
[moviePlayerController play];


回答2:

If you have a valid url of the video, Apple provides an API to directly buffer videos with NSURL.

  1. You should hold a reference to the MPMoviePlayerController object from the controller so that ARC doesn't release the object.

    @property (nonatomic,strong) MPMoviePlayerController* mc; 
    
  2. Make the URL

    NSURL *url = [NSURL URLWithString:@"http://www.example.com/video.mp4"];
    
  3. Init MPMoviePlayerController with that URL

    MPMoviePlayerController *controller = [[MPMoviePlayerController alloc] initWithContentURL:url];
    
  4. Resize the controller, add it to your view, play it and enjoy the video.

    self.mc = controller; // so that ARC doesn't release the controller
    controller.view.frame = self.view.bounds;
    [self.view addSubview:controller.view];
    [controller play]; //Start playing 
    

For more detail you can visit this playing video from a url in ios7