come migliorare il mio codice per migliorare la qualità del video?
Domanda
Sto usando il seguente codice per sfruttare Windows Media Encoder per registrare lo schermo. Sto usando Windows Vista, risoluzione dello schermo 1024 & # 215; & 768 # 65292; 32-bit. Il mio problema è che il video potrebbe essere registrato correttamente, ma quando riproduco il video registrato, la qualità del video non è molto buona, ad es. i personaggi sono molto oscuri. Mi chiedo quali sono i parametri che dovrei provare a sintonizzare per ottenere una migliore qualità del video del registratore?
Il mio codice,
static WMEncoder encoder = new WMEncoder();
IWMEncSourceGroup SrcGrp;
IWMEncSourceGroupCollection SrcGrpColl;
SrcGrpColl = encoder.SourceGroupCollection;
SrcGrp = (IWMEncSourceGroup)SrcGrpColl.Add("SG_1");
IWMEncVideoSource2 SrcVid;
SrcVid = (IWMEncVideoSource2)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);
SrcVid.SetInput("ScreenCap://ScreenCapture1", "", "");
IWMEncFile File = encoder.File;
File.LocalFileName = "C:\\OutputFile.avi";
// Choose a profile from the collection.
IWMEncProfileCollection ProColl = encoder.ProfileCollection;
IWMEncProfile Pro;
for (int i = 0; i < ProColl.Count; i++)
{
Pro = ProColl.Item(i);
if (Pro.Name == "Windows Media Video 8 for Local Area Network (384 Kbps)")
{
SrcGrp.set_Profile(Pro);
break;
}
}
encoder.Start();
grazie in anticipo, George
Soluzione
Gli encoder video utilizzano un certo rapporto kbit / secondo per limitare le dimensioni del flusso generato. Meno kbit / sec meno dettagli otterrai grazie ai minori coefficienti del DCT e valori di quantizzazione maggiori. In altre parole: più kbit / sec inserisci nel video, più dettagli possono essere memorizzati nello stream dall'encoder.
A giudicare dal tuo codice hai scelto un profilo che utilizza 384 kbit / s che non è molto per un video 1024 * 768. Dovresti provare altri profili o impostare il bitrate che desideri.