[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