我正在编写一个实时记录PC屏幕的应用程序,并使用Media Foundation h264编解码器对其进行编码。如果屏幕上的图片没有很多动态变化,则所得视频的质量会保持很高。如果图片有许多动态变化(例如,快速滚动网页),则视频质量变得非常低。这听起来像一个低比特率问题,但参考OSX录制应用程序可以正常使用相同的设置。
编解码器配置:
为了最大限度地提高质量,我使用以下参数配置了编解码器:
不幸的是,这并没有多大帮助。唯一具有实际效果的设置是比特率。
示例视频,演示了此问题: https://www.dropbox.com/s/b26odaeyaygxigo/10-22-2016_15.08.17.mp4?dl=1
答案 0 :(得分:0)
您需要通过此步骤设置比特率和质量:
VARIANT controlModeVar;
InitVariantFromUInt32(eAVEncCommonRateControlMode_GlobalVBR,
&controlModeVar);
hr = CodeApi->SetValue(&CODECAPI_AVEncCommonRateControlMode,
&controlModeVar);
VARIANT quality;
InitVariantFromUInt32(BitRate, &quality);
hr = CodeApi->SetValue(&CODECAPI_AVEncCommonMeanBitRate,
&quality);
InitVariantFromUInt32(eAVEncCommonRateControlMode_Quality,
&controlModeVar);
hr = CodeApi->SetValue(&CODECAPI_AVEncCommonRateControlMode,
&controlModeVar);
InitVariantFromUInt32(H264QualityLevel, &quality);
hr = CodeApi->SetValue(&CODECAPI_AVEncCommonQuality, &quality);
min os需要windows8。