QuickTime Capture中未使用音频通道的问题

时间:2011-03-21 13:48:02

标签: audio video-capture quicktime qtkit

我编写了一个应用程序,可以使用QTKit捕获API同时从多个设备同时捕获音频和视频。

但是,我了解到,从DV摄像机捕获的媒体有时会出现而没有任何相关的音频。实际上,音频轨道很好地存在于文件中,但是在QuickTime Player Pro中通道被设置为“未使用” - 因此沉默。

由于我不习惯将我的用户暴露给这样的恶作剧,我想在我的录音后飞行,并在需要时自动修复频道布局。

不幸的是,我很难搞清楚如何!

我的问题是双重的:

  1. 是否可以检测轨道的音频通道是否从QTKit标记为“未使用”?
  2. 由于我认为上面的答案是“不”,我一直在挖掘一些与“Atom Inspector”正常工作的电影文件的结构 - 到目前为止没有任何成功:
    什么/存储此信息的QuickTime Atom在哪里?
    我可以在stsd Atom中找到正确的通道数(包含在stbl Atom中),但我看不到发生任何映射的位置。

1 个答案:

答案 0 :(得分:1)

第一个问题:看起来不像。

您必须使用QTGetTrackPropertyInfo API和kQTPropertyClass_Audio, kQTAudioPropertyID_ChannelLayout来获取频道布局。如果返回的AudioChannelLayout结构包含标记!= 0,则可以AudioFormatGetPropertyInfo通过kAudioFormatProperty_ChannelLayoutForTag解析该标记!否则,AudioChannelDescription字段有效,mChannelLabel设置为kAudioChannelLabel_Unused(0)。当然,所有这些仅适用于32位。不要忘记#include <AudioToolbox/AudioToolbox.h>

第二个问题:
音轨的stsd原子应包含'chan'扩展名。此扩展名似乎是UInt32设置为零,后跟AudioChannelLayout结构。它似乎没有记录在QT文件规范和MP4规范中。

祝你好运!