Seite 1 von 2
Thumbnail aus .flv
Verfasst: Montag 16. August 2010, 13:42
von Mathmos
Hallo
ich möchte aus einer .flv datei ein thumbnail erstellen.
jetzt ist nur die frage wie.
was ich bisher rausgefunden habe, soll ffmpeg wohl dafür zuständig sein.
so wie ich das bisher überall gelesen habe, ist es schonmal kein import, sondern ein eigenständiges programm.
eine frage noch am rande.
wie kann ich den ablauf eines laufenden programmes stoppen?
die einzige lösung die ich bisher gefunden habe, ist sys.exit().
aber das ist nicht ganz mein ziel.
Re: Thumbnail aus .flv
Verfasst: Montag 16. August 2010, 13:46
von Hyperion
Mathmos hat geschrieben:Hallo
ich möchte aus einer .flv datei ein thumbnail erstellen.
jetzt ist nur die frage wie.
was ich bisher rausgefunden habe, soll ffmpeg wohl dafür zuständig sein.
so wie ich das bisher überall gelesen habe, ist es schonmal kein import, sondern ein eigenständiges programm.
Schau Dir mal das subprocess-Modul an!
Mathmos hat geschrieben:
eine frage noch am rande.
wie kann ich den ablauf eines laufenden programmes stoppen?
die einzige lösung die ich bisher gefunden habe, ist sys.exit().
aber das ist nicht ganz mein ziel.
Das ist zu unpräzise. Was meinst Du mit "Programm"? Was meinst Du mit stoppen?
Re: Thumbnail aus .flv
Verfasst: Montag 16. August 2010, 14:24
von Mathmos
ok, werd ich mir mal anschauen.
ich meinte damit, das ich gerne einen block, der gerade abgearbeitet wird stoppen kann.
so bekommt man zwar einen warnung, aber der nachfogende code wird trotzdem ausgeführt.
Code: Alles auswählen
if entTitel.get() == "":
tkMessageBox.showwarning('Achtung','Alle Felder ausf\xfcllen')
Re: Thumbnail aus .flv
Verfasst: Montag 16. August 2010, 14:41
von Hyperion
Immer noch zu unpräzise!
Bist Du in einer GUI? Da gibts eh Nebenläufigkeit, usw. Prinzipiell könnten Threads eine Lösung sein (aber eher nicht in einer GUi).
Desweiteren mache dazu mal lieber nen neuen Thread auf.
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 00:06
von Dauerbaustelle
Zufälligerweise schreibe ich grade nebenher ein FFmpeg-Binding für Python. Ist zwar total hacky und hässlich, erfüllt aber zur Zeit seinen Zweck :-)
Du findest es hier:
stupFF -- stupid FFmpeg Binding. Gibt zwar keine Doku, aber vielleicht verstehst du's ja trotzdem, ansonsten einfach nachfragen.
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 03:10
von Mathmos
Danke Dauerbaustelle, aber ich habe es mittlerweile hinbekommen.
Hab es nun so gemacht wie Hyperion es vorgeschlagen hatte.
Die Seite hat mir dabei sehr geholfen =)
http://www.gossamer-threads.com/lists/python/dev/663045
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 06:38
von Mathmos
ich spiel gerade einwenig mit der converter funktion von ffmpeg rum.
vllt kann mir ja hier jemand sagen, was die optimalsten einstellungen (bitrate usw.) für eine konvertierung zu ein .flv sind?
eine gesunde mischung aus quallität und dateigröße wäre wohl ambesten.
alles was ich bisher erreicht habe, waren entwter zu große dateien oder zu schlecht quallität^^
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 09:37
von Mathmos
und wieder ein problem.
ich habe nun aus meiner py mit py2exe eine exe erstellen lassen.
alle erforderlichen daten die ich noch zusätzlich brauche, zb den ffmpeg ordner, habe ich dann in den dist ordner kopiert.
wenn ich das programm nun starte bekomme ich eine fehlermeldung die mit try bzw except erstellt wurde...
ich habe keine ahnung woran es liegen könnte, da es ohne py2exe ja wunderbar funktioniert.
genaugenommen handelt es sich um folgende zeile.
Code: Alles auswählen
p = subprocess.Popen(args, shell=True, stdout=subprocess.PIPE)
der ganze block sie so aus.
Code: Alles auswählen
my_vid_path = askopenfilename(filetypes=[("Flash Video Files", "flv")])
pic_name = entTitel.get().replace(" ", "_")+".png"
pic_nach_sekunden = entSec.get()
ffmpeg_path = os.getcwd()+'/ffmpeg/bin/ffmpeg.exe'
args = [ffmpeg_path, '-i', my_vid_path, '-f', 'mjpeg', '', '-ss', pic_nach_sekunden, '-vframes', '1', '-s', '350x200', '-an', pic_name]
p = subprocess.Popen(args, shell=True, stdout=subprocess.PIPE)
p.wait()
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 09:52
von EyDu
Hallo.
Gibt es einen Grund, warum die die Fehlermeldung inklusive Traceback nicht verraten möchtest

