编辑avi文件的帧速率

时间:2009-07-14 17:34:56

标签: c++ vfw

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

  1. AviFileInit
  2. AviFileOpen(OF_READWRITE)
  3. pavi1 = AviFileGetStream
  4. avi_info = AviStreamInfo
  5. avi_info.dwrate = 15
  6. EditStreamSetInfo(dwrate)返回-2147467262。

3 个答案:

答案 0 :(得分:6)

我很确定AVIFile * API不支持此功能。 (免责声明:我是定义这些API的人,但它已经超过15年了......)

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

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

所以,是的,您可能希望通过解析AVI文件头足以找到您想要更改的一个DWORD来实现此目的。 RIFF和AVI文件格式有很多文档,例如http://www.opennet.ru/docs/formats/avi.txt

答案 1 :(得分:0)

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

否则,您可以编写像mencoder [1]这样的工具脚本,以不同的帧速率将流复制到新文件。

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

答案 2 :(得分:0)

HRESULT:0x80004002(2147500034)
名称:E_NOINTERFACE
描述:请求的COM接口不可用 严重程度代码:失败
设施代码:FACILITY_NULL(0)
错误代码:0x4002(16386)

如果你不调用EditStreamSetInfo吗?

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