0

是否可以使用 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。
4

3 回答 3

6

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

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

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

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

于 2009-07-14T17:58:09.373 回答
0

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

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

[1] http://www.mplayerhq.hu/
于 2009-07-14T17:44:52.567 回答
0

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

如果您不调用 EditStreamSetInfo,它会起作用吗?

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

于 2009-07-14T17:56:51.653 回答