Xcode 正在将后续视频加载到QTMovieView中,setMovie:不工作
我正在制作一个节目,它有一套严格的录像“舞台”。。。把它想象成一个视频亭。我在OSX Lion上运行这个程序,完全用Cocoa编写 “阶段”如下:Xcode 正在将后续视频加载到QTMovieView中,setMovie:不工作,xcode,cocoa,qtkit,Xcode,Cocoa,Qtkit,我正在制作一个节目,它有一套严格的录像“舞台”。。。把它想象成一个视频亭。我在OSX Lion上运行这个程序,完全用Cocoa编写 “阶段”如下: 欢迎屏幕 开始录音 播放视频 保存/删除确认 第1、2和4阶段每次都能完美地工作。第三阶段第一次就完美地完成了 在第二次或更晚的处理时间,视频播放(由嵌入在NSPanel中的QTMovieView完成)仍然设置为第一次运行的视频 我有两种方法设置,一种是通过按下按钮激活,另一种是通过程序中的其他代码激活。我敢肯定,这两种方法都有效。我不知道的是为什么
QTMovieView
完成)仍然设置为第一次运行的视频
我有两种方法设置,一种是通过按下按钮激活,另一种是通过程序中的其他代码激活。我敢肯定,这两种方法都有效。我不知道的是为什么[mPlaybackView setmov:lclMov]
没有设置新电影
要澄清(基于以下代码):
- 在开始播放之前,我已经查看了一下,以确保
中的文件确实存在(并且是新文件,而不是旧文件)TEMP_STORE
- 我还尝试用文件替换
[QTMovie movie with file:TEMP_STORE error:&err]代码>与
(根据我在网上某处看到的建议)[[qtmove alloc]initWithFile:TEMP\u STORE error:&err]
中的文件是由程序中的另一个代码段记录的“.mov”文件TEMP_STORE
对于将来遇到这种情况的人,我的建议如下: 我想我有点傻。。。但我知道这与从内存中释放视频有关。我最终的解决方案是导入QuickTime框架(我不知道它与QTKit框架不同),并使用
Movies.h中的DisposeMovie()
方法
这么简单的解决方案,给我带来了很多麻烦
祝所有可能遇到相同问题的开发人员好运:)您能展示一些您使用DisposeMovie解决问题的实际代码吗?我也有同样的问题……如果电影已经在mPlaybackView中加载,请将其设置为零,然后再次加载。例如:if(lclMov){[mPlaybackView setmov:nil];[mPlaybackView setmov:lclMov]}
- (IBAction) startPlayback: (id) sender {
NSError *err;
QTMovie *lclMov = [QTMovie movieWithFile:TEMP_STORE error:&err];
[instrPlayback orderOut:nil];
if (err != nil) {
[errorMessage setStringValue:[NSString stringWithFormat:@"%@", [err localizedDescription]]];
[errorDialog makeKeyAndOrderFront:nil];
} else {
[self writeString: CMD_PROCEED];
[mPlaybackView setMovie:lclMov];
[mPlaybackView gotoBeginning:nil];
[playbackDialog makeKeyAndOrderFront:nil];
}
}
- (void) stopPlayback {
QTMovie *lclMov = [mPlaybackView movie];
if ([lclMov canUpdateMovieFile]) {
if (![lclMov updateMovieFile]) {
[errorMessage setStringValue:@"Error Applying Updates to MOV File.\nAsk Lab Attendant for Help."];
[errorDialog makeKeyAndOrderFront:nil];
}
}
[playbackDialog orderOut:nil];
}