アプリケーションを独自のコーデックから iOS ネイティブ h264 エンコーダー (VideoToolbox.framework) に移行する作業を行っていますが、質問があります。
圧縮データのビットレートまたはデータレートを設定する方法はありますか?
エンコーダーセッションを作成する方法は次のとおりです。
CFMutableDictionaryRef sessionAttributes = CFDictionaryCreateMutable(
NULL,
0,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
//** bitrate
int fixedBitrate = bitrate; // 2000 * 1024 -> assume 2 Mbits/s
CFNumberRef bitrateNum = CFNumberCreate(NULL, kCFNumberSInt32Type, &fixedBitrate);
CFDictionarySetValue(sessionAttributes, kVTCompressionPropertyKey_AverageBitRate, bitrateNum);
CFRelease(bitrateNum);
CFDictionarySetValue(sessionAttributes, kVTCompressionPropertyKey_ProfileLevel, kVTProfileLevel_H264_High_AutoLevel);
CFDictionarySetValue(sessionAttributes, kVTCompressionPropertyKey_RealTime, kCFBooleanTrue);
OSStatus error = VTCompressionSessionCreate(kCFAllocatorDefault,
width,
height,
kCMVideoCodecType_H264,
sessionAttributes,
NULL,
kCFAllocatorDefault,
&EncoderCallback,
this, *outputCallbackRefCon,
&m_EncoderSession);
私はさまざまな値でたくさん遊んでいますがkVTCompressionPropertyKey_AverageBitRate
、これは私には何の役にも立ち kVTCompressionPropertyKey_DataRateLimits
ません。また、さまざまな値で試してみましたが、運もありませんでした。
アイデア、提案は大歓迎です