gpt4 book ai didi

iphone - MPMoviePlayerViewController 不播放视频或显示控件

转载 作者:行者123 更新时间:2023-11-29 03:56:11 27 4
gpt4 key购买 nike

这是我的代码,应该播放嵌入 subview 中的视频,但它只显示没有控件的静态图像。

- (void)displayVideo:(NSURL *)videoURL
{
if (self.mediaPlayer) {
[self.mediaPlayer.view removeFromSuperview];
self.mediaPlayer = nil;
}

self.mediaPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
[self.mediaPlayer.moviePlayer prepareToPlay];
self.mediaPlayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
self.mediaPlayer.view.frame = CGRectMake(0, 0, self.mediaView.bounds.size.width, self.mediaView.bounds.size.height);
[self.mediaView addSubview:self.mediaPlayer.view];
[self.mediaPlayer.moviePlayer play];
}

我还尝试直接加载媒体播放器,其中 mediaPlayer 是 MPMoviePlayerController 而不是 MPMoviePlayerViewController,但只有黑色 View 时我得到的甚至更少。

    self.mediaPlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
[self.mediaPlayer prepareToPlay];
self.mediaPlayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
self.mediaPlayer.view.frame = CGRectMake(0, 0, self.mediaView.bounds.size.width, self.mediaView.bounds.size.height);
[self.mediaView addSubview:self.mediaPlayer.view];
[self.mediaPlayer play];

感谢您的帮助。

最佳答案

第一个代码完全错误。使用 MPMoviePlayerViewController 的唯一方法是作为呈现的 View Controller (presentViewController:...);您不能捕获它的 View 并尝试将其插入您自己的界面中。

第二个机会要大得多。所以这里有一些需要考虑的事情:

  • videoURL 有效吗?你怎么知道?不,认真的。还要考虑格式,因为并非所有视频格式都可以在 iOS 下播放。

  • self.mediaPlayer 是否保留电影播放器​​ Controller ?再次,仔细观察;这很重要。它必须具有strongretain 策略。

  • 您的界面中还有其他媒体播放器 Controller View 吗?我注意到在第二个代码中您忘记删除前一个代码。这一点至关重要!这样的 View 只能有一个。

(顺便说一句,无需请求 MPMovieControlStyleEmbedded;它是此配置中的默认值。)

最后,与工作代码进行比较可能会有所帮助。我书中的代码确实有效:

http://www.apeth.com/iOSBook/ch28.html#_mpmovieplayercontroller

NSURL* m = [[NSBundle mainBundle] URLForResource:@"ElMirage"
withExtension:@"mp4"];
MPMoviePlayerController* mp =
[[MPMoviePlayerController alloc] initWithContentURL:m];
self.mpc = mp; // retain policy
self.mpc.shouldAutoplay = NO;
[self.mpc prepareToPlay];
self.mpc.view.frame = CGRectMake(10, 10, 300, 250);
self.mpc.backgroundView.backgroundColor = [UIColor redColor];
[self.view addSubview:self.mpc.view];

您可以通过下载此示例来证明这一点:

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch28p786moviePlayer

关于iphone - MPMoviePlayerViewController 不播放视频或显示控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com