我正在开发一个程序,该程序具有一组严格的视频录制“阶段”……可以将其想象成一个视频展台。我在 OSX Lion 上运行程序,完全用 Cocoa 编码。
“阶段”如下:
- 欢迎屏幕
- 开始录音
- 播放视频
- 确认保存/删除
阶段 1、2 和 4 每次都能完美运行。第 3 阶段第一次完美运行。
在第二次或更晚的时间通过该过程,视频播放(由QTMovieView
嵌入在 NSPanel 中完成)仍设置为来自第一次运行的视频。
我设置了两种方法,一种是通过按下按钮激活,另一种是通过程序中的其他代码激活。这两种方法都有效,我很肯定。我不知道为什么[mPlaybackView setMovie: lclMov]
不设置新电影...
澄清(基于下面的代码):
- 在开始播放之前,我已经查看以确保文件
TEMP_STORE
确实存在(并且是新文件,而不是旧文件) - 我也尝试过替换
[QTMovie movieWithFile:TEMP_STORE error:&err];
([[QTMovie alloc] initWithFile:TEMP_STORE error:&err]
根据我在某处网上看到的建议) - 该文件
TEMP_STORE
是我程序中另一个代码段记录的“.mov”文件
任何和所有的帮助表示赞赏!!!
代码
- (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];
}