gpt4 book ai didi

cocoa - 设置 MPMoviePlayerController 的 ContentURL 两次

转载 作者:行者123 更新时间:2023-12-03 16:16:22 27 4
gpt4 key购买 nike

我在 loadView 方法中创建了一个嵌入式 MPMoviePlayerController:

self.moviePlayerController = [[[MPMoviePlayerController alloc] init] autorelease];

// add to view, setup moviePlayerController's view frame, etc

我可以稍后加载用户选择的电影:

NSURL *fileUrl = ...
self.moviePlayerController.contentURL = fileUrl;

一切都很好。

但是,如果我再次设置 contentURL:

NSURL *fileUrl2 = ...self.movi​​ePlayerController.contentURL = fileUrl2;

即使 fileUrl2 == fileUrl1,这也不起作用。

当我更改 contentURL 时,我得到以下playbackState 和loadState:

第一次设置ContentURL之后:

loadState == playable | playthroughOK

playbackState == playing

在我第二次设置ContentURL之后:

playbackState == stopped

loadState == unknown

我当然可以为每部电影创建一个新的 MPMoviePlayerController,但我想确保这个问题并不意味着更大的问题。

谢谢!

最佳答案

在我的初始版本中,我只允许通过嵌入式控件播放电影。如果我在设置 contentURL 后强制电影立即开始播放,则一切正常:

self.moviePlayerController.contentURL = fileUrl;
[self.moviePlayerController play];

但是,这不是我想要的行为。我发现当

-[MPMoviePlayerController play]

被调用,

-[MPMoviePlayerController prepareToPlay]

被自动调用。显然,必须调用prepareToPlay 才能显示嵌入的控件和电影的初始帧。它似乎是在第一次调用 setContentURL 时自动调用的。

所以,我只是将 setContentURL 调用更改为以下内容,一切正常。

self.moviePlayerController.contentURL = fileUrl;
[self.moviePlayerController prepareToPlay];

关于cocoa - 设置 MPMoviePlayerController 的 ContentURL 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383821/

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