Automatisiertes Demuxxen von großen Mengen
Verfasst: So 30 Jan 2005, 12:53
Hi...
wer kennt das nicht?
Da streamt man über mehrere Tage mit der Dbox (oder einer TV-Karte) seine Lieblingssendungen und will sie nun ordentlich zurechtschneiden.
Da Cuttermaran die Streams nur als Bild und Ton getrennt voneinander verarbeitet ist guter Rat (und auch Zeit) teuer, wie man zB. mal eben 10 Streams mit insgesamt 40GB trennt, ohne sich nen Wolf zu warten oder jeden Stream einzeln trennen zu müssen (zB. mit den MPEG-Tools bei TMPGENC).
Genau unter dieser Voraussetzung bin ich mal im Internet auf die Suche nach einem Demuxxer gegangen, der sich über die Kommandozeile steuern und füttern lässt
und bin mit "bbdmux" fündig geworden (zu beziehen HIER: http://members.cox.net/beyeler/bbmpeg.html)
Der Demuxxer ist Bestandteil der bbTOOLS1.9, ist Freeware und (soweit ich es verstanden habe) als Ergänzung zum bbMPEG gedacht, kann aber auch als Standalone laufen
(Achtung: es kann sein, dass die Site über ihrer Quota ist - einfach GOOGLE mit bbtool19.zip füttern und das Ganze woanders runterladen
)
Wer auf ProjectX als Demuxxer setzt, braucht nicht weiter zu lesen, alle anderen, die sich sicher sind, dass ihre Streams OK sind: hier ist die Lösung
Das Gequotete kann man in eine BATCH-Datei reinschreiben (Achtung: der ROTE TEXT ist EINE LANGE Befehlszeile (OHNE den Pause-Befehl)) und sie dann in dem Verzeichnis starten, wo die zu trennenden MPGs liegen (natürlich muss man die bbdmux.exe bereitliegen haben; Ort kann von User zu User abweichen)
for %%a in (*.mpg) -> alle im Ordner befindlichen MPGs werden der Reihe nach an die Variable %%a übergeben
do -> Tu was
c:\programme\bbdmux\bbdmux.exe "%%a" 0xe0 "g:\x\%%a.m2v" -> bbdmux bekommt die Variable "%%a" übergeben, nimmt sich den Stream 0Xe0 (ist der Videostream - kann aber variieren, wobei ich das noch nicht beobachtet habe) und schreibt den Videostream an die Stelle g:\x\ und hängt noch ein .m2v an den Ursprungsnamen an (zB test.mpg -> test.mpg.m2v)
| -> mach noch was anderes
c:\programme\bbdmux\bbdmux.exe "%%a" 0xc0 "g:\x\%%a.mp2" -> was für den Videostream gilt, gilt auch für den Audiostream. (0xc0 ist der MP2-Stream; AC3 hat eine andere Kennung) (zB test.mpg -> test.mpg.mp2)
pause -> damit der User auch sieht, was alles gemacht wurde, ansonsten würde das DOS-Fenster sofort nach der letzten Aktion geschlossen werden
Wer sich nicht sicher ist, welche Kennungen seine Streams haben, kann bbdmux.exe NUR mit dem MPG-Namen aufrufen (also zB.: bbdmux test.mpg) und bekommt dann aufgelistet, aus wievielen Einzelstreams das MPG besteht und wie die Kennungen sind
WICHTIG! Die Anführungszeichen MÜSSEN an ihren Stellen bleiben, da sonst Dateien mit LEERZEICHEN im Namen nicht verarbeitet werden können.
Ebenfalls wichtig: Video und Audio werden GLEICHZEITIG getrennt geschrieben, während das Original-MPG eingelesen wird (und nicht etwa nacheinander).
TRANSPORT-STREAMS können auch verarbeitet werden - hierzu muss folgendes beachtet werden:

Hier ein Beispiel:
Diese Batch ist unter Windows 2000 getestet worden und funktioniert
Wer 2 Festplatten sein Eigen nennt, sollte (wenn die Original-Streams auf Platte 1 vorliegen) die getrennten Streams auf Platte 2 schreiben lassen bzw. umgekehrt.
Sollten die Streams zB noch auf der Dreambox liegen und man hat Zugriff übers Netz auf die Daten, kann man die Daten übers Netz auch gleich demuxxen, das spart die Zeit fürs Kopieren und ist nur unwesentlich langsamer (ich hatte es für 550MB getestet: übers Netz kopieren: 57 Sekunden; übers Netz demuxxen: 61 Sekunden)
Sollten noch Fragen sein - ich werde versuchen, sie zu beantworten.
Sollten Kritik oder Verbesserungsvorschläge vorhanden sein - als her damit
Grüße und viel Spaß beim Demuxxen

Seppo
wer kennt das nicht?
Da streamt man über mehrere Tage mit der Dbox (oder einer TV-Karte) seine Lieblingssendungen und will sie nun ordentlich zurechtschneiden.
Da Cuttermaran die Streams nur als Bild und Ton getrennt voneinander verarbeitet ist guter Rat (und auch Zeit) teuer, wie man zB. mal eben 10 Streams mit insgesamt 40GB trennt, ohne sich nen Wolf zu warten oder jeden Stream einzeln trennen zu müssen (zB. mit den MPEG-Tools bei TMPGENC).

Genau unter dieser Voraussetzung bin ich mal im Internet auf die Suche nach einem Demuxxer gegangen, der sich über die Kommandozeile steuern und füttern lässt

Der Demuxxer ist Bestandteil der bbTOOLS1.9, ist Freeware und (soweit ich es verstanden habe) als Ergänzung zum bbMPEG gedacht, kann aber auch als Standalone laufen



Wer auf ProjectX als Demuxxer setzt, braucht nicht weiter zu lesen, alle anderen, die sich sicher sind, dass ihre Streams OK sind: hier ist die Lösung

Das Gequotete kann man in eine BATCH-Datei reinschreiben (Achtung: der ROTE TEXT ist EINE LANGE Befehlszeile (OHNE den Pause-Befehl)) und sie dann in dem Verzeichnis starten, wo die zu trennenden MPGs liegen (natürlich muss man die bbdmux.exe bereitliegen haben; Ort kann von User zu User abweichen)
Hier die Erklärung der Batch im Einzelnen:for %%a in (*.mpg) do c:\programme\bbdmux\bbdmux.exe "%%a" 0xe0 "g:\x\%%a.m2v" | c:\programme\bbdmux\bbdmux.exe "%%a" 0xc0 "g:\x\%%a.mp2"
pause
for %%a in (*.mpg) -> alle im Ordner befindlichen MPGs werden der Reihe nach an die Variable %%a übergeben
do -> Tu was

c:\programme\bbdmux\bbdmux.exe "%%a" 0xe0 "g:\x\%%a.m2v" -> bbdmux bekommt die Variable "%%a" übergeben, nimmt sich den Stream 0Xe0 (ist der Videostream - kann aber variieren, wobei ich das noch nicht beobachtet habe) und schreibt den Videostream an die Stelle g:\x\ und hängt noch ein .m2v an den Ursprungsnamen an (zB test.mpg -> test.mpg.m2v)
| -> mach noch was anderes

c:\programme\bbdmux\bbdmux.exe "%%a" 0xc0 "g:\x\%%a.mp2" -> was für den Videostream gilt, gilt auch für den Audiostream. (0xc0 ist der MP2-Stream; AC3 hat eine andere Kennung) (zB test.mpg -> test.mpg.mp2)
pause -> damit der User auch sieht, was alles gemacht wurde, ansonsten würde das DOS-Fenster sofort nach der letzten Aktion geschlossen werden

Wer sich nicht sicher ist, welche Kennungen seine Streams haben, kann bbdmux.exe NUR mit dem MPG-Namen aufrufen (also zB.: bbdmux test.mpg) und bekommt dann aufgelistet, aus wievielen Einzelstreams das MPG besteht und wie die Kennungen sind

WICHTIG! Die Anführungszeichen MÜSSEN an ihren Stellen bleiben, da sonst Dateien mit LEERZEICHEN im Namen nicht verarbeitet werden können.
Ebenfalls wichtig: Video und Audio werden GLEICHZEITIG getrennt geschrieben, während das Original-MPG eingelesen wird (und nicht etwa nacheinander).
TRANSPORT-STREAMS können auch verarbeitet werden - hierzu muss folgendes beachtet werden:
Wenn man bbdmux.exe nur mit dem MPG-Namen aufruft (also zB. bbdmux.exe test.mpg) und schon bekommt man alle Streams angezeigt und muss dann die 0x....-IDs anpassen- for program streams, stream id is the number (in 0x00 format) to extract. For transport streams, stream id is the PID (in 0x0000 format) to extract.
(steht im bbdmux.txt)

Hier ein Beispiel:
Scanning for stream id's, press control-c to quit ...
File 1.mpg is an MPEG-1 Program Stream
Found stream id 0xE0 = Video Stream 0
Found stream id 0xC0 = MPEG Audio Stream 0 <-- bei TRANSPORT-STREAMS sollte 0Xcccc stehen (cccc=irgendeine 4-stellige Nummer)
Found stream id 0xBE = Padding Stream
Summary:
MPEG Packs = 21164
System headers = 827
Padding Stream packets = 828, total bytes = 740436
MPEG Audio stream 0 packets = 2862, total bytes = 5794014
Video stream 0 packets = 18301, total bytes = 36211292
Diese Batch ist unter Windows 2000 getestet worden und funktioniert

Wer 2 Festplatten sein Eigen nennt, sollte (wenn die Original-Streams auf Platte 1 vorliegen) die getrennten Streams auf Platte 2 schreiben lassen bzw. umgekehrt.
Sollten die Streams zB noch auf der Dreambox liegen und man hat Zugriff übers Netz auf die Daten, kann man die Daten übers Netz auch gleich demuxxen, das spart die Zeit fürs Kopieren und ist nur unwesentlich langsamer (ich hatte es für 550MB getestet: übers Netz kopieren: 57 Sekunden; übers Netz demuxxen: 61 Sekunden)
Sollten noch Fragen sein - ich werde versuchen, sie zu beantworten.
Sollten Kritik oder Verbesserungsvorschläge vorhanden sein - als her damit

Grüße und viel Spaß beim Demuxxen


Seppo