【发布时间】:2009-07-14 17:34:56
【问题描述】:
是否可以使用 Video for windows 库更改 avi 文件的帧速率?我尝试了以下步骤,但没有成功。
- AviFileInit
- AviFileOpen(OF_READWRITE)
- pavi1 = AviFileGetStream
- avi_info = AviStreamInfo
- avi_info.dwrate = 15
- EditStreamSetInfo(dwrate) 返回 -2147467262。
【问题讨论】:
是否可以使用 Video for windows 库更改 avi 文件的帧速率?我尝试了以下步骤,但没有成功。
【问题讨论】:
我很确定 AVIFile* API 不支持这一点。 (免责声明:我是定义这些 API 的人,但那是 15 多年前...)
您不能只在普通的 AVIStream 上调用 EditStreamSetInfo,只能从 CreateEditableStream 返回一个。
那么,您可以使用 AVISave,但这显然会重新复制整个文件。
所以,是的,您可能希望通过解析足够多的 AVI 文件头来找到您想要更改的一个 DWORD 来做到这一点。有很多关于 RIFF 和 AVI 文件格式的文档,例如http://www.opennet.ru/docs/formats/avi.txt。
【讨论】:
我对 VfW 一无所知,但您可以随时尝试对文件进行十六进制编辑。帧率可能是 AVI 文件头中某处的一个字段。
否则,您可以编写一些工具(如 mencoder[1])以将流复制到不同帧速率下的新文件。
[1] http://www.mplayerhq.hu/
【讨论】:
HRESULT:0x80004002 (2147500034)
名称:E_NOINTERFACE
说明:请求的COM接口不可用
严重性代码:失败
设施代码:FACILITY_NULL (0)
错误代码:0x4002 (16386)
如果不调用 EditStreamSetInfo 是否有效?
你能贴出你用来设置流信息的代码吗?
【讨论】: