Audio QuickTime捕获中未使用的音频通道存在问题

Audio QuickTime捕获中未使用的音频通道存在问题,audio,video-capture,quicktime,qtkit,Audio,Video Capture,Quicktime,Qtkit,不久前,我使用QTKit捕获API编写了一个应用程序,可以同时从多个设备捕获音频和视频 然而,我了解到,从DV摄像机捕获的媒体有时似乎没有任何相关的音频。事实上,音频曲目很好地存在于文件中,但频道在QuickTime Player Pro中设置为“未使用”——因此静音 因为我不愿意让我的用户暴露在这样的恶作剧中,所以我想发布我的录音,如果需要的话,自动修复频道布局 不幸的是,我很难弄明白怎么做 我的问题有两个方面: 是否可以从QTKit中检测到曲目的音频通道是否标记为“未使用” 由于我认为上述问

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

然而,我了解到,从DV摄像机捕获的媒体有时似乎没有任何相关的音频。事实上,音频曲目很好地存在于文件中,但频道在QuickTime Player Pro中设置为“未使用”——因此静音

因为我不愿意让我的用户暴露在这样的恶作剧中,所以我想发布我的录音,如果需要的话,自动修复频道布局

不幸的是,我很难弄明白怎么做

我的问题有两个方面:

  • 是否可以从QTKit中检测到曲目的音频通道是否标记为“未使用”
  • 由于我认为上述问题的答案是“否”,因此我一直在挖掘一些电影文件的结构,这些文件可以与“Atom Inspector”正常工作,但迄今为止没有任何成功:
    存储此信息的QuickTime Atom是什么/在哪里?
    我可以在
    stsd
    Atom(包含在
    stbl
    Atom中)中看到正确数量的通道,但我看不到任何映射发生在何处

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

    您必须将
    qtgetrackpropertyinfo
    API与
    kQTPropertyClass\u Audio、kqtpaudiopropertyid\u ChannelLayout
    一起使用才能获得频道布局。如果返回的
    AudioChannelLayout
    结构包含标记!=0,您可以通过
    AudioFormatGetPropertyInfo
    使用
    kAudioFormatProperty\u ChannelLayoutForTag
    解决该问题;否则,
    AudioChannelDescription
    字段将有效,
    mcchannellabel
    设置为
    kAudioChannelLabel_Unused
    (0)。当然,所有这些只在32位中有效。别忘了
    #包括

    第二个问题:
    音频曲目的stsd原子应包含“chan”扩展。此扩展似乎是一个设置为零的UInt32,后面是一个
    AudioChannelLayout
    结构。QT文件规范和MP4规范中似乎都没有记录

    祝你好运