CQTester


Download:
CQTester nur EXE downloads: 7259 - (VB Runtime necessary)
CQTester Help (Dieser Text) downloads: 2297

Es gibt verschiedene Methoden einen Film im CQ Modus (auf die Frage ob CQ besser als 2 pass VBR ist, gehe ich hier nicht ein...) passend auf eine CD zu kriegen: Tok, CQMatic, DVD2SVCD, "von Hand" rechnen..., aber all diese Methoden konnten mich nicht überzeugen, da sie meist keine TMPGEnc Cuts unterstützen, oder kompliziert oder nicht Batch fähig sind. Daher habe ich den CQTester entwickelt. Der Ansatz ist relativ simpel: Die xxx.tpr Datei wird analysiert (isb. auf Cut Points) und aus den genutzten Bereichen jeweils ca. 1 sek pro Minute Film encodet. Die Grösse der entstandenen MPG Datei wird auf die Länge des Film hochgerechnet und daraus ein neuer CQ Wert berechnet. Mit diesem wird wieder getestet usw. (CQMatic macht das ähnlich).
Nach max. 9 Versuchen sollte ein "brauchbarer" CQ Wert herausgekommen sein. Die "Vorhersagegenauigkeit" liegt bei ca. 2-3% Abweichung.
CQTester wurde unter Windows2000 und XP entwickelt (Das Programm verwendet dann die PSAPI.DLL die nur in diesen Betriebssystemen verfügbar ist), es sollte aber auch in Windows 9X/ME lauffähig sein.
Sonstige Vorraussetzungen:
Damit der CQTester funktioniert MUSS ein Bereich "geschnitten" sein, ggf. kann das aber der ganze Film sein. In diesem Fall in TMPGEnc unter "Source range" nichts markieren, "Cut editing" klicken und "Cut except currently selected area" auswählen (Also nicht "Start frame und "End frame" auf bestimmte Werte stellen OHNE zu schneiden - "Start frame" muss 0 sein und "End frame" -1!). Falls man als Ausgabe Stream "ES Video only" verwendet, dann DARF auch nur der ganze Film selektiert sein. Ein Beispiel ist im Anhang.

Falls man elementare Video und Audio Streams verwenden will, kann der CQTester nach dem Encoden die Streams mit bbmpeg muxen, hierzu ist die modifizierte Version von der DVD2SVCD Homepage erforderlich. Link: www.dvd2dvd.org Die benötigte bbMPEG Version ist links unten zu finden: bbMPEG v1.24 beta 18 (SemiCLI 1.0.0.2). Falls man mit bbMPEG auch "von Hand" muxen will, braucht man unter WinXP ggf. eine gepatchte Version der bbmpeg.dll, gibt es z.B. hier: www.divx-digest.com/software/avi2mpg2
(Stichpunkt 5: bbMPEG XP patch). Diese in einem separaten Verzeichnis installieren, da sie nicht kompatiben mit der SemiCLI Version ist. In den bbMPEG Settings muss "Run in batch mode" aktiviert sein. Falls man vorhat, den Film mit dvdauthor (bzw. meinem GUI for dvdauthor) auf DVD zu brennen, kann man auch mit mplex muxen. Hierzu wird gleich die nötige Option (mplex - f 8) verwendet. Bitte nur mit DVD konformen Audio Streams verwenden.
Zusätzlich kann CQTester noch das Audiofile mit BeSweet in das Zielformat konvertieren (bei manchen Aufnahmen von DVB Streams hatte ich nach 10-20 min keinen Ton mehr im encodeten Film  - Audio vorher mit BeSweet transcodiert => keine Probleme mehr), hierzu ist natürlich ein installiertes BeSweet erforderlich, dieses bekommt man bei: dspguru.doom9.net

Nach dem ersten Start müssen einige Dateipfade gesetzt werden. Hierzu auf "Settings" klicken:
CQTest_1A.png
Die Pfade zu TMPGEnc.exe, RunbbMPEG.exe, mplex.exe und BeSweet.exe auswählen oder eintippen (Pfad zu
RunbbMPEG.exe, mplex.exe und BeSweet.exe ist natürlich nur erforderlich, wenn man diese auch verwenden will). "Use BeSweet for Audiofile before encoding" lässt sich erst aktivieren nachdem ein gültiger Pfad zu BeSweet.exe vorhanden ist. Ebenso geht "Mux with bbmpeg" nur mit gültigen Pfad zu RunbbMPEG.exe... Eine ausführliche Beschreibung der einzelnen Einstellungen ist im Anhang.
Man kann entweder eine feste Sample Grösse verwenden ("Use fixed Test Settings") oder die Sample Grösse dynamisch in Abhängigkeit von der GOP Länge berechnen lassen ("Use dynamic Test Settings" = default). Mit "Default min/CD" kann man eine Anzahl von Minuten vorgeben, ab welcher der CQTester von zwei (oder noch mehr) CD's ausgehen würde (siehe "Number of CD's" im Hauptfenster). Nack Klick auf "OK" werden alle Einstellungen in der Windows Registrierung gespeichert.

Der Wert für "MB pro CD" hängt von der CD-Rohlinggrösse ab (1MB = 1048576 Bytes!). Kann jeder so verändern wie er das will. Auch diese Einstellung wird in der Windows Registrierung gespeichert. "Number of CD's" wird entsprechend der Filmlänge und dem eingestellten Wert für "Default min/CD" aus dem TMPGEnc Projekt bestimmt (kann dann aber verändert werden). Der CQ Wert wird zunächst ebenfalls aus der TMPGEnc Projekt Datei entnommen, kann dann ebenfalls geändert werden und ändert sich natürlich während der Optimierung.
Als erstes das zuvor in TMPGEnc gespeicherte Projekt laden (mit dem "Öffnen" Button oder eintippen)
Danach wird der Inhalt der Projekt Datei analysiert und im unteren Fenster angezeigt.
CQTest_2
Jetzt kann man die Anzahl CD's ändern (Standard ist 1 CD pro 90 Min Film) den "Start" CQ Wert anpassen und ggf. projektspezifisch auch noch die MB pro CD anpassen (z.B. wenn man zwei Serien auf eine CD packen will...). Wenn als Output in TMPGEnc elementare Streams (sowohl Video+Audio als auch Video only) eingestellt sind, wird zusätzlich noch die Größe der Audiodatei berechnet (entsprechend der im TMPGEnc project enthaltenen Audiobitrate) sowie der MUX - Overhead (wobei als Berechnungsgrundlage der Overhead von bbmpeg verwendet wird). Beide Werte lassen sich hier auch ändern (nötig falls man ein anderes Mux - Programm oder mehrere Audiostreams verwenden will). Diese Werte werden während der Optimierung zur ermittelten Grösse der Videodatei addiert und das Ergebnis mit dem "MB pro CD" Wert verglichen.
CQTest_5.png

Dann gibt es folgende Möglichkeiten:
"TestCQ": Damit wird nur ein Durchlauf mit dem momentan eingestellten CQ Wert durchgeführt und eine Hochrechnung auf den gesamten Film ausgegeben (im Popup Fenster). Ist ganz praktisch um zu testen ob der Film mit einer persönlichen CQ Grenze noch passen würde.
CQTest_3

"Opt. CQ": Startet die Optimierung mit bis zu 9 Durchläufen. Die "Ergebnisse" sind im unteren Fenster zu sehen. Kann man verwenden um z.B. die CQ-Werte einiger Projekte zu bestimmen und dann mit TMPGEnc's eigener Batch Verwaltung zu encoden.

"Opt. + Enc." Startet die Optimierung und anschließend das Encoden des ganzen Films (mit dem optimierten CQ Wert) sowie ggf. die Umrechnung des Audiofiles mit BeSweet. Falls man als Output elementare Video und Audio Streams verwendet, werden diese nach dem Encoden noch gemuxt. Wenn die Option "Close after encode" aktiviert ist, beendet sich CQTester nach dem Encoden. Die Optimierung ist in einem Log file gespeichert, falls man es nachsehen will.

"Stop" Beendet die Optimierung (aber nicht TMPGEnc).

"Quit" Beendet das Programm.

Will man gleich mehrere Filme encoden, so muss man zunächst alle Filme als TMPGEnc Projekte fertigstellen und (im TMPGEnc Text Format!) speichern. Dann kann man diese nacheinander in den CQTester laden, ggf. die Anzahl der CD's und die MB pro CD anpassen (bei elementaren Streams auch die Audio und Mux Größe) und auf "Add To Batch List" klicken. Um ein Projekt wieder zu entfernen, zunächst die Batch Liste mit "Show Batch List" anzeigen das zu entfernende Projekt auswählen und auf "Remove" klicken. Außerdem kann man natürlich hier die Liste vor dem Start noch mal ansehen. Zum Ändern von Einstellungen (z.B. Anzahl CD's) in der Batch Liste das Projekt noch mal entfernen und (mit den neuen Einstellungen) neu hinzufügen. Wenn die Liste OK ist, mit "BatchRun" das Optimieren und Encoden starten. Ab Version 0.19 kann die Liste auch als LST - Datei gespeichert bzw. wieder eingeladen werden. Achtung: Es findet keine "Prüfung" der Liste statt.

