objective-c – MPMoviePlayerController不播放任何视频内容[由于ARC和内存管理]

objective-c – MPMoviePlayerController不播放任何视频内容[由于ARC和内存管理],第1张

概述我正在尝试在iOS应用程序中播放视频,使用MPMoviePlayerController在用户按下按钮时将电影视图附加到现有视图. 视图在右侧位置显示为黑框,但没有任何反应. 我期待电影开始播放,但没有任何事情发生,也没有提示应用程序的原因. 任何人都可以看到这出错的地方? -(IBAction) playButtonClicked:(id)sender{ NSString* path 我正在尝试在iOS应用程序中播放视频,使用MPMovIEPlayerController在用户按下按钮时将电影视图附加到现有视图.
视图在右侧位置显示为黑框,但没有任何反应.
我期待电影开始播放,但没有任何事情发生,也没有提示应用程序的原因.

任何人都可以看到这出错的地方?

-(IBAction) playbuttonClicked:(ID)sender{    Nsstring* path = [[NSBundle mainBundle] pathForResource:@"sample_mpeg4" ofType:@"mp4"];    NSLog(@"Using vIDeoPath %@",path);    NSURL* url = [NSURL fileURLWithPath:path];    MPMovIEPlayerController *player = [[MPMovIEPlayerController alloc] initWithContentURL:url];    [self.vIEw addSubvIEw:player.vIEw];    player.vIEw.frame = CGRectMake(10,10,300,220);   [player play];

}

电影存在并记录正确的路径,但仍然没有电影播放.

2012-07-06 11:51:13.492 experiments[84702:12203] Using vIDeoPath /Users/marius/library/Application Support/iPhone Simulator/5.1/Applications/9799C851-8D2B-4CFE-8CFA-A4C4C954787F/experiments.app/sample_mpeg4.mp4

根据我的阅读和理解,这应该是有效的.
关于尝试什么的任何提示或建议?

我将电影移动到http服务器(fg.mp4)并拖尾访问日志.
单击播放按钮时,会出现通常的黑色窗口.
ServersIDe我在日志中找到两个新条目:

168.122.x.x - - [06/Jul/2012:22:42:33 +0200] "GET /fg.mp4 http/1.1" 304 192 "-" "AppleCoreMedia/1.0.0.9B176 (iPhone Simulator; U; cpu OS 5_1 like Mac OS X; en_us)"168.122.x.x - - [06/Jul/2012:22:42:33 +0200] "GET /fg.mp4 http/1.1" 206 33304 "-" "AppleCoreMedia/1.0.0.9B176 (iPhone Simulator; U; cpu OS 5_1 like Mac OS X; en_us)"

因此,手机可以获取部分电影内容,并且 – 显然 – 准备在需要时完成其余部分.
我错过了MPMovIEPlayerController有一些明显的参数吗?

更新:解决方案和工作代码

问题是由ARC引起的,并且在调用设置控制器的方法后没有保留对MPMovIEPlayerController的引用.
解决方案:在类中添加一个类变量,并使用它在电影的生命周期内保持对控制器的引用.

所以在类声明的早期(在任何消息/函数定义之外):

MPMovIEPlayerController* mpController;

并且提到的playbuttonClicked使用此变量来跟踪控制器:

Nsstring* path = [[NSBundle mainBundle] pathForResource:@"sample_mpeg4" ofType:@"mp4"];NSURL* url = [NSURL fileURLWithPath:path];mpController = [[MPMovIEPlayerController alloc] initWithContentURL:url];mpController.vIEw.frame = CGRectMake(10,220);[self.vIEw addSubvIEw:mpController.vIEw];[mpController play];
解决方法 与我对 MPMoviePlayerController playback terminates before video finishes的回答一样,这看起来像是内存管理(实例生命周期)问题.假设您正在使用ARC进行编译,那么当您的playbuttonClicked:方法返回时,播放器变量将被释放.此时,MPMovIEPlayerController实例接受其蝙蝠和球,然后回家.

尝试将MPMovIEPlayerController实例分配给强实例变量或属性.

总结

以上是内存溢出为你收集整理的objective-c – MPMoviePlayerController不播放任何视频内容[由于ARC和内存管理]全部内容,希望文章能够帮你解决objective-c – MPMoviePlayerController不播放任何视频内容[由于ARC和内存管理]所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1235879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存