代码之家  ›  专栏  ›  技术社区  ›  Thomas Clayson

无法播放视频文件

  •  0
  • Thomas Clayson  · 技术社区  · 14 年前

    我可能遗漏了一些很明显的东西。

    我包括了 <MediaPlayer/MediaPlayer.h> 还有这个密码:

    NSURL *videoURL = [NSURL fileURLWithPath:pathToFile];
    MPMoviePlayerViewController *mediaPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
    [self presentMoviePlayerViewControllerAnimated:mediaPlayer];
    mediaPlayer.view.backgroundColor = [UIColor blackColor];
    [mediaPlayer release];
    

    但视频不会播放。我从另一个地方复制了代码,在那里视频工作得很好。

    pathToFile 是正确的,因为该变量在前几行中用于将视频从“资源”文件夹移动到“文档”目录。

    你知道它为什么不起作用吗?

    谢谢

    2 回复  |  直到 14 年前
        1
  •  2
  •   WrightsCS    13 年前

    您可以使用以下代码,但演示movieplayerviewcontrollerimated除外

    NSString *movieFile=[[NSBundle mainBundle] pathForResource:@"movie" ofType:@"m4v"];
    moviePlayer= [[MPMoviePlayerController alloc] initWithContentURL:url];
    moviePlayer.view.frame = self.view.frame;
    [self.view addSubview:moviePlayer.view];
    [moviePlayer setFullscreen:YES animated:YES];
    

    这对我很有用。

        2
  •  2
  •   Simon Whitaker    14 年前

    我不认为 presentMoviePlayerViewControllerAnimated 保留它的接收器,所以看起来你发布电影播放器太早了。您可以尝试将mediaPlayer设置为保留属性:

    @interface MyClass : SuperClass {
        MVMoviePlayerViewController *mediaPlayer;
    }
    @property (nonatomic, retain) MVMoviePlayerViewController *mediaPlayer;
    @end
    
    @implementation MyClass 
    @synthesize mediaPlayer;
    // rest of class implementation here...
    @end
    

    然后按原样初始化:

    self.mediaPlayer = [[[MPMoviePlayerViewController alloc] 
                        initWithContentURL:videoURL] autorelease];
    

    然后释放:

    self.mediaPlayer = nil;
    

    (若要编写视频播放完成后发生的代码,请检查 MPMoviePlayerPlaybackDidFinishNotification 通知。)

    还要记住 演示电影播放服务控件动画化 最早出现在iOS 3.2中,因此此代码在早期iOS版本上不起作用。但我认为这不是问题所在。