C++ 编辑avi文件的帧速率

C++ 编辑avi文件的帧速率,c++,vfw,C++,Vfw,是否可以使用windows视频库更改avi文件的帧速率?我尝试了以下步骤,但没有成功 AviFileInit AviFileOpen(属于读写) pavi1=AviFileGetStream avi_info=avi流信息 avi_info.dwrate=15 EditStreamSetInfo(dwrate)返回-2147467262 我对VfW一无所知,但您可以尝试对文件进行十六进制编辑。帧率可能是AVI文件头中的某个字段 否则,您可以编写一些工具(如mencoder[1])的脚本,将流复制

是否可以使用windows视频库更改avi文件的帧速率?我尝试了以下步骤,但没有成功

  • AviFileInit
  • AviFileOpen(属于读写)
  • pavi1=AviFileGetStream
  • avi_info=avi流信息
  • avi_info.dwrate=15
  • EditStreamSetInfo(dwrate)返回-2147467262

  • 我对VfW一无所知,但您可以尝试对文件进行十六进制编辑。帧率可能是AVI文件头中的某个字段

    否则,您可以编写一些工具(如mencoder[1])的脚本,将流复制到不同帧速率下的新文件中

    [1] http://www.mplayerhq.hu/
    

    我对VfW一无所知,但您可以尝试对文件进行十六进制编辑。帧率可能是AVI文件头中的某个字段

    否则,您可以编写一些工具(如mencoder[1])的脚本,将流复制到不同帧速率下的新文件中

    [1] http://www.mplayerhq.hu/
    
    HRESULT:0x80004002(2147500034)
    名称:E_NOINTERFACE
    说明:请求的COM接口不可用
    严重性代码:失败
    设施代码:设施为空(0)
    错误代码:0x4002(16386)

    如果不调用EditStreamSetInfo,它是否有效

    您可以发布用于设置流信息的代码吗?

    HRESULT:0x80004002(2147500034)
    名称:E_NOINTERFACE
    说明:请求的COM接口不可用
    严重性代码:失败
    设施代码:设施为空(0)
    错误代码:0x4002(16386)

    如果不调用EditStreamSetInfo,它是否有效


    你能上传你用来设置流信息的代码吗?

    我很确定AVIFile*API不支持这一点。(免责声明:我是定义这些API的人,但那是15年前的事了……)

    您不能只在普通AVIStream上调用EditStreamSetInfo,只能从CreateEditableStream返回一个

    那么,您可以使用AVISave,但这显然会重新复制整个文件


    因此,是的,您可能希望通过对AVI文件头进行足够的解析来找到要更改的DWORD。有很多关于RIFF和AVI文件格式的文档,比如。

    我很确定AVIFile*API不支持这种格式。(免责声明:我是定义这些API的人,但那是15年前的事了……)

    您不能只在普通AVIStream上调用EditStreamSetInfo,只能从CreateEditableStream返回一个

    那么,您可以使用AVISave,但这显然会重新复制整个文件


    因此,是的,您可能希望通过对AVI文件头进行足够的解析来找到要更改的DWORD。有很多关于RIFF和AVI文件格式的文档,例如。

    好吧,我接受你的记忆,即使它已经15年了;)RIFF格式无论如何都非常容易解析。+1只是为了原始开发人员回复的冷静因素!好吧,我会接受你的记忆,即使它已经15岁了;)RIFF格式无论如何都非常容易解析。+1只是为了原始开发人员回复的冷静因素!我不知道是否有不同的方式在这个论坛上发布代码//ChangeFrameRate int frame_rate=15;int error_code=0;PAVIFILE file_ptr=NULL;PAVISTREAM流_ptr=NULL;AVIFileInit();AVIFileOpen(&file_ptr,电影名称,OF_READWRITE,NULL);AVIFileGetStream(file_ptr和stream_ptr,0,0);AVIStreamInfo(stream_ptr,stream_info,sizeof(AVIStreamInfo));/*stream_info.dwRate是25。我想将文件中的此参数更改为15*/error_code=EdiStreamSetInfo(stream_ptr,&stream_info,sizeof(avireaminfo));/*返回(-2147500034)*/我不知道是否有其他方式在这个论坛上发布代码//ChangeFrameRate int frame_rate=15;int error_code=0;PAVIFILE file_ptr=NULL;PAVISTREAM流_ptr=NULL;AVIFileInit();AVIFileOpen(&file_ptr,电影名称,OF_READWRITE,NULL);AVIFileGetStream(file_ptr和stream_ptr,0,0);AVIStreamInfo(stream_ptr,stream_info,sizeof(AVIStreamInfo));/*stream_info.dwRate是25。我想将文件中的此参数更改为15*/error_code=EdiStreamSetInfo(stream_ptr,&stream_info,sizeof(avireaminfo));/*返回(-2147500034)*/