gpt4 book ai didi

iphone - 异步 MPMoviePlayerController 加载没有持续时间值

转载 作者:行者123 更新时间:2023-12-03 19:32:08 25 4
gpt4 key购买 nike

我假设 initWithContentURL: 方法不是异步的。我添加了以下方法来在后台进行加载,然后将临时播放器分配给我的变量。

-(void)createPlayer {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

MPMoviePlayerController *temp = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"URLString"]];

[self performSelectorOnMainThread:@selector(passPlayer:) withObject:temp waitUntilDone:YES];

[temp release];
[pool release];
}

-(void)passPlayer:(MPMoviePlayerController*)temp {
player = [temp retain];
player.movieSourceType = MPMovieSourceTypeStreaming;
//player.view.hidden = YES;
//[self.view addSubview:player.view];
[player prepareToPlay];
}

问题是当我打印出播放器的持续时间时我得到这个:

double duration = player.duration;
NSLog(@"duration: %f, duration);

console output: duration: nan

我添加了 MPMoviePlayerControllerNotifications,以便在有可用持续时间值时收到通知,但即使如此,该值仍然是“nan”。如果我在主线程上进行加载,则持续时间会有一个值,但我不想使用主线程,因此我的 UI 不会锁定。

有什么想法吗?

最佳答案

首先,不要在非主线程上创建 UI 对象。所有UI操作都必须在主线程上完成,否则会出现奇怪的情况。例如,也许电影从未加载并且在持续时间内返回 NAN。

其次,initWithContentURL:可能是异步的,否则不会有通知让您知道电影何时实际加载。只需像平常一样创建 Controller ,订阅适当的通知以了解状态何时更新,然后立即检查状态,以防电影碰巧是本地文件或已缓存,以便加载能够同步发生.

关于iphone - 异步 MPMoviePlayerController 加载没有持续时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6397896/

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