[Python-de] Mencoder und popen2
Paul Schulze
avlex at gmx.net
Fre Okt 7 15:29:59 CEST 2005
Hallo,
Ich versuche gerade ein Python Script zu erstellen, welches mir Filme
von DVD in das, für mein Handy verständliche, 3gp Format umwandelt. Dazu
wollte ich MEncoder (MPlayer Projekt) verwenden um die Video Daten in
ein angemessenes Format zu bringen, dann mit MPlayer selbst die Audio
Daten umwandeln und mit FFMpeg alles wieder zusammenfügen und encoden.
Die Ausführung von MEncoder funktioniert auch, allerdings wird die
temporäre Datei nur 639,6kB groß und das Script scheint sich aufzuhängen
oder in eine Endlos Schleife zu laufen und dabei den MEncoder Prozess zu
blockieren. Da ich noch etwas unerfahren bin, was diese Thematik angeht,
würde ich mich freuen, wenn mir jemand bei der Problemlösung einen
Hinweis geben könnte.
Hier ein Ausschnitt des Codes, in dem der Fehler liegen muss, da sich
das Programm an diesem Punkt aufhängt:
# Execute the command.
pin, pout, perr = popen2.popen3( command )
x = command
while pin:
print x
x = pin.readline()[:-1]
pin.flush()
perr.flush()
pin.close()
pout.close()
perr.close()
"command" ist hierbei ein vorher generierter Befehl, der z.B. so
aussehen kann: "mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4
-vop expand=176:144,scale=176:144 -o /tmp/movie2mobile.avi -ofps 15
sample.mpg"
"while pin:" habe ich gewählt, weil ich annehme, dass pin == None wird,
wenn der MEncoder Prozess beendet ist und die Pipe dabei schliesst, kann
sein, dass ich auch da falsch liege, aber eine andere Möglichkeit zu
prüfen, ob der Prozess fertig ist kenne ich bislang nicht.
Die Ausgabe soll später auch geparst werden, um z.B. für ein GUI die
nötigen Werte zu ermitteln.
Was mich wundert ist, dass, bis zu einem gewissen Punkt, die Ausgabe
funktioniert, was etwa so aussieht:
--> Snip <--
mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4 -vop
expand=176:144,scale=176:144 -o /tmp/movie2mobile.avi -ofps 15
sample.mpg
MEncoder 1.0pre7-3.3.5 (C) 2000-2005 MPlayer Team
CPU: Advanced Micro Devices (Family: 8, Stepping: 0)
Detected cache-line size is 64 bytes
CPUflags: Type: 8 MMX: 1 MMX2: 0 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0
Compiled for x86 CPU with extensions: MMX
success: format: 0 data: 0x0 - 0x25d01e4
MPEG-PS file format detected.
VIDEO: MPEG1 352x288 (aspect 8) 25.000 fps 1150.0 kbps (143.8
kbyte/s)
[V] filefmt:2 fourcc:0x10000001 size:352x288 fps:25.00 ftime:=0.0400
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1 (-1=autodetect) osd: 1
Opening video filter: [expand w=176 h=144]
Expand: 176 x 144, -1 ; -1 (-1=autodetect) osd: 0
Opening video filter: [scale w=176 h=144]
==========================================================================
Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
VDec: vo config request - 352 x 288 (preferred csp: Mpeg PES)
VDecoder init failed :(
Opening video decoder: [libmpeg2] MPEG 1/2 Video decoder
libmpeg2-v0.4.0b
Selected video codec: [mpeg12] vfm:libmpeg2 (MPEG-1 or 2 (libmpeg2))
==========================================================================
Writing AVI header...
ODML: Aspect information not (yet?) available or unspecified, not
writing vprp header.
VDec: vo config request - 352 x 288 (preferred csp: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
SwScaler: reducing / aligning filtersize 9 -> 8
SwScaler: reducing / aligning filtersize 9 -> 8
SwScaler: reducing / aligning filtersize 9 -> 8
SwScaler: reducing / aligning filtersize 9 -> 8
SwScaler: BICUBIC scaler, from Planar YV12 to Planar YV12 using MMX
videocodec: libavcodec (176x144 fourcc=34504d46 [FMP4])
ODML: Aspect information not (yet?) available or unspecified, not
writing vprp header.
--> /Snip <--
Ich würde mich wahnsinnig freuen, wenn mir hier jemand helfen könnte,
damit ich nach mehreren Tagen Fehlersuche, Google und anderen
erfolglosen Versuchen, den Fehler zu finden, endlich weiterkommen würde.
Grüße,
Paul.
--
Paul Schulze
Mail: avlex at gmx.net
Public Key: http://lightbringer.dyndns.org/keys/key_avlex.asc
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : nicht verfügbar
Dateityp : application/pgp-signature
Dateigröße : 189 bytes
Beschreibung: Dies ist ein digital signierter Nachrichtenteil
URL : http://starship.python.net/pipermail/python-de/attachments/20051007/52f1d0d0/attachment.pgp