Decoder returns an empty frame

HardRockDude

Commander
Registriert
Juli 2009
Beiträge
3.062
Hallo zusammen,

ich habe avi-Dateien (Blender-Animationen, Frapsaufnahmen). Da diese ziemlich groß sind, will ich mit x264 und MeGUI darüberackern und die Größe runtertreiben.

Normalerweise lade ich meine avi-Dateien in MeGUI rein. Dort will der FileIndexer zunächst seine Arbeit verrichten. Nach dessen vollständigen Durchlauf kommt folgende Fehlermeldung:

Code:
FFVideoSource: Insanity detected: decoder returned an empty frame
Was natürlich seltsam ist. Gerade bei selbst gerenderten Animationen ist natürlich jeder Frame gefüllt. Man rendert ja keine leeren Bilder...

Also öffne ich die avi in VirtualDub und finde am Ende des Videos immer einen leeren Frame, den ich aber auch partout nicht löschen kann. Selbst wenn ich den ersten und vorletzten Frame markiere und diese Selektion ausschneide (Crop to selection), so ist der letzte Frame schon wieder leer :freak:
Anschließend, diverse Speichermethoden in VirtualDub (Direct Stream Copy, Full Process Mode, Preserve Empty Frames.....) enden in MeGUI immer mit demselben Fehler.

Eine Googlesuche bringt genau 2 Ergebnisse (beim doom9-Forum), aber die bringen mich nicht weiter. Wie kann ich mein Video encodieren?

Danke!

PS: Habe ffdshow 1.1.3984 und MeGUI 2050.
 
Zuletzt bearbeitet:
Anderen Encoder versucht?

Handbrake
XMedia Recode
 
Eigentlich Rendert man mit Programmen wie Blender oder C4D eine Animation als Einzelbildsequenz (TIFF, BMP, PSD), weil es bei einem Absturz dann nicht passieren kann dass das erzeugte Video defekt und dadurch unbrauchbar wird. Es muss dann nur das zuletzt nicht fertig Gerenderte Bild und die restlichen Bilder zuende Gerendert werden. Nur so zur Info.
 
HardRockDude schrieb:
Also öffne ich die avi in VirtualDub und finde am Ende des Videos immer einen leeren Frame, den ich aber auch partout nicht löschen kann. Selbst wenn ich den ersten und vorletzten Frame markiere und diese Selektion ausschneide (Crop to selection), so ist der letzte Frame schon wieder leer :freak:
Das letzte Frame ist NICHT leer - VirtualDub(Mod) gibt als letzte Framenummer halt immer nur die Nummer NACH dem letzten Frame an. Das macht es deshalb, weil man in VirtualDub (um einen Bereich zu markieren) IMMER hinter(!) das als Endpunkt zu markierende Frame springen muss - und das ginge ja ansonsten nicht :p .

In VirtualDub ist das dementsprechend mit JEDEM Video so und und bedeutet NICHT, dass das Video defekt ist.


HardRockDude schrieb:
Normalerweise lade ich meine avi-Dateien in MeGUI rein. Dort will der FileIndexer zunächst seine Arbeit verrichten. Nach dessen vollständigen Durchlauf kommt folgende Fehlermeldung:

Code:
FFVideoSource: Insanity detected: decoder returned an empty frame
Warum benutzt du für eine AVI den FileIndexer :confused_alt: ? So wird automatisch FFmpegSource verwendet:

http://code.google.com/p/ffmpegsource/

... was Unsinn ist, da AVISource wesentlich sinnvoller wäre.

Öffne die AVI lieber über den "AVS Script Creator", und gib (wenn du nach dem bevorzugten Weg zum Öffnen der Datei gefragt wirst) "DirectShowSource" an. Dadurch sollte automatisch ein AviSynth-Script mit folgendem Inhalt erstellt werden:

Code:
AVISource("Deine_Videodatei.avi",audio=false)
Das kannst du dann als Videoquelle in MeGUI laden!


HardRockDude schrieb:
PS: Habe ffdshow 1.1.3984 und MeGUI 2050.
FFmpegSource benutzt seine eigenen Decoder. Ffdshow nützt dir dabei also nichts. Daher die Empfehlung für AviSource - damit werden die systemweit verfügbaren VfW-Decoder verwendet. Auch ffdshow kann dann verwendet werden (sofern das VfW-Interface von ffdshow mit installiert wurde und fdshow über einen entsprechenden Decoder für das Videoformat verfügt, der im ffdshow-VfW-Interface auch aktiviert wurde).


