Проблема с неиспользуемыми аудиоканалами в QuickTime Capture

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

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

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

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

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

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

person danyowdee    schedule 21.03.2011    source источник


Ответы (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.

Удачи!

person jfortmann    schedule 22.03.2011