使用setMovie将后续视频加载到QTMovieView中:无法正常工作

时间:2012-04-20 15:01:46

标签: xcode cocoa qtkit

我正在开发一个程序,它有一组严格的“阶段”用于视频录制......想象它就像一个视频展台。我在OSX Lion上运行程序,完全用Cocoa编写。

'阶段'如下:

  1. 欢迎屏幕
  2. 开始录制
  3. 播放视频
  4. 保存/删除确认
  5. 第1阶段,第2阶段和第4阶段每次都能完美运作。第3阶段第3阶段完美运作。

    在第二次或稍后的整个过程中,视频播放(由嵌入在NSPanel中的QTMovieView完成)仍然设置为来自FIRST直播的视频。 / p>

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

    澄清(基于以下代码):

    • 我在开始播放之前已经看过,以确保TEMP_STORE处的文件确实存在(并且是新文件,而不是旧文件)
    • 我还尝试用[QTMovie movieWithFile:TEMP_STORE error:&err];替换[[QTMovie alloc] initWithFile:TEMP_STORE error:&err](根据我在网上看到的建议)
    • TEMP_STORE处的文件是我程序中其他代码段录制的'.mov'文件

    赞赏任何和所有帮助!!!

    CODE

    - (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];
    }
    

1 个答案:

答案 0 :(得分:0)

对于将来遇到这种情况的人来说,这是我的解决方案:

我想我有点笨......但我知道这与从内存中取消分配视频有关。我得到的解决方案是导入QuickTime框架(由于我没有线索,与QTKit框架不同)并使用DisposeMovie()中的Movies.h方法

这么简单的解决方案,它给了我很多麻烦。

祝所有可能遇到同样问题的开发人员好运:)