wie mein Code, um eine bessere Videoqualität zu verbessern?
Frage
Ich bin mit dem folgenden Code ein Windows Media Encoder nutzen Bildschirm aufzuzeichnen. Ich verwende Windows Vista, Bildschirmauflösung 1024 × 768, 32-Bit. Mein Problem ist, könnte das Video erfolgreich aufgezeichnet werden, aber wenn ich das aufgenommene Video abspiele, die Qualität des Videos ist nicht sehr gut - z.B. Zeichen sind sehr dunkel. Ich frage mich, was sind die Parameter I abzustimmen versuchen sollte, eine bessere Qualität der Recorder Video zu bekommen?
Mein Code,
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();
Vielen Dank im Voraus, George
Lösung
Video-Encoder verwenden, um eine bestimmte kbit / s-Verhältnis der Größe des erzeugten Stroms zu begrenzen. Je weniger kbits / s die weniger detailliert Sie durch weniger Koeffizienten aus dem DCT und größeren Quantisierungswerte bekommen. Mit anderen Worten: Je mehr kbits / s setzen Sie in das Video desto mehr Details können im Strom durch den Codierer gespeichert werden
.Gemessen an Ihrem Code Sie ein Profil gewählt hat, die 384 kbit verwendet / s, die für ein 1024 * 768 Video nicht sehr viel. Sie sollten andere Profile versuchen oder setzen Bitrate Sie selbst wollen.