Xcode 正在将后续视频加载到QTMovieView中,setMovie:不工作

Xcode 正在将后续视频加载到QTMovieView中,setMovie:不工作,xcode,cocoa,qtkit,Xcode,Cocoa,Qtkit,我正在制作一个节目,它有一套严格的录像“舞台”。。。把它想象成一个视频亭。我在OSX Lion上运行这个程序,完全用Cocoa编写 “阶段”如下: 欢迎屏幕 开始录音 播放视频 保存/删除确认 第1、2和4阶段每次都能完美地工作。第三阶段第一次就完美地完成了 在第二次或更晚的处理时间,视频播放(由嵌入在NSPanel中的QTMovieView完成)仍然设置为第一次运行的视频 我有两种方法设置,一种是通过按下按钮激活,另一种是通过程序中的其他代码激活。我敢肯定,这两种方法都有效。我不知道的是为什么

我正在制作一个节目,它有一套严格的录像“舞台”。。。把它想象成一个视频亭。我在OSX Lion上运行这个程序,完全用Cocoa编写

“阶段”如下:

  • 欢迎屏幕
  • 开始录音
  • 播放视频
  • 保存/删除确认
  • 第1、2和4阶段每次都能完美地工作。第三阶段第一次就完美地完成了

    在第二次或更晚的处理时间,视频播放(由嵌入在NSPanel中的
    QTMovieView
    完成)仍然设置为第一次运行的视频

    我有两种方法设置,一种是通过按下按钮激活,另一种是通过程序中的其他代码激活。我敢肯定,这两种方法都有效。我不知道的是为什么
    [mPlaybackView setmov:lclMov]
    没有设置新电影

    要澄清(基于以下代码):

    • 在开始播放之前,我已经查看了一下,以确保
      TEMP_STORE
      中的文件确实存在(并且是新文件,而不是旧文件)
    • 我还尝试用文件替换
      [QTMovie movie with file:TEMP_STORE error:&err]
      [[qtmove alloc]initWithFile:TEMP\u STORE error:&err]
      (根据我在网上某处看到的建议)
    • TEMP_STORE
      中的文件是由程序中的另一个代码段记录的“.mov”文件
    感谢所有的帮助

    代码
    对于将来遇到这种情况的人,我的建议如下:

    我想我有点傻。。。但我知道这与从内存中释放视频有关。我最终的解决方案是导入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];
    }