iPhone: Проблемы с воспроизведением видео в iOS 5 - PullRequest
0 голосов
/ 02 декабря 2011

В приложении для iPhone я снимаю видео с помощью ImagePickerview и сохраняю его в каталоге документов

Для iOS4 (устройство iPod) я могу воспроизводить видео, хранящееся в каталоге документов, но для iOS 5 (устройство iPad) тот же кодне работает для воспроизведения видео.

, поэтому для iOS 5 есть какой-либо другой способ хранения и воспроизведения видео из каталога документов

(я также пробовал с каталогом библиотеки)

  -(IBAction)saveVideo:(id)sender
    {  
    imagepicker = [[UIImagePickerController alloc] init];
      imagepicker.delegate=self;
     if([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        [imagepicker setSourceType:UIImagePickerControllerSourceTypeCamera];
        [imagepicker setMediaTypes:[UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera]];

         [imagepicker setCameraDevice:UIImagePickerControllerCameraCaptureModeVideo];

        [self presentModalViewController:imagepicker animated:YES];

    } 


 }



    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
  {


     NSMutableString *tempPath = [[[info valueForKey:@"UIImagePickerControllerMediaURL"] absoluteString] mutableCopy];
    NSString *newPath1 = [NSString stringWithFormat:@"myVideo.mov"];
   [tempPath replaceOccurrencesOfString:@"file://localhost/private/" withString:@"/" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [tempPath length])];
   NSFileManager *manager = [NSFileManager defaultManager];
   NSError *error = nil;
  [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject], newPath1];
   NSString *newPath = [NSString stringWithFormat:@"%@/%@", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject], newPath1];


   BOOL success = [manager copyItemAtPath:tempPath toPath:newPath error:&error];

     if(error){         
    NSLog(@"New Path: %@", newPath);
    NSLog(@"Error: %@", error);
  }

   if(success)
   {
    NSLog(@"Succeed");     
   }
     [self dismissModalViewControllerAnimated:YES];
   }


    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
   {
   [picker dismissModalViewControllerAnimated:YES];
   }


    -(IBAction)playVideo:(id)sender
    {
    NSArray *path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [path objectAtIndex:0];
    NSString *myDBnew = [documentsDirectory stringByAppendingPathComponent:@"myVideo.mov"];

     NSURL *url = [[NSURL alloc] initWithString:myDBnew];
    NSLog(@"URL== %@",url);
    moviePlayer =  [[MPMoviePlayerController alloc]
                    initWithContentURL:url];

    //        [[NSNotificationCenter defaultCenter] addObserver:self
    //                                                 selector:@selector(moviePlayBackDidFinish:)
    //                                                     name:MPMoviePlayerPlaybackDidFinishNotification
    //                                                   object:moviePlayer];

    moviePlayer.controlStyle = MPMovieControlStyleDefault;
    moviePlayer.shouldAutoplay = YES;
    [self.view addSubview:moviePlayer.view];
    [moviePlayer setFullscreen:YES animated:YES];
    }

Что может быть не так?

вот код

, если я добавляю видеофайл в свой проект и использую приведенный ниже код, он воспроизводит видео Единственное, что он не воспроизводит видеоиз каталога документов

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"myVideo" ofType:@"mov"]];
    moviePlayer =  [[MPMoviePlayerController alloc]
                    initWithContentURL:url];

Даже в iTunes через дрожание я вижу файл: "myVideo.mov", после запуска приложения в устройстве означает, что это кодирует запись и хранение видео, но не может читать или воспроизводить.

Пожалуйста, помогите и предложите.

Спасибо

1 Ответ

0 голосов
/ 17 декабря 2011

Здесь, в моем коде, проблема заключалась в том, как я создаю URL

   NSURL *url = [[NSURL alloc] initWithString:myDBnew];

, который не работает для ios5, поэтому я заменил в коде на

  NSURL *url = [[NSURL alloc] initFileURLWithPath:<#(NSString *)#> isDirectory:<#(BOOL)#>];
...