【问题标题】:MPMoviePlayerController Not playing Local fileMPMoviePlayerController 不播放本地文件
【发布时间】:2014-01-17 03:12:17
【问题描述】:
 NSString *path = [[NSBundle mainBundle] pathForResource:@"PTCL" ofType:@"mp4"];    
  NSURL *videoURL = [NSURL URLWithString:path];    
        MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];    
        [moviePlayerController.view setFrame:self.view.frame];
        [self.view addSubview:moviePlayerController.view]; 
        moviePlayerController.controlStyle=MPMediaTypeAnyVideo;
        moviePlayerController.fullscreen = YES;
        [moviePlayerController prepareToPlay];
        [moviePlayerController play];

 NSString *path = [[NSBundle mainBundle] pathForResource:@"PTCL" ofType:@"mp4"];   

path=[NSString stringWithFormat:@"file:/%@",path];   
NSURL *videoURL = [NSURL URLWithString:path];

MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];

[moviePlayerController.view setFrame:self.view.frame];
[self.view addSubview:moviePlayerController.view];

moviePlayerController.shouldAutoplay=YES;
moviePlayerController.controlStyle=MPMediaTypeAnyVideo;
moviePlayerController.fullscreen = YES;
[moviePlayerController prepareToPlay];
[moviePlayerController play];

  • file:///Users/utkal/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/F0B3AD63-7E46-4069-8845-8B0C05425CD2/CosMos.app/PTCL.mp4

我正在获取第一个代码的这个 videoURL 路径

  • file:///Users/utkal/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/F0B3AD63-7E46-4069-8845-8B0C05425CD2/CosMos.app/PTCL.mp4

我正在获取第二个代码的这个 videoURL 路径。

我也用过

NSURL *videoURL = [[NSURL alloc]init];
    videoURL = [[NSBundle mainBundle] URLForResource:@"PTCL" withExtension:@"mp4"];

但我的视频播放器总是显示文件正在加载,但没有任何反应。 我知道我在哪里做错了,但我的运气不好。 请纠正我的错误或告诉我是否有其他播放本地视频文件的方法。请。

【问题讨论】:

  • 请尝试:NSURL * videoURL = [NSURL fileURLWithPath:path];
  • @Horst 这也不起作用。我也有同样的问题。
  • 如果你解决了这个问题告诉我,我也有同样的问题。
  • 任何解决方案?

标签: ios iphone ios7 mpmovieplayercontroller


【解决方案1】:

也许为时已晚,但我会尝试以下方法:

MPMoviePlayerViewController *movieVC = [[MPMoviePlayerViewController alloc] initWithContentURL:file.location];
movieVC.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
movieVC.moviePlayer.fullscreen = YES;
movieVC.moviePlayer.allowsAirPlay = YES;
movieVC.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
[self presentMoviePlayerViewControllerAnimated:movieVC];

注意“movieVC.movi​​ePlayer.movi​​eSourceType = MPMovieSourceTypeFile;”

【讨论】:

  • 对我来说还不算太晚;)这实际上为我解决了问题。
【解决方案2】:

我改用了这个简单的解决方案:

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"]];
MPMoviePlayerViewController* viewController = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[self presentMoviePlayerViewControllerAnimated:viewController];

【讨论】:

    【解决方案3】:
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"CapturedMedia"];
    NSString *filePath = [dataPath stringByAppendingPathComponent:@"/itemVideo.mp4"];
    _moviePlayer =[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:filePath]];
    [[_moviePlayer view] setFrame:[[self view] bounds]];
    [[_moviePlayer moviePlayer] prepareToPlay];
    [[_moviePlayer moviePlayer] setShouldAutoplay:YES];
    [[_moviePlayer moviePlayer] setControlStyle:2];
    [[_moviePlayer moviePlayer] setRepeatMode:MPMovieRepeatModeNone];
    [self presentMoviePlayerViewControllerAnimated:_moviePlayer];
    

    您在 .h 文件中设置 MPMoviePlayerViewController 的属性。

    【讨论】:

      【解决方案4】:

      MPMoviePlayerController 现已弃用。所以我使用了AVPlayerViewController。并编写了以下代码:

      NSURL *videoURL = [NSURL fileURLWithPath:filePath];
      AVPlayer *player = [AVPlayer playerWithURL:videoURL];
      AVPlayerViewController *playerViewController = [AVPlayerViewController new];
      playerViewController.player = player;
      //[playerViewController.player play];//Used to Play On start
      [self presentViewController:playerViewController animated:YES completion:nil];
      

      请不要忘记导入以下框架:

      #import <AVFoundation/AVFoundation.h>
      #import <AVKit/AVKit.h>
      

      希望这有帮助..

      【讨论】:

        【解决方案5】:

        您的电影播放器​​代码看起来不错。路径有问题。只要尝试明确地去路径。并检查该文件是否存在。您可以查看以下 SO 问题供您参考:

        How to play video using MPMoviePlayerController?

        【讨论】:

        • 是的,我的文件是他们的路径。
        【解决方案6】:

        游戏有点晚了,但这是我的完整代码

        在 *.h 中

        @interface v1SupportTable : UITableViewController
        {
            MPMoviePlayerController *moviePlayer1;
        }
        

        在 *.m 中

        - (IBAction) playVideoBtn
        {
        
                NSURL *videoURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample_movie" ofType:@"mp4"]];
                NSLog(@"videoURL: %@ ...", videoURL);
        
                moviePlayer1 =[[MPMoviePlayerController alloc] initWithContentURL:videoURL];
        
        
                [[moviePlayer1 view] setFrame: [self.view bounds]];  // frame must match parent view
                [self.view addSubview: [moviePlayer1 view]];
                [moviePlayer1 setFullscreen:YES]; 
        
        
                [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doneButtonClicked) name:MPMoviePlayerWillExitFullscreenNotification object:nil];
        
                [moviePlayer1 play];
        
        
            }
        
        
            -(void)playMediaFinished:(NSNotification*)theNotification
            {
        
                moviePlayer1=[theNotification object];
                [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer1];
                [moviePlayer1.view removeFromSuperview];
        
                //when finished dimiss window
                [moviePlayer1 stop];
                [moviePlayer1.view removeFromSuperview];
        
            }
        
            -(void)doneButtonClicked
            {
                //[self.navigationController setNavigationBarHidden:NO animated:NO];
                [moviePlayer1 stop];
                [moviePlayer1.view removeFromSuperview];
        
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-26
          • 1970-01-01
          • 1970-01-01
          • 2014-08-18
          • 2011-08-11
          相关资源
          最近更新 更多