参考了csdn上Win32Project1_ffmpeg_dxva2这个例子,很不错,直接就可以运行。
但是,有几个问题:
1、窗口无法正常缩放,缩放后,图像大小并没有一起缩放
2、H265的编码格式,显示下面有一块绿色。
3、无法从显卡获取YUV420P数据或者NV12数据
3、找了很久网上也没有相关代码实现从显卡获取数据到内存(有些方法相当慢,基本无法使用!)
4、新遇到问题(2019.11),如果编码端采用硬件(GPU)编码后,会生成1088P的图像,你没看错,是1088,不是1080P,这时候解码如果直接显示会在屏幕下边产生8个像素高的绿条。
第4个问题,查了很多资料也没找到解决方法,其实不怪别人,只是自己理解得不够深入,什么东西都有第一次,第一次一般都比较肤浅,以后随着日久生情,慢慢就深入浅出了,我在说什么?不知所云了,哈哈:
其实就一个函数:
IDirect3DDevice9::StretchRect(THIS_ IDirect3DSurface9* pSourceSurface,CONST RECT* pSourceRect,IDirect3DSurface9* pDestSurface,CONST RECT* pDestRect,D3DTEXTUREFILTERTYPE Filter)
pSourceRect这个参数稍微改下就OK了。
原代码是0,默认是原图像的全部区域。我们改成1920X1080不就OK了?好的,试试,果然如此!问题轻松解决。
其实有时不需要台急躁,网络不是万能的,稍微用点精力去理解下函数接口,有些问题就迎刃而解了。记录下。谢谢大家!
我的QQ35744025,对音视频有些了解,愿意为公司或者个人提供技术合作和支持,有需求的请骚扰!