【问题标题】:Problem with Unused Audio-Channels in QuickTime CaptureQuickTime Capture 中未使用的音频通道问题
【发布时间】:2011-03-21 13:48:01
【问题描述】:
不久前,我使用 QTKit 捕获 API 编写了一个从多个设备同时捕获音频和视频的应用程序。
但是,我不时了解到,从 DV 摄像机捕获的媒体似乎没有任何关联的音频。事实上,文件中的音轨很好,但在 QuickTime Player Pro 中通道被设置为“未使用”——因此是静音。
由于我不愿意让我的用户接触到这种恶作剧,我想在飞行后录制并自动修复频道布局(如果需要)。
不幸的是,我很难弄清楚怎么做!
我的问题有两个:
- 是否可以从 QTKit 中检测轨道的音频通道是否被标记为“未使用”?
- 因为我认为上述问题的答案是“否”,所以我一直在研究一些与“Atom Inspector”正常工作的电影文件的结构——到目前为止没有任何成功:
存储此信息的 QuickTime Atom 是什么/在哪里?
我可以在stsd Atom(包含在stbl Atom 中)中看到正确的通道数,但我看不到任何映射发生的位置。
【问题讨论】:
标签:
audio
video-capture
quicktime
qtkit
【解决方案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 规范中似乎都没有记录。
祝你好运!