我继承了一个打开专有文件的应用程序,该文件包含视频流和音频流(G.711 ULAW格式)。应用程序已将视频写入AVI但没有音频。 我想添加以相同格式将音频流插入AVI文件的代码。
是否有任何代码示例/文档显示如何将G.711流写入AVI?
答案 0 :(得分:1)
AVIFile服务可用于将流写入AVI格式。
G.711 u-law是Windows中的标准“wave”音频格式。使用AVIStreamSetFormat设置音频流的格式时,请使用WAVEFORMATEX结构,wFormatTag
设置为WAVE_FORMAT_MULAW
(0x0007)。
[更新]关于如何在CodeProject上读取和写入AVI文件有一个很好看的演练:Steganography IV - Reading and Writing AVI files
答案 1 :(得分:0)
这是解决方案的更新:
基本上我正在做正确的事情并传递正确的编解码器代码(WAVE_FORMAT_MULAW),正如理查德建议的那样。
但是,每个API调用:AVIFileCreateStream和AVIStreamSetFormat接受不同的结构。但并非所有字段都与调用相关,因此在设置每个字段之前,结构的其余部分必须用零填充。
例如:
AVISTREAMINFO aviHeader;
ZeroMemory(&aviHeader, sizeof(aviHeader));
aviHeader.fccType = streamtypeAUDIO;
...
谢谢!