?
Warum willst du überhaupt eine exe erzeugen? Dass ist in den meisten Fällen total überflüssig.
Sebastian
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 10:11
von Mathmos
in der log datei steht folgendes...
und line 167 ist die besagte zeile.
Code: Alles auswählen
Exception in Tkinter callback
Traceback (most recent call last):
File "Tkinter.pyo", line 1403, in __call__
File "VideoTool.py", line 167, in Upload
File "subprocess.pyo", line 586, in __init__
File "subprocess.pyo", line 681, in _get_handles
File "subprocess.pyo", line 722, in _make_inheritable
TypeError: an integer is required
der grund dafür ist, dass das programm nicht nur für mich ist.
zudem sind zugangsdaten im quelltext entahlten, die nicht unbedingt jeder in die finger bekommen sollte

und man brauch kein python + sämtliche module zu installieren
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 10:24
von BlackJack
@Mathmos: Damit "versteckst" Du Zugangsdaten aber nur vor den ganz unfähigen. Das ist also ein sehr schwaches Argument.
Stimmt der Pfad zu `ffmppeg` auch noch? Bei solchen "Exe"n liegen die Dateien ja woanders.
Edit: Ich habe mal 'py2exe subprocess TypeError: an integer is required' in eine Suchmaschine eingegeben und als ersten Treffer diese Seite erhalten:
http://www.py2exe.org/index.cgi/Py2ExeS ... teractions
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 10:25
von Hyperion
Mathmos hat geschrieben:
zudem sind zugangsdaten im quelltext entahlten, die nicht unbedingt jeder in die finger bekommen sollte
Oha... die solltest Du
dringend aus dem Projekt rausnehmen! Denn eine wie auch immer geartete Datei bietet da keinerlei Schutz!
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 11:46
von Mathmos
naja, aber die methode ist aufjedenfall sicher als nur eine py.
aber leider werden die da drin bleiben müssen, sonst kann ich keine sachen auf den ftp hochladen.
oder einträge in der datenbank erstellen.
aber ich habe hier mal wa gefunden
http://www.python-forum.de/viewtopic.ph ... 88&start=0
ich habe das jetzt mal so geschrieben wie DatenMetzgerX es gepostet hatte.
nun bekomm ich keine fehlermeldung mehr, aber das programm schmirt an der stelle ab.
manchmal wird noch ein bild erstellt, aber mehr geht dann nicht mehr....
es hängt sich auch auf wenn ich nur die py öffne.
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 17:29
von Mathmos
also, so wie ich das bisher gelsen habe, möchte die exe alle 3 befehle haben. also "stdout, stdin, stderr"
letztendlich brauche ich nur stdout. was kann ich nun hinter stdin und stderr schreiben, damit die von der umgewandelten version akzeptiert werden, aber nichts ausführen?
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 20:47
von Mathmos
nach einem tag im netzt suchen und keine lösung finden, gebe ich auf.
allerdings habe ich irgnedwo gelasen, das man das problem mit einer .bat datei lösen könnnte...
wenn jemand ne idee hat wie man das in die .bat schreiben müsste und wie man werte übergiebt, wäre ich ihm sehr dankbar.
Code: Alles auswählen
ffmpeg_path = os.getcwd()+'/ffmpeg/bin/ffmpeg.exe'
args = [ffmpeg_path, '-i', myPath, '-f', 'mjpeg', '', '-ss', pic_nach_sekunden, '-vframes', '1', '-s', '350x200', '-an', pic_name]
p = subprocess.Popen(args, shell=True, stdout=subprocess.PIPE)
p.wait()
mfg
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 20:54
von Dauerbaustelle
Was genau willst du? Dass stderr nicht ausgegeben wird? Dann setzte ``stderr=open(os.devnull)`` -- der Output wird dann ins Nulldev weitergeleitet. ``shell=True`` brauchst du im Übrigen nicht. Außerdem würde ich "-ss n" VOR "-i datei" setzten. Dann überspringt FFmpeg die entsprechenden Bilder, ohne sie zu verarbeiten.
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 20:56
von Hyperion
Mathmos hat geschrieben:also, so wie ich das bisher gelsen habe, möchte die exe alle 3 befehle haben. also "stdout, stdin, stderr"
Welche "exe" meinst Du da? Deine selbst erstellte?
letztendlich brauche ich nur stdout. was kann ich nun hinter stdin und stderr schreiben, damit die von der umgewandelten version akzeptiert werden, aber nichts ausführen?
Was ist denn die "umgewandelte Version"? Meinst Du Deinen Versuch, aus dem Script eine "exe" zu machen? Ich kann mir da beim besten Willen nicht vorstellen, dass sich irgend ein solches Tool in Deinen Code einmischt... oder worauf biezisht Du Dich mit stdin, stderr, usw?
Und: Niemals User / PW Angaben in ein Script packen, welches "öffentlich" gemacht wird. Lass die Benutzer doch einfach die Daten eingeben - dafür kannst Du einen Weg finden Benutzer & Passwörter zu vergeben.
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 21:58
von Mathmos
Dauerbaustelle hat geschrieben:Was genau willst du? Dass stderr nicht ausgegeben wird? Dann setzte ``stderr=open(os.devnull)`` -- der Output wird dann ins Nulldev weitergeleitet. ``shell=True`` brauchst du im Übrigen nicht. Außerdem würde ich "-ss n" VOR "-i datei" setzten. Dann überspringt FFmpeg die entsprechenden Bilder, ohne sie zu verarbeiten.
nach so einer lösung habe ich den ganzen tag gesucht.... du solltest heilig gesprochen werden

