在Windows 7中,QuickTime的PutMovieIntoTypedHandle间歇性崩溃是否有人遇到任何问题?

问题描述

| 我最近继承了一个使用quicktime的代码库,我注意到使用它下面的函数导入动作在大多数情况下都是可行的,但有时会崩溃。它崩溃时很奇怪,因为它连续工作10次,然后崩溃了。 我在我的应用程序中使用C语言中的winapi。 IDE:Visual Studio 8 作业系统:Windows 7 Quicktime版本:最新 这是来自Quicktime API文档: PutMovieIntoTypedHandle 拍摄电影或电影中的单个曲目,并将其转换为指定类型的句柄。 OSErr PutMovieIntoTypedHandle(    电影theMovie,    跟踪目标    OSType handleType,    处理publicMovie,    TimeValue开始,    TimeValue dur,    长旗,    ComponentInstance userComp ); 代码:
Track newTrack;
FSSpec audioFile;

Movie audioFileMovie;
Track audioFileTrack;
Media audioFileMedia;
TimeValue audioTrackDuration;
long trackCount;
short audioRefNum;
TimeScale audioTimeScale;
OSErr err;
SoundDescriptionHandle outDesc,inDesc;
ComponentInstance soundComp =0;
SndListResource * slr;
SoundHeader * sh;
Handle soundData = NewHandle(0);

long     i,sampleOffset,actualSamples,sampleCount;

//Create dataRef from audioFilePath
if((err = NativePathNameToFSSpec(audioFilePath,&audioFile,kErrorIfFileNotFound)) != noErr) {
    if(err != fnfErr) {
        printf(\"NativePathNameToFSSpec failed. Error: %d\\n\",err);
        return 0;
    }
}

if(noErr != OpenMovieFile(&audioFile,&audioRefNum,fsRdPerm)){
    fprintf(stderr,\"Couldn\'t open movie file\\n\");
    return 0;
}
NewMovieFromFile(&audioFileMovie,audioRefNum,NULL,(StringPtr)NULL,newMovieActive,NULL);
if (audioRefNum != 0)
    CloseMovieFile(audioRefNum);

//see how many tracks there are in the audioFileMovie
trackCount = GetMovieTrackCount(audioFileMovie);

//Obtain audio track from audio movie
audioFileTrack = GetMovieIndTrack(audioFileMovie,1);

//Obtain audio media from audioFileTrack so that we can figure out how long it is
audioFileMedia = GetTrackMedia(audioFileTrack);
audioTrackDuration = GetMediaDuration(audioFileMedia);
audioTimeScale = GetMediaTimeScale(audioFileMedia);

soundComp = OpenDefaultComponent(\'spit\',\'snd \');
if(!soundComp)
{
    return 1;
}


inDesc=(SoundDescriptionHandle)NewHandle(0);
outDesc=nil;

GetMediaSampleDescription(GetTrackMedia(audioFileTrack),1,(SampleDescriptionHandle)inDesc);

outDesc = (SoundDescriptionHandle) NewHandleClear(sizeof(SoundDescription));
if(!outDesc)
{

    CloseComponent(soundComp);
    return 1;
}

outDesc[0]->descSize = sizeof(SoundDescription);
outDesc[0]->dataFormat = k8BitOffsetBinaryFormat;
outDesc[0]->numChannels = 1;
outDesc[0]->sampleSize = 8;
outDesc[0]->sampleRate = inDesc[0]->sampleRate;

MovieExportSetSampleDescription(soundComp,(SampleDescriptionHandle)outDesc,\'soun\');
DisposeHandle((Handle)inDesc);
DisposeHandle((Handle)outDesc);

if( audioFileMovie && soundData && soundComp )
{
    MessageBox(NULL,\"Entering \\\"PutMovieIntoTypedHandle\\\".\\n\",\"Checkpoint\",MB_OK);
    OSErr result = PutMovieIntoTypedHandle(audioFileMovie,\'snd \',soundData,// frameTime,GetMovieDuration(audioFileMovie),soundComp);
    MessageBox(NULL,\"Made it passed \\\"PutMovieIntoTypedHandle\\\".\\n\",MB_OK);
}
else
{
    return 1;
}
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...