0
我正在写一个应用程序,实时记录PC的屏幕,并使用Media Foundation h264编码解码器进行编码。如果屏幕上的图片没有很多动态变化,则所得视频的质量会保持较高水平。如果图片有很多动态变化(例如网页的快速滚动),则视频质量会变得非常低。这听起来像是一个低比特率的问题,但参考OSX录制应用程序工作正常,具有相同的设置。媒体基金会h264编码器动态场景质量差
编解码器的配置:
- 25帧
- 1364×768分辨率
- 基线分布
- 1.2兆比特的比特率
为了最大限度地提高质量,我配置了以下参数的编解码器:
- CODECAPI_AVEncCommonRateControlMode = eAVEncCommonRateControlMode_Quality
- CODECAPI_AVEncCommonQuality = 100
- CODECAPI_AVEncAdaptiveMode = eAVEncAdaptiveMode_FrameRate
- CODECAPI_AVEncMPVGOPSize = 10
不幸的是,这并没有太大的帮助。唯一具有实际效果的设置是比特率。
一个例子视频,演示该问题: https://www.dropbox.com/s/b26odaeyaygxigo/10-22-2016_15.08.17.mp4?dl=1
嗨,你确定问题是媒体基金会h264编码器?什么是PC的桌面屏幕的来源? –
使用IDirect3DSurface9捕获PC的屏幕,然后按原样输入到IMFSinkWriter。没有理由为什么压缩失真应该出现在这个管道中,而不是在编码器中。 –
嗨,我认为与编码器的问题。您设置的分辨率几乎为FULL HD的低比特率。您比较OSX h264和Media Foundation h264编码器,但它是两个不同的公司。规格h264保证来自OSX h264和Media Foundation h264编码器的视频可以播放,但IT不保证相同的质量。更重要的是,来自微软的视频和音频编码器以质量差和优化不佳而着称 - 例如,Windows 10中的h265编码器 - 它只能在x64下工作,但在x86中它会抛出异常并使应用程序崩溃。 –