Получение QTKit - Извлекающий информацию о Временном коде SMPTE из QTSampleBuffer
Q: Как может я извлекать информацию о временном коде SMPTE во время воспроизведения устройства с помощью QTCaptureFileOutput объект?
A: Как может я извлекать информацию о временном коде SMPTE во время воспроизведения устройства с помощью QTCaptureFileOutput объект?
Если устройство, от которого Вы получаете, обеспечивает временной код SMPTE, демонстрационный буфер (QTSampleBuffer) объекты, представленные при выводе, будут тегированы с метаданными временного кода, к которым можно получить доступ с помощью QTSampleBufferSMPTETimeAttribute ключ.
Например, оба QTCaptureFileOutput и QTCaptureDecompressedVideoOutput объектам вызвали метод делегата captureOutput:didOutputSampleBuffer:fromConnection: который вызывается каждый раз, когда вывод получает новый демонстрационный буфер. При помощи QTSampleBuffer attributeForKey: метод, временной код SMPTE может быть вытащен для каждого демонстрационного буфера, полученного как показано в Перечислении 1.
Перечисление 1
- (void)captureOutput:(QTCaptureFileOutput *)captureOutput
didOutputSampleBuffer:(QTSampleBuffer *)sampleBuffer
fromConnection:(QTCaptureConnection *)connection
{
NSValue *SMPTETime = [sampleBuffer attributeForKey:QTSampleBufferSMPTETimeAttribute];
if (SMPTETime) {
NSLog(@"SMPTE Time: %@", QTStringFromSMPTETime([SMPTETime SMPTETimeValue]));
}
} |
A QTSampleBuffer может иметь другие атрибуты также. Следующие атрибуты объявляются в QTSampleBuffer.h.
QTSampleBufferDateRecordedAttribute
Возвращает дату, на которую носители в буфере был первоначально зарегистрирован.
Значение NSDate.
@"dateRecorded" строковое значение может использоваться по ключевым путям для кодирования значения ключа, наблюдения значения ключа и привязки.
QTSampleBufferHostTimeAttribute
Если буфер из оперативного источника, этот атрибут возвращает время узла буфера.
Значение, возвращенное этим атрибутом, может быть по сравнению с возвращаемым значением CVGetCurrentHostTime или AudioGetCurrentHostTime определить, слишком опаздывает ли это в буфер, который будет обработан в режиме реального времени.
Значение NSNumber интерпретируемый как a UInt64.
@"hostTime" строковое значение может использоваться по ключевым путям для кодирования значения ключа, наблюдения значения ключа и привязки.
QTSampleBufferSMPTETimeAttribute
Возвращает временной код SMPTE для демонстрационного буфера, если это имеет тот.
Значение NSValue интерпретируемый как a SMPTETime (определенный в CoreAudio/CoreAudioTypes.h).
@"SMPTETime" строковое значение может использоваться по ключевым путям для кодирования значения ключа, наблюдения значения ключа и привязки.
QTSampleBufferSceneChangeTypeAttribute
Если буфер отмечает изменение сцены во входном содержании, возвращает постоянное Изменение Сцены. Возвращенная константа указывает тип изменения сцены.
@"sceneChangeType" строковое значение может использоваться по ключевым путям для кодирования значения ключа, наблюдения значения ключа и привязки.
QTSampleBufferExplicitSceneChange
Указывает, что изменение сцены было явно отмечено в демонстрационных буферных метаданных.
Эта константа возвращается QTSampleBufferSceneChangeTypeAttribute указание, какое изменение сцены, если таковые имеются, отмечено демонстрационным буфером.
QTSampleBufferTimeStampDiscontinuitySceneChange
Указывает, что сцена изменилась вследствие разрыва в метках времени между текущим демонстрационным буфером и предыдущим демонстрационным буфером.
Эта константа возвращается QTSampleBufferSceneChangeTypeAttribute указание, какая сцена chnage, если таковые имеются, отмечена демонстрационным буфером.
Ссылки
Введение в руководство по программированию получения QTKit
История версии документа
| Дата | Примечания |
|---|---|
| 17.03.2008 | Новый документ, описывающий, как использовать QTSampleBufferSMPTETimeAttribute с демонстрационным буфером. |