Я работаю над проектом macOS, использующим аппаратное ускорение для кодирования видео, используя VideoToolbox.Я пытался управлять битрейтом, используя kVTCompressionPropertyKey_AverageBitRate
и kVTCompressionPropertyKey_DataRateLimits
, но после многих попыток он все еще часто превышает целевой битрейт.
Соблюдается ли kVTCompressionPropertyKey_DataRateLimits
в macOS?
Когда я использую VTSessionCopySupportedPropertyDictionary
для получения поддерживаемых свойств в моем сеансе сжатия, DataRateLimits отображается в словаре, иЯ установил его на сеанс сжатия без ошибок.Но затем, если я пытаюсь получить его значение, используя
CFTypeRef value = nullptr;
result = VTSessionCopyProperty(m_compressionSessionRef, (__bridge CFStringRef)key, kCFAllocatorDefault, &value);
, где key
- это DataRateLimits, как взято из словаря, он возвращает ошибку о том, что свойство не поддерживается. Но на iOS он возвращается успешно .
Это кажется довольно серьезным и не ограничивается моей машиной.Если это действительно не поддерживается, это поможет объяснить изменчивость моего битрейта кодирования.Однако за месяцы работы над этим проектом и исследования VideoToolbox я не видел ничего, что бы не поддерживалось аппаратным кодировщиком в macOS.Я думаю, что такой дефект будет большой проблемой.У кого-нибудь есть понимание здесь?Спасибо!