X264 stoppt viel zu früh?

  • Hallo zusammen,

    ich suche seit Tagen nach einer Lösung für ein (Anfänger?) Problem und finde einfach nichts.
    Ich verwende x264 "pur" über die Kommandozeile ohne besondere Einstellungen. Eigentlich klappt es, nur, dass nie alle Frames der unkomprimierten (AVI) Source kodiert werden, sondern nur ein Bruchteil (meistens 4110 Frames/2m 51s), egal wie groß das Ausgangsmaterial ist.

    Beim Aufruf meldet x264 brav die korrekte Framezahl z.B.
    avis [info]: 720x480 @ 24.00 fps (45578 frames)

    Doch nach einer Minute so was kommt dann
    encoded 4110 frames, 72.50 fps, 7.89 kb/s

    und der Prozess stoppt. Ohne jede Fehlermeldung. Mittels Mencoder funktioniert es, ich würde aber gerne einfach die x264.exe verwenden.

    Ich habe es mit unterschiedlichen AVI Dateien und allen möglichen x264 Switches sowie unterschiedlichen Versionen probiert, immer dasselbe. Kann es daran liegen dass ihm der Speicher ausgeht, oder was ist da los?

    Vielen Dank für jede Hilfe,
    Gruß Peter

  • Kleine Ergänzung: Wenn ich "--seek x" verwende, dann kodiert er nur 4110-x Frames, also bei Werten größer gleich 4110 gar nichts. Parameter "--frames" bewirkt gar nichts.
    Ich verwende WinXP 32 Bit, 4 GB Ram, habe es aber auch schon auf einem 64 Bit System versucht.

  • Ich encode so:
    x264 --qp 18 --aud --level=3.2 --8x8dct --keyint 10 --sar=10:11 --progress -o output.avc input.avi 720x480

    habe aber auch schon viele andere Parameterkombis ausprobiert...

    Das komische ist dass das File in Virtual Dub ganz normal aussieht und im VLC richtig abspielt. Auch mit anderen Files das gleiche Ergebnis.

    Als Alternative könnte ich es mit Mencoder machen, das Problem dabei ist dass ich den Parameter "SAR" (sample aspect ratio) unbedingt brauche und der bei den "x264encopts" scheinbar nicht dabei ist...

  • Grade noch ein anderes File probiert , hier der Output:

    avis [info]: 720x480 @ 24.00 fps (39772 frames)
    x264 [info]: using SAR=10/11
    x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
    x264 [info]: profile High, level 3.2
    x264 [info]: slice I:17 Avg QP:15.00 size: 1276 PSNR Mean Y:97.31 U:97.94
    V:98.11 Avg:97.41 Global:68.19
    x264 [info]: slice P:4093 Avg QP:18.00 size: 122 PSNR Mean Y:98.52 U:99.26
    V:99.29 Avg:98.63 Global:69.86
    x264 [info]: mb I I16..4: 98.3% 0.1% 1.6%
    x264 [info]: mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.1% 0.1% 0.0% 0.0% 0
    .0% skip:99.7%
    x264 [info]: 8x8 transform intra:0.7% inter:14.6%
    x264 [info]: coded y,uvDC,uvAC intra:6.8% 2.3% 1.5% inter:0.1% 0.1% 0.0%
    x264 [info]: SSIM Mean Y:0.9999833
    x264 [info]: PSNR Mean Y:98.519 U:99.259 V:99.286 Avg:98.621 Global:69.850 kb/s:
    24.30

    encoded 4110 frames, 74.39 fps, 26.08 kb/s


    AAARRRGGHH!

  • hast du dir mal das unvollständig erzeugte video angeschaut?
    eigendlich kann x264 nichts mit .avi anfangen

    x264 braucht eine RAW-YUV-4:2:0 eingabe
    was man (nahezu) wunderbar mit jedem x-belibigem Video über Avisynth machen kann

    [edit:]
    gib uns doch mal die infos über dein quell-video
    am besten mit mediainfo...

  • Danke für deinen Einsatz

    Eingabe ist YUV 4:2:0 unkompr.
    Entstandenes File ist korrekt aber halt nur 2:51 lang
    Source Files kürzer als 2:51 werden absolut korrekt encodet

    Mediainfo meldet

    Format : AVI
    Format/Info : Audio Video Interleave
    Format profile : OpenDML
    File size : 7.43 GiB
    Duration : 10mn 41s
    Overall bit rate : 99.5 Mbps
    Writing application : MEncoder 1.0rc2-4.2.1
    Writing library : VirtualDub build 30009/release

    Video
    Format : YUV
    Codec ID : YV12
    Codec ID/Info : ATI YVU12 4:2:0 Planar
    Duration : 10mn 41s
    Bit rate : 99.5 Mbps
    Width : 720 pixels
    Height : 480 pixels
    Display aspect ratio : 1.500
    Frame rate : 24.000 fps
    Standard : NTSC
    Resolution : 12 bits
    Bits/(Pixel*Frame) : 11.997
    Stream size : 7.43 GiB (100%)

  • wovon hast du dein 7GiB monster erstellt?

    versuch doch mal das video über ein avisynth-script zu verarbeiten
    erstelle dazu eine text-datei "Video.avs" mit folgendem inhalt*

    Code
    AVISource("X:\Dir\Sub\VideoName.avi")

    ein weiterer vorteil das ganze über avisynth zu machen ist,
    dass alle VfW-codecs (z.b. für eine lossless-kompression) unterstützt werden

    *das setzt vorraus das du avisynth installiert hast

  • Source Files kürzer als 2:51 werden absolut korrekt encodet

    Wahrscheinlich liegt dann bei 2:51 min die Grenze von 2 GB, bis zu der Mencoder noch funktionierende AVI-Dateien erzeugt. AVI größer als 2 GB sind dann wohl defekt in der Mencoder-Ausgabe.

    Riesige YV12-AVI-Dateien überhaupt auf der Festplatte zu erzeugen, ist schon reichlich überflüssig, wenn man statt dessen den AviSynth-Frameserver benutzt. Unter Windows (Win32) zumindest.

    Deshalb wiederhole ich noch mal die Frage: Was für ein Format hat denn das ursprüngliche Original?

  • Ok, hab sicher nicht den besten Weg gewählt...
    Grundsätzlich habe ich ein langes AVC Video, dass ich framegenau teilen will.
    Habe also den Stream einfach unkomprimiert auf die Platte geschrieben, und wollte den mit X264 über --seek und --frame Switches in den richtigen Längen neu erstellen.
    Es gibt sicher eine bessere Methode? :)

  • Schon wieder der übliche Fehler.

    Und schon wieder jemand, der nicht mit der Forensuche sucht.

    Diese Fehlermeldung ist normalerweise ein Zeichen dafür, dass das AviSynth-Skript kein YV12-Video ausgibt (was aber sehr ungewöhnlich wäre, wenn das AVC-Quellvideo mit DGAVCSource geöffent wird, denn diese Funktion erzeugt normalerweise YV12), oder dass AviSynth eine Fehlermeldung als Video ausgibt, statt das importierte Video.

    Warum ist es eigentlich nicht naheliegend, bei einer Fehlermeldung den Inhalt des AviSynth-Skriptes hier zu veröffentlichen, damit wir helfen können, den Fehler zu finden?

  • Tut mir leid, ich habe einfach den Tip von HQ-LQ befolgt, zitiere:

    AVISource("X:\Dir\Sub\VideoName.avi")

    genau das habe ich gemacht.


    Das Quell-AVC wurde mit einem professionellen Encoder erstellt (Cinemacraft?)

    <edit>Ich werde mich jedenfalls genauer mit AviSynth bechäftigen, hab nach dem Tipp gehofft dass es wirklich so einfach geht...


    Deshalb wiederhole ich noch mal die Frage: Was für ein Format hat denn das ursprüngliche Original?

    AVC 720x480
    24 fps
    Pixel Aspect 10:11
    Profile High
    Level 3.2
    CABAC
    4 ref Frames

    Ich hatte eben ursprünglich versucht, daraus unkompr. AVI zu machen, und dann framegenau neu zu encoden. Daten des AVI sind auf Seite 1.

    Einmal editiert, zuletzt von LigH (28. Mai 2009 um 19:45)

  • Tut mir leid, ich habe einfach den Tip von HQ-LQ befolgt, zitiere:

    AVISource("X:\Dir\Sub\VideoName.avi")

    genau das habe ich gemacht.

    hat du den tipp zu genau umgesetzt?
    natürlich musst du die pfade anpassen, wo das video liegt...

    wenn das avisynth-script im selben verzeichnis ist
    wie das zu verarbeitende video liegt, dann kann man die pfade auch weg lassen

    Zitat

    AVISource("VideoName.avi")

    für H.264-Videos sieht das ganze so aus

    Zitat

    LoadPlugin("D:\{fester ort wo du DGAVCdec entpackt hast}\DGAVCdec\DGAVCDecode.dll")
    AVCSource("X:\DIR\SUP\DeinVideo.dga")

    die DeinVideo.dga erzeugt dir DGAVCdec (plugin & indexer)
    es ist eine art Index von deinem H.264-Video


    [P.S.:]
    3-fach postings sind nicht so toll,
    besonders wenn der inhalt so kurz sind.
    darum hat der Foren-Gott eine 'EDIT'-Funktion eingebaut,
    damit kann man beliebig, oft ohne Zeitlimit, die beiträge ändern & erweitern

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!