C++ 如何控制比特率MEDIASUBTYPE_H264 directshow?
我有一个C++ 如何控制比特率MEDIASUBTYPE_H264 directshow?,c++,windows,directshow,logitech,C++,Windows,Directshow,Logitech,我有一个logitech c920网络摄像头,它显示一个编码的h264捕获pin(子类型:MEDIASUBTYPE\u h264) h264引脚支持以下分辨率: FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 640x480 @ 30 fps FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 160x90 @ 30 fps FORMAT_VideoInfo - subtype: MEDIASUBTYPE
logitech c920
网络摄像头,它显示一个编码的h264捕获pin
(子类型:MEDIASUBTYPE\u h264
)
h264引脚支持以下分辨率:
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 640x480 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 160x90 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 160x120 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 176x144 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 320x180 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 320x240 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 352x288 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 432x240 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 640x360 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 800x448 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 800x600 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 864x480 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 960x720 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 1024x576 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 1280x720 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 1600x896 @ 30 fps
FORMAT_VideoInfo - subtype: MEDIASUBTYPE_H264 1920x1080 @ 30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 640x480@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 160x90@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 160x120@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 176x144@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 320x180@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE \u H264 320x240@30 fps
格式\视频信息-子类型:媒体子类型\ H264 352x288@30 fps
格式\视频信息-子类型:媒体子类型\ H264 432x240@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 640x360@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 800x448@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 800x600@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 864x480@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 960x720@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 1024x576@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 1280x720@30 fps
格式\视频信息-子类型:媒体子类型\ H264 1600x896@30 fps
格式\u VideoInfo-子类型:MEDIASUBTYPE\u H264 1920x1080@30 fps
在我的测试中,无论选择的分辨率如何,它总是使用3 Mbit。这有点太多了,尤其是对于较低的分辨率
您知道如何使用directshow以编程方式选择所需的比特率吗?或者其他API 查询IAMStreamConfig接口的pin,通过GetStreamCaps()获取此格式列表,选择所需的格式,它将包含指向包含dwBitRate字段的VIDEOINFO结构的指针pFormat。将此字段更改为所需的比特率,并使用此新数据调用IAMStreamConfig::SetFormat。根据Logitech支持回答,编码为80/20 HW/SW,并且比特率(和GOP)无法控制。然而,他们的捆绑软件显然做到了这一点。除此之外,经过一些限制后,比特率会降低,尽管它发生在非常低的分辨率/fps组合下:
Required bandwidth for size: ( 1920 , 1080 ) @ 30 is 2.81771 Mbit
Required bandwidth for size: ( 1920 , 1080 ) @ 25 is 2.81672 Mbit
Required bandwidth for size: ( 1920 , 1080 ) @ 20 is 2.82701 Mbit
Required bandwidth for size: ( 1920 , 1080 ) @ 15 is 2.83327 Mbit
Required bandwidth for size: ( 1920 , 1080 ) @ 10 is 2.83594 Mbit
Required bandwidth for size: ( 1920 , 1080 ) @ 5 is 2.8431 Mbit
Required bandwidth for size: ( 1280 , 720 ) @ 30 is 2.82013 Mbit
Required bandwidth for size: ( 1280 , 720 ) @ 25 is 2.82436 Mbit
Required bandwidth for size: ( 1280 , 720 ) @ 20 is 2.83217 Mbit
Required bandwidth for size: ( 1280 , 720 ) @ 15 is 2.83696 Mbit
Required bandwidth for size: ( 1280 , 720 ) @ 10 is 2.83721 Mbit
Required bandwidth for size: ( 1280 , 720 ) @ 5 is 2.45272 Mbit
Required bandwidth for size: ( 864 , 480 ) @ 30 is 2.82089 Mbit
Required bandwidth for size: ( 864 , 480 ) @ 25 is 2.82313 Mbit
Required bandwidth for size: ( 864 , 480 ) @ 20 is 2.83131 Mbit
Required bandwidth for size: ( 864 , 480 ) @ 15 is 2.83343 Mbit
Required bandwidth for size: ( 864 , 480 ) @ 10 is 2.79526 Mbit
Required bandwidth for size: ( 864 , 480 ) @ 5 is 1.15564 Mbit
Required bandwidth for size: ( 320 , 180 ) @ 30 is 1.90123 Mbit
Required bandwidth for size: ( 320 , 180 ) @ 25 is 1.89367 Mbit
Required bandwidth for size: ( 320 , 180 ) @ 20 is 1.26006 Mbit
Required bandwidth for size: ( 320 , 180 ) @ 15 is 0.957935 Mbit
Required bandwidth for size: ( 320 , 180 ) @ 10 is 0.637158 Mbit
Required bandwidth for size: ( 320 , 180 ) @ 5 is 0.328456 Mbit
如果你提出了解决方案,请分享。谢谢