硬件编码器macOS不尊重kVTCompressionPropertyKey_DataRateLimits属性

时间:2019-06-13 22:35:38

标签: macos h.264 hardware-acceleration bitrate video-toolbox

我正在研究一个MacOS项目,该项目使用VideoToolbox将硬件加速用于视频编码。我尝试使用kVTCompressionPropertyKey_AverageBitRatekVTCompressionPropertyKey_DataRateLimits控制比特率,但是经过多次尝试,它仍然经常超过目标比特率。

在MacOS上kVTCompressionPropertyKey_DataRateLimits得到尊重吗?

当我使用VTSessionCopySupportedPropertyDictionary获取压缩会话上受支持的属性时,DataRateLimits将显示在字典中,并且我已在压缩会话上对其进行了设置而没有错误。但是,如果我尝试真正使用它来获得它的价值

CFTypeRef value = nullptr;
result = VTSessionCopyProperty(m_compressionSessionRef, (__bridge CFStringRef)key, kCFAllocatorDefault, &value);

其中key是DataRateLimits,从字典中获取,它返回错误,表明该属性不受支持。 但是在iOS上,它会成功返回

这似乎很严重,并且似乎不限于我的机器。如果确实不支持它,那将有助于解释我的编码比特率的波动性。但是,在从事该项目和研究VideoToolbox的几个月中,我还没有看到关于macOS上的硬件编码器不支持此功能的任何信息。我认为这样的缺陷将是一个大问题。有人在这里有见识吗?谢谢!

0 个答案:

没有答案