es funktioniert einwandfrei =)
wenn ich "-ss n" einfüge, wird garkein thumbnail erzeugt.
Hyperion hat geschrieben:Mathmos hat geschrieben:also, so wie ich das bisher gelsen habe, möchte die exe alle 3 befehle haben. also "stdout, stdin, stderr"
Welche "exe" meinst Du da? Deine selbst erstellte?
ja, die mit py2exe erstellte exe.
Hyperion hat geschrieben:Mathmos hat geschrieben:
letztendlich brauche ich nur stdout. was kann ich nun hinter stdin und stderr schreiben, damit die von der umgewandelten version akzeptiert werden, aber nichts ausführen?
Was ist denn die "umgewandelte Version"? Meinst Du Deinen Versuch, aus dem Script eine "exe" zu machen? Ich kann mir da beim besten Willen nicht vorstellen, dass sich irgend ein solches Tool in Deinen Code einmischt... oder worauf biezisht Du Dich mit stdin, stderr, usw?
sdout brauche ich damit das thumbnail erstellt wird. allerdings sind die beiden andern befehle überflüssig und wenn ich diese weggelassen habe, funktionierte es weiterhin. aber wenn ich dann die py mit py2exe konvertiert habe kam immer eine fehlermeldung, aber mit der lösung von der heiligen Dauerbaustelle klappt es nun wunderbar =)
Hyperion hat geschrieben:
Und: Niemals User / PW Angaben in ein Script packen, welches "öffentlich" gemacht wird. Lass die Benutzer doch einfach die Daten eingeben - dafür kannst Du einen Weg finden Benutzer & Passwörter zu vergeben.
aber das programm muss sich mit einer mysql datenbank verbinden. und sachen auf einen server hochladen.
ich weiß nicht wie ich das ohne im programm gespeicherte zugangsdaten gestallten soll...
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 22:01
von Dauerbaustelle
Mathmos hat geschrieben:wenn ich "-ss n" einfüge, wird garkein thumbnail erzeugt.
Na ich meine schon ['-ss', deinezahl].
Re: Thumbnail aus .flv
Verfasst: Dienstag 17. August 2010, 22:10
von Mathmos
will immernoch nicht so ganz funktionieren....
aber das ist auch nicht weiter tragisch.
trozdem danke =)