【问题标题】:Playing a video with mediaplayercontroller使用 mediaplayercontroller 播放视频
【发布时间】:2025-12-27 16:05:12
【问题描述】:

我正在尝试制作一个播放器,它从 tableview 获取一个 url(尚未完成)。 我开始尝试使用 MPMediaPlayerController 使播放器工作。

NSString *video = [NSString stringWithFormat:@"http://www.youtube.com/watch?v=GurkREc-q4I"];

    NSURL *url = [NSURL URLWithString:video];

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

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

    [self.view addSubview:moviePlayerController];
    [moviePlayerController setShouldAutoplay:YES];
    [moviePlayerController prepareToPlay];
    moviePlayerController.fullscreen = YES;
    [moviePlayerController play];

当我尝试将 moviePLayer 添加为子视图时,我收到以下警告:不兼容的指针类型将“MPMoviePlayerController *”发送到“UIView *”类型的参数。

另外,当我打开视图时,应用程序会关闭,在控制台中我们会看到:

2014-03-04 18:26:50.696 FavVideos[6181:70b] -[MPMoviePlayerController superview]:无法识别的选择器发送到实例 0xa63c470 2014-03-04 18:26:50.735 FavVideos[6181:70b] * 终止应用程序由于 未捕获的异常“NSInvalidArgumentException”,原因: '-[MPMoviePlayerController superview]: 无法识别的选择器发送到 实例 0xa63c470'

关于我做错了什么有什么想法吗?

谢谢,从现在开始。

编辑:

好的,我看到了我正在做什么来得到错误和“崩溃”。

这里:

[self.view addSubview:moviePlayerController];

我改成:

[self.view addSubview:moviePlayerController.view];

不再有警告或崩溃。 但是播放器只是黑屏,有什么想法吗?

【问题讨论】:

  • 我在一些网站上看到,当媒体播放器检测到一个 youtube 网址时,它会尝试启动该应用程序。我可以用媒体播放器在我的应用中播放这个视频吗?

标签: ios objective-c mpmediaplayercontroller


【解决方案1】:

它是空白的原因是文件需要是受支持的格式。可以在此处的 Apple 文档Suitable Formats 中找到合适格式的列表,即 MPEG、H.264 等。

目前,您要求 MPMoviePlayer 播放一个 url,尽管这是指向带有电影的 youtube 页面的 url。 url 需要是实际的电影文件。

播放此 youtube 视频的方式是将视图打开为 web 视图,定向到此 youtube 页面,或阅读Google documentation 以使用他们的 api 在应用程序中播放。

希望对你有帮助,

干杯,吉姆。

【讨论】:

  • 哦,我明白了。好吧,我会尝试使用谷歌文档来使它工作。谢谢。