Технические вопросы и ответы QA1617

Получение QTKit - Отключение определенных звуковых каналов при записи

Q: Как я могу отключить определенные звуковые каналы при записи?

A: Как я могу отключить определенные звуковые каналы при записи?

Используйте QTCaptureConnectionEnabledAudioChannelsAttribute атрибут, NSIndexSet значение, указывающее, какие звуковые каналы должны быть отправлены через соединение.

Для использования атрибута работайте, сеанс (начните получать данные), и затем наблюдайте, когда изменяется описание формата соединения. Приложения могут быть уведомлены относительно изменений в формате соединения путем регистрации для получения QTCaptureConnectionFormatDescriptionDidChangeNotification уведомление как показано в Перечислении 1.

Перечисление 1  , регистрирующееся для QTCaptureConnectionFormatDescriptionDidChangeNotification уведомление.

 // Register for changes to a connection's format
  [[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(connectionFormatDidChange:) 
    name:QTCaptureConnectionFormatDescriptionDidChangeNotification 
    object:nil];

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

Перечисление 2  Используя QTCaptureConnectionEnabledAudioChannelsAttribute атрибут для включения звуковых каналов на соединении.

 // This method called when the connection format changes
  - (void)connectionFormatDidChange:(NSNotification *)notification
  {
    // You may now use the QTCaptureConnectionEnabledAudioChannelsAttribute
    // attribute to enable audio channels for the connection
    [self enableAudioChannelsForConnection:[self myAudioCaptureConnection]];
  }

  // Specify the audio channels that should be used on the connection
  -(void) enableAudioChannelsForConnection:(QTCaptureConnection *)captureConnection
  {
    // Make sure attribute is writeable before we use it
    if ([captureConnection attributeIsReadOnly:
      QTCaptureConnectionEnabledAudioChannelsAttribute] == NO)
    {
      NSRange channelIndexes;
      channelIndexes.location = 0;
      channelIndexes.length = 2;
      NSIndexSet *channelIndexSet = 
        [NSIndexSet indexSetWithIndexesInRange:channelIndexes];

      // Example: enable audio channels 1,2 (only) for the connection
      [captureConnection setAttribute:channelIndexSet 
        forKey:QTCaptureConnectionEnabledAudioChannelsAttribute];
    }
  }

Ссылки

Техническое получение вопросов и ответов QA1607 QTKit - отключение аудио или видео при получении от мультиплексированного устройства



История версии документа


ДатаПримечания
13.10.2008

Новый документ, описывающий, как отключить определенные звуковые каналы при записи использующий Получение QTKit.