请教一个问题:如何让音频视频同步

smellteen 2005-08-08 05:39:51
我是用VFW来进行视频捕获的,在回调函数FrameCallbackProc里把捕获的桢
通过AVIStreamWrite写到一个创建的AVI文件当中去。
然后用waveInxxxx系列函数捕获音频,在waveInProc函数里把数据也用
AVIStreamWrite写到同一个文件中。

现在的问题是:一旦音频视频同时写,播放写好的AVI文件时就出现视频很快的播放,
而音频以录制的速度播放,就是不同步。

请问:这是怎么造成的?可能是什么问题?
...全文
267 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
smellteen 2005-08-09
  • 打赏
  • 举报
回复
哦,这个我没设置。

应该怎么设置啊?(很汗这么问,是第一次做这类的程序)
GoogleGeek 2005-08-09
  • 打赏
  • 举报
回复
avi文件录制完了后,你要回过头来更新fps!
windows_editor 2005-08-09
  • 打赏
  • 举报
回复
typedef struct _avimainheader {
FOURCC fcc; // 必须为‘avih’
DWORD cb; // 本数据结构的大小,不包括最初的8个字节(fcc和cb两个域)
DWORD dwMicroSecPerFrame; // 视频帧间隔时间(以毫秒为单位)
DWORD dwMaxBytesPerSec; // 这个AVI文件的最大数据率
DWORD dwPaddingGranularity; // 数据填充的粒度
DWORD dwFlags; // AVI文件的全局标记,比如是否含有索引块等
DWORD dwTotalFrames; // 总帧数
DWORD dwInitialFrames; // 为交互格式指定初始帧数(非交互格式应该指定为0)
DWORD dwStreams; // 本文件包含的流的个数
DWORD dwSuggestedBufferSize; // 建议读取本文件的缓存大小(应能容纳最大的块)
DWORD dwWidth; // 视频图像的宽(以像素为单位)
DWORD dwHeight; // 视频图像的高(以像素为单位)
DWORD dwReserved[4]; // 保留
} AVIMAINHEADER;

DWORD dwMicroSecPerFrame; // 视频帧间隔时间(以毫秒为单位) 设对了么
日总是我哥 2005-08-09
  • 打赏
  • 举报
回复
似乎是时间戳没设置好的。

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