CQTest_4

Viel Spaß,
Borax

Anhang:
Die Default Einstellung zum Testen/Optimieren des CQ Wertes ist "Use
dynamic Test Settings" mit 2 GOP Längen. Diese Einstellung ist gut geeignet für die DVD typische GOP Länge von 15 Frames. In diesem Fall verwendet der CQTester 30 Frames pro Testsample was (bei PAL Filmen mit 25 FPS) 1.2 Sekunden ergibt. Bei einer Gesamttestlänge von (ebenfalls Default) 2% des ganzen Films sich damit 1 Sample pro Minute. Wenn man wesentlich längere GOPs verwendet, erhält man mit der Einstellung 1 GOP vermutlich bessere Ergebnisse, da man ansonsten ein langes Sample nur alle paar Minuten encodet und dadurch die Abweichungen  bei verschiedenen Offsets grösser werden.
Spezialisten dürfen auch gerne andere Werte für die Optimierung verwenden, per Default werden bei "fixed Test settings" 0,72 sek encoded und zwar alle 60 sek. Außerdem wird nicht ab Sekunde 0 encodet, sondern ab der unter  "Start Offset (sek)" angegebenen Sekunde. Während der Optimierung wechselt der CQTester dann immer zwischen zwei verschiedenen Offsets. (Also beim Default Offset immer zwischen Sekunde 2 und Sekunde 31). Manchmal oszilliert dann die Testfunktion (z.B. bei gleicher CQ liegt man beim Offset 2 Sekunden 5% über und bei 31 Sekunden 5% unter dem vorgegebenen Wert für "MB pro CD") in diesem Fall wird der Offset automatisch um einige Sekunden verschoben. Falls nach 9 "Versuchen" kein passender CQ ermittelt werden konnte wird ein Durchschnittswert berechnet (mit "Least square fit" durch die letzten 8 Versuche). Den "Verlauf" der Optimierung kann man sich mit "ShowGraph" anzeigen lassen. Hier kann man auch "alte" Optimierungen anzeigen, wenn man das entsprechende CQTester Log File einläd.
Ebenso kann man den Eintrag für die BeSweet Optionen verändern. Am einfachsten, wenn man das BeSweet GUI verwendet, dort die Einstellungen wie gewünscht vornimmt und dann den entsprechenden Teil der Kommandozeile in das Textfeld "BeSweet settings" reinkopiert.
Anmerkung zum (Auto-)muxen mit bbmpeg: Da sich die Einstellungen etwas unterscheiden, je nachdem ob MPEG1 oder MPEG2 encodet wird, verwendet der CQTester zwei "Templates" zum Starten von bbmpeg:  defaultmpeg1.ini und defaultmpeg2.ini. Diese beiden Dateien entsprechen der "default.ini" welche von bbmpeg erstellt wird, wenn man unter "Load and Save Settings" seine Einstellungen mit "Save as Default" speichert. Falls man andere Einstellungen will/braucht, dann in bbmpeg die gewünschten Einstellungen vornehmen und als default speichern. Anschließend die neu erstellte default.ini in
defaultmpeg1.ini bzw. defaultmpeg2.ini umnennen und die "alten" damit ersetzen. Alternativ kann man das auch mit einem Texteditor anpassen.

Weil es bisher das häufigste Problem war, hier noch ein Beispiel für die Schnitteinstellung "ganzer Film" mit TMPGEnc
CQTest_6.png