2012-07-27 17 views
5

Ho una webcam logitech c920 che presenta una codifica h264 capture pin (sottotipo: MEDIASUBTYPE_H264).Come controllare il bitrate MEDIASUBTYPE_H264 directshow?

Il perno h264 supporta le seguenti risoluzioni:

 
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 

Nel mio test si utilizza sempre 3 Mbit indipendentemente dalla risoluzione selezionata. È un po 'troppo, specialmente per le risoluzioni più basse.

Qualche idea su come selezionare in modo programmatico il bitrate desiderato utilizzando directshow? O forse altre API?

risposta

1

Dalla risposta del supporto Logitech segue che la codifica è 80/20 HW/SW e il bitrate (e GOP) non può essere controllato. Tuttavia, il loro software in bundle ovviamente lo fa. Oltre a questo, dopo qualche limite, v'è una diminuzione del tasso di punta, anche se avviene a combinazioni veramente bassi risoluzione/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 

Se si avvicinò con la soluzione, per favore, la quota. Grazie!

2

Query pin per interfaccia IAMStreamConfig, ottieni questo elenco di formati tramite GetStreamCaps(), seleziona quello che ti serve, conterrà il puntatore pFormat alla struttura VIDEOINFO che contiene il campo dwBitRate. Cambia questo campo al bitrate desiderato e chiama IAMStreamConfig :: SetFormat con questi nuovi dati.

Problemi correlati