Проблема с неиспользуемыми аудиоканалами в QuickTime Capture - PullRequest
0 голосов
/ 21 марта 2011

Я написал приложение, которое одновременно захватывает аудио и видео с нескольких устройств, используя API захвата QTKit.

Однако я узнал, что время от времени носители, записанные с видеокамер DV появляется , чтобы не иметь никакого связанного аудио.На самом деле, звуковая дорожка хорошо присутствует в файле, но каналы в QuickTime Player Pro установлены как «неиспользуемые» - отсюда и молчание.

Поскольку мне неудобно подвергать своих пользователей таким махинациям, яЯ хочу отправить мои записи и автоматически исправить расположение каналов, если это необходимо.

К сожалению, мне трудно понять, как!

У меня вопрос двоякий:

  1. Можно ли вообще определить, помечены ли аудиоканалы трека как "неиспользуемые" из QTKit?
  2. Поскольку я думаю, что ответ на вышеприведенный ответ "нет"Я копался в структуре некоторых файлов фильмов, которые правильно работают с «Atom Inspector» - пока безуспешно:
    Что / Где находится QuickTime Atom, где хранится эта информация?
    Я могувижу правильное количество каналов в stsd Atom (содержится в stbl Atom), но я не вижу, где происходит какое-либо сопоставление.

1 Ответ

1 голос
/ 22 марта 2011

Первый вопрос: не похоже на это.

Вам потребуется использовать 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.

Удачи!

...