2012-07-27 19 views
5

Tengo una cámara web logitech c920 que presenta un h264 capture pin codificado (subtipo: MEDIASUBTYPE_H264).Cómo controlar la velocidad de bits MEDIASUBTYPE_H264 directshow?

El pasador H264 es compatible con las siguientes resoluciones:

 
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 

En mis pruebas siempre utiliza 3 Mbits independientemente de la resolución seleccionada. Es un poco demasiado, especialmente para las resoluciones más bajas.

¿Alguna idea sobre cómo seleccionar programáticamente la tasa de bits deseada usando directshow? O tal vez otra API?

Respuesta

1

De la respuesta de soporte de Logitech se deduce que la codificación es 80/20 HW/SW y la tasa de bits (y GOP) no se puede controlar. Sin embargo, su software incluido obviamente hace eso. Aparte de eso, después de cierto límite, se produce una disminución en la velocidad de bits, aunque ocurre en combinaciones muy baja resolución/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.9Mbit 
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 

Si se le ocurrió la solución, por favor, compartir. ¡Gracias!

2

Pin de consulta para la interfaz IAMStreamConfig, obtenga esta lista de formatos a través de GetStreamCaps(), seleccione la que necesita, contendrá el puntero pFormato a la estructura VIDEOINFO que contiene el campo dwBitRate. Cambie este campo a la velocidad de bits deseada y llame a IAMStreamConfig :: SetFormat con esta nueva información.

Cuestiones relacionadas