HardRockDude schrieb:
Was natürlich seltsam ist. Gerade bei selbst gerenderten Animationen ist natürlich jeder Frame gefüllt. Man rendert ja keine leeren Bilder...
Du missinterpretierst die Fehlermeldung. Wie gesagt: FFmpegSource verwendet seine eigenen Decoder. Die basieren auf den FFmpeg-Decoder-Bibliotheken. Wurde dort der Decoder für ein bestimmtes Kompressionsformat nicht vollständig oder fehlerhaft implementiert, spuckt er eventuell bei diversen Videos ein beschädigtes oder eben gar kein Bild aus. Letzteres ist wahrscheinlich bei dir der Fall...

Deswegen sollte AVISource in AviSynth IMMER die erste Wahl für AVI-Videos sein.
 
Okay, es klappt! Werde jetzt nochmal erläutern, wie, was und wo. Doch zunächst einen Riesendank an euch alle, besonders Tom Keller, der mal wieder mit tollem Wissen glänzt. Hast mir schon einmal so gut ausgeholfen :)

Der Fehler lag in der Bedienung von MeGUI. Allerdings frage ich mich, ob das Programm clever und intuitiv gestaltet ist. Gehe da jetzt mal drauf ein.

Gewöhnlicherweise öffnet man Dateien mit File -> Open. Also starte ich MeGUI und tu eben dieses. Anschließend fragt MeGUI selbstständig nach dem "FileIndexer" (FI) bzw. "OneClickEncode" (OCE). Die Auswahlmöglichkeit "DirectShowSource" (DSS) gibt es noch gar nicht. Hier bin ich immer auf FI gegangen, weil das bislang so funktioniert hat (OCE macht letztlich auch einen FI, nur mit weniger Klicks), doch nun bekam ich den im Eingangspost erläuterten Fehler. Nach der Fehlermeldung öffnete sich der AVS Script Creator, mit dem ich aufgrund meines untenstehendes Bedienfehlers bisher nichts machen konnte.

Als nächstes kam der Tip von Tom Keller, mit dem ich nun so vorging:
MeGUI gestartet. Tools -> AVS Script Creator. Unter dem Reiter I/O findet sich oben die Zeile "Video Input". Dort meine avi geöffnet -> zack - selber Fehler.

Wo nun letztendlich der Bedienfehler lag:
Im AVS Script Creator gibt es den Reiter "Filters", wo man diverse Einstellungsmöglichkeiten für Videoquellen findet. Hier habe ich mich natürlich schon mehrfach durchgeklickt, allerdings immer nach einem Häkchen oder einer Drop-Down-Liste gesucht, wo man klipp und klar festlegen und bestätigen kann: "Use AVI Source" o.ä.
Es reicht, den REITER mit dem Namen "AVI Source / DSSource" anzuklicken und anschließend zurück auf den Reiter "I/O" zu gehen, wo man nur noch seinen Video Input angibt.
Ehrlich gesagt, finde ich es sehr unpraktisch und unintuitiv designt, einen Reiter als diese Form von Auswahl zu wählen, um einen gesamten Funktionsstrang zu aktivieren. :freak:

Für alle Nachfolger nochmal kurz:
Tools -> AVS Script Creator -> "Filters" -> einfach den Reiter "AVI Source / DSSource" anklicken.
Zurück auf "I/O" -> Video Input "..." -> Datei öffnen -> in der folgenden Dialogbox auf "DirectShowSource" klicken -> glücklich sein. :)


PS: Dass man mit Blender eigentlich keine avis rendert ist mir bewusst, aber für eine kurze Testanimation ohne Pipapo habe ich das mal gemacht/probiert.

PS2: Meine 10 Sekunden lange Animation ist von einer 360MB großen avi auf eine 180KB (!!!) große mkv geschrumpft. Wahnsinn! :D
 
Zuletzt bearbeitet:
Zumindest bei MeGUI 2057 ist es so, dass du nach dem Laden der AVI hinter "Input" im Reiter "I/O" so ein Fenster angezeigt bekommst:

meguikuhz.png


... wo du "DirectShowSource" wählen kann. Sofern die Datei eine AVI ist (und passende VfW-Decoder vorhanden sind), wird dann automatisch AVISource verwendet :daumen: !
 
Zurück
Oben