【问题标题】:iOS4 MPMoviePlayerController EmbeddingiOS4 MPMoviePlayerController 嵌入
【发布时间】:2011-03-18 13:09:38
【问题描述】:

我目前正在使用 MPMoviePlayerController 在 iPhone 内播放视频,现在我希望在视图的一小块区域(而不是全屏)播放该视频。我认为有一种框架方式可以做到这一点,但我在某处找不到所需的教程。你遇到过吗?那太好了。

更新


我已经达到了这一点,但它仍然没有显示播放器在屏幕上播放。

-(IBAction)startVideo {
    //start video here
    NSURL *path = [[NSURL alloc] initWithString:[self localVideoPath:NO]];

    // Create custom movie player   
    MPMoviePlayerController *moviePlayer = [[[MPMoviePlayerController alloc] initWithContentURL:path] autorelease];

    [moviePlayer setScalingMode:MPMovieScalingModeAspectFill];
    [moviePlayer setControlStyle:MPMovieControlStyleNone];
    [moviePlayer setFullscreen:FALSE];

    // May help to reduce latency
    [moviePlayer prepareToPlay];

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


    //---play partial screen---
    //moviePlayer.view.frame = CGRectMake(0, 0, 200, 300);
    moviePlayer.view.frame = image.frame;
    //[[moviePlayer view] setFrame: [image bounds]];

    [image removeFromSuperview];

    [self.view addSubview:moviePlayer.view];

    // Show the movie player as modal
    //[self presentModalViewController:moviePlayer animated:YES];

    // Prep and play the movie
    [moviePlayer play]; 
}

【问题讨论】:

  • 顺便说一句 - 你设置的 onMSAASDone 函数的意图是什么,当视频结束时调用(上面的 NSNotificationCenter 调用)?只是好奇,因为我正在设置类似的东西,所以想了解您对该功能的计划。在我的实现中,我需要为下一个视频设置滚动到位并在当前视频完成后立即启动...

标签: iphone objective-c xcode mpmovieplayercontroller


【解决方案1】:

这是“窗口化”代码...

MPMoviePlayerController *player =
[[MPMoviePlayerController alloc]
 initWithContentURL:[NSURL fileURLWithPath:url]];

[player setControlStyle:MPMovieControlStyleNone];

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(movieFinishedCallback:)
 name:MPMoviePlayerPlaybackDidFinishNotification
 object:player];
[player setScalingMode:MPMovieScalingModeAspectFill];
[player setFullscreen:FALSE];

//---play partial screen---
player.view.frame = CGRectMake(0, 0, 200, 300);
[self.view addSubview:player.view];

【讨论】:

  • 当我触摸图像时,我将此代码保留在触摸事件广告中,它会给出一些错误并关注 XCode,给出“GDB:程序接收信号:'EXC_BAD_ACCESS'”
  • Umair,你应该尝试学习使用调试器 -> 检查堆栈,检查控制台 -> 会有更多信息,而不仅仅是 EXC_BAD_ACCESS。
  • 好的,这是我的错误,现在没有给出这样的错误。虽然应用程序运行并且当我单击图像时它不显示播放器。
  • 有机会得到答案吗?
  • 调试器是否进入上面的代码?你什么时候打电话给这个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
相关资源
最近更新 更多