iOS 5.1 ,aquí está el código:

 MPMoviePlayerController *player =
    [[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithString:@"map.mp4"]];
    [player prepareToPlay];
    [player.view setFrame: self.view.bounds];  //player's frame must match parent's
    [self.view addSubview: player.view];
    //...
    [player play];

de hecho ,este es el mismo que el de apple referencia de decir,pero cuando hago clic en el botón para utilizar esta función,sólo hay un Rectángulo negro que permanecer allí,no vedio de jugar ,no hay sonido sucediendo,y no triture,así que quiero saber cómo hacer este trabajo

mi código es el trabajo o no?

OriginalEl autor Pengxuan Li | 2012-05-03

8 Comentarios

  1. 17

    Lo siento por muy tardía respuesta. La Solución es una especie de extraño. Pero me ayudaba a seguir adelante mientras se enfrentan el mismo problema.

    MPMovieSourceTypeStreaming es la cosa te ha faltado.

    MPMoviePlayerController *player =
    [[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithString:@"map.mp4"]];
    [player prepareToPlay];
    [player.view setFrame: self.view.bounds];  //player's frame must match parent's
    player.movieSourceType    = MPMovieSourceTypeStreaming;
    [self.view addSubview: player.view];
    //...
    [player play];
    Este no era el cartel original del problema, pero fue sin duda el mío!
    así que @shulmey, lo ayudó?
    Mi problema fue que no me he fijado la movieSourceType de la propiedad. Así que si ayuda a alguien. asegúrese de que establece que la propiedad. Por defecto, se debe establecer en MPMovieSourceTypeUnknown. Cuando me he puesto a MPMovieSourceTypeFile. A mí me funcionó.
    lo siento, no funcionó para mí.Estoy en ios7.0
    Gracias por tu respuesta bro. Tenía el mismo problema como OP, y no sabía esto de una línea, es decir, player.movieSourceType = MPMovieSourceTypeStreaming; podía hacer magia!

    OriginalEl autor Suresh Varma

  2. 4

    Usted puede enviar su

    [player play] 

    mensaje demasiado pronto.

    Utilizar el siguiente a la notificación de la observación

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playMovie:) name:MPMoviePlayerLoadStateDidChangeNotification object:player];

    Para escuchar la loadState cambio jugable. Para comprobar que la actualización de ello :

    - (void)playMovie:(NSNotification *)notification {
        MPMoviePlayerController *player = notification.object;
        if (player.loadState & MPMovieLoadStatePlayable)
        {
            NSLog(@"Movie is Ready to Play");
            [player play];
        }
    }

    La película debe de empezar a jugar, una vez que esté listo.

    OriginalEl autor David Hegner

  3. 1

    Probar este código a continuación para reproducir vídeo de su proyecto de Recursos :

      NSBundle *bundle = [NSBundle mainBundle];
      NSString *moviePath = [bundle pathForResource:@"map" ofType:@"mp4"];
      NSURL *movieURL = [[NSURL fileURLWithPath:moviePath] retain];
    
      MPMoviePlayerController *player =
      [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
      [player prepareToPlay];
      [player.view setFrame: self.view.bounds];  //player's frame must match parent's
      [self.view addSubview: player.view];
        //...
      [player play];

    Gracias..!

    La terminación de la aplicación debido a uncaught exception ‘NSInvalidArgumentException’, la razón: ‘*** -[NSURL initFileURLWithPath:]: nil parámetro de cadena’ y Gracias por tu ayuda,pero yo había probado este tipo de código,esto es la consola de información
    añadir vídeo a copy bundle resources.

    OriginalEl autor Dinesh

  4. 1

    Edificio en @Dinesh la respuesta, la dirección URL de la creación es incorrecta. El valor de

    [NSURL URLWithString:@"map.mp4"]

    será nula ya que @mapa”.mp4″ no es una URL válida. Para crear una dirección url válida a partir de la aplicación del paquete de hacer lo que Dinesh dice. Para crear una URL remota puede hacer algo similar a

    [NSURL URLWithString:@"http://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v"]

    La URL debe contener todas partes: protocolo de acogida, la ruta, el archivo.

    Saludos, Felipe

    Gracias,pero en realidad se desea utilizar un local mp4 archivo,no una corriente,[NSBundle mainBundle] parece de trabajo.
    Me alegro de que funciona para usted. Por favor, considere la posibilidad de la concesión de la respuesta a Dinesh. Es mejor para usted, ya que no la adjudicación se hará daño a su reputación.

    OriginalEl autor fsaint

  5. 1

    Agregar tu reproductor de películas controlador de la vista principal de windows como:

     MPMoviePlayerController *player =
        [[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithString:@"map.mp4"]];
        [player prepareToPlay];
        [player.view setFrame: self.view.bounds];
    
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate.window addSubview: player.view];
    
    [player play];

    Espero funcione!

    OriginalEl autor Amol

  6. 0

    Su jugador debe ser una propiedad de su controlador de vista, algo como esto:

    .h:

    @property(nonatomic,weak)MPMoviePlayerController *moviePlayer;

    .m:

        MPMoviePlayerController *player =
        [[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithString:@"map.mp4"]];
        [player prepareToPlay];
        [player.view setFrame: self.view.bounds];  //player's frame must match parent's
        //set the player to your property
        self.moviePlayer=player;
    
        [self.view addSubview: self.moviePlayer.view];
        //...
        [self.moviePlayer play];

    OriginalEl autor Malloc

  7. 0

    Por favor utilice MPMoviePlayerViewController Porque de archivo MP4. Cuando se utiliza MOV, a continuación, el trabajo perfecto!!

    MPMoviePlayerViewController *moviePlayerViewController;
    
    -(void)PlayVideoController:(NSString*)videoUrl1 { 
        NSURL *fileURL = [NSURL URLWithString:videoUrl1]; 
        moviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:fileURL];
    
        //Register for the playback finished notification.
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerViewController.moviePlayer];
    
        //Present
        [self presentMoviePlayerViewControllerAnimated:moviePlayerViewController];
    
        //Play the movie!
        moviePlayerViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
        [moviePlayerViewController.moviePlayer play];
    }
    
    -(void)myMovieFinishedCallback:(NSNotification*)aNotification {
        [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerViewController.moviePlayer];
        [moviePlayerViewController release], moviePlayerViewController = nil;
    }

    OriginalEl autor Sandeep Agrawal

  8. 0

    Usted podría desear para verificar la dirección url del vídeo para espacios en blanco. Siguiente código funciona para mí.

    - (IBAction)btnPlayVideo:(id)sender {
    
        self.strVideoUrl = [self.strVideoUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSURL    *fileURL    =   [NSURL URLWithString:[NSString stringWithFormat:@"%@", self.strVideoUrl]];
        NSLog(@"Url to play = %@", self.strVideoUrl);
    
            self.moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
    
            [[NSNotificationCenter defaultCenter] addObserver:self
                                                     selector:@selector(moviePlaybackComplete:)
                                                         name:MPMoviePlayerPlaybackDidFinishNotification
                                                       object:self.moviePlayerController];
            [self.moviePlayerController.view setFrame:self.view.bounds];
            [self.view addSubview:self.moviePlayerController.view];
            self.moviePlayerController.shouldAutoplay = YES;
            self.moviePlayerController.fullscreen = YES;
            self.moviePlayerController.controlStyle=NO;
            [self.moviePlayerController prepareToPlay];
            self.moviePlayerController.movieSourceType = MPMovieSourceTypeStreaming;
    
            [self.moviePlayerController play];
    
    }
    
    - (void)moviePlaybackComplete:(NSNotification *)notification
    {
        self.moviePlayerController = [notification object];
        [[NSNotificationCenter defaultCenter] removeObserver:self
                                                        name:MPMoviePlayerPlaybackDidFinishNotification
                                                      object:self.moviePlayerController];
    
        [self.moviePlayerController.view removeFromSuperview];
        self.closeVideAdProp.hidden = NO;
        btnCloseAd.hidden=FALSE;
    }

    OriginalEl autor Deepak Thakur

Dejar respuesta

Please enter your comment!
Please enter your name here