x264 encodiert plötzlich langsam

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • x264 encodiert plötzlich langsam

    Anzeige
    Hallo.

    Ich habe vor einigen Tagen ein Video gerendert. Und zwar in Sony Vegas über den Debug Frameserver zu MeGUI mit x264.
    Es hat mit ca 20 FPS gerendert (also die Rendergeschwindigkeit). Es war ein Video das ca 20 Minuten lang ging und 40 Minuten zum rendern brauchte.

    Nun möchte ich ein weiteres Video rendern. Habe dieselben Einstellungen natürlich verwendet und jetzt rendere ich mit nur 3-5 FPS was ca 3 1/2 Stunden braucht.
    Ich habe natürlich ein paar Minuten gewartet bis es "schneller" rendert aber über 5 FPS gehts kaum.

    Kann mir da jemand helfen?
  • Effekte und sonstige Sachen die du in Vegas einstellst benötigen außerdem zusätzliche Zeit, da Vegas erstmal diese Filter arbeiten lassen muss, bevor er das dann an den Encoder senden kann.

    Und immer schön die Video Preview bei Vegas abschalten wenn du am Encodieren bist. Das Decoding kostet sonst natürlich auch Zeit.


    Und: Projekteinstellungen sind zu 100% dem Quellmaterial passend???

    Das ist echt verdammt wichtig !!!
    Aktuelle Projekte/Videos


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von De-M-oN ()

  • Anzeige
    Nein Effekte nicht. Ich habe nur Das Audio abgemischt aber das ist ja eher unrelevant.

    Das Quellmaterial hat andere FPS Werte weil im Spiel sonst die Animationen ruckeln ...
    Ich habe während der Aufnahme FPS immerwieder geändert ca 3 mal.
    Vielleicht kann ich die Videos einzeln encodieren und dann zusammenmuxen.

    Ich habe zudem nur eine CPU Auslastung von maximal 30 %.
  • Die FPS Rate hast du im Vegas aber auf den korrekten FPS Wert des Quellmaterials in Projekteinstellungen eingestellt oder?

    Wenn du die FPS Rate ändern willst die das Quellmaterial hat, musst du das natürlich dann in MeGUI tätigen.

    Die Projekteinstellungen sind nur die Angabe wie dein Quellmaterial ist, nicht wie es encodiert werden soll.
    Und wenn du da was falsches einträgst, dann kommt es zu einem falschen Encode und kann u.U. auch lange dauern (was z.B. der Fall ist, wenn du dort eine verkehrte Auflösung einstellst).

    Wenn das Quellmaterial unterschiedliche FPS Raten hat, solltest du sowieso getrennt encodieren und später zusammenmuxen, da du eine FPS Rate fürs ganze Projekt bei Vegas einstellen musst.
    Aktuelle Projekte/Videos


  • Ja sie sind nun einheitlich.

    Ich habe außer die Videos aneinandergehängt und das Audio abgemischt und einer Ausblendung des Videos für eine Sekunde am Ende nichts gemacht.

    Rendere gerade mit 10 FPS. Aber die CPU Auslastung ist immernoch so niedrig. Die sollte doch ca bei 90% sein oder?
    Für die ersten 5 Minuten des Videos 15 Minuten Renderzeit.

    Nur zur Info ich hab einen i5 2500k und 4 GB Ram.
    Erst neu gekauft.
  • Normal CRF 21


    "Normal" heißt Preset "Medium" oder wie? Welches Preset?

    DxTory mit Lagarith aufgezeichnet. ist ein 3D Point And Click Adventure wo nicht sehr viel "Action" passiert.


    Dann solltest auch mehr FPS eig. haben, es sei denn es ist doch relativ komplex. Ansonsten müsstest du langsameres Preset anwenden für mehr CPU Nutzung, da bestimmte Prozesse nicht parallel ablaufen können. x264 muss wenn es schnell geht auf bestimmte Dinge trotzdem warten bis zur Fertigstellung. Wenn 3 Köche ihre Arbeit fertig haben, aber der 4. Koch noch sein Zeug nicht fertig hat, weil er dafür einfach länger braucht, können die 3 Köche trotzdem nicht weiter machen, weil diese die Zutat von Koch 4 benötigen um weiter machen zu können. Und so ist es auch mit x264. Das encoding von b-frames kostet die meiste Zeit. Du kannst die B-Frames nicht berechnen, wenn du VORHER nicht die Makroblöcke genau DER Referenz- (P- und I-) Frames berechnet hast, auf die sich diese B-Frames beziehen:



    Das Frame B2 bezieht sich dabei auf P1 und P2 als Referenz. P1 und P2 wiederum werden sich auf das allererste I-Frame beziehen. Das hieße: ZUERST muss das I-Frame encodet werden, dann erst P1 und P2 und ERST DANACH existieren die Informationen um B2 zu erzeugen.

    In der Realität ist das alles noch einen Tick komplizierter, da P2 auch noch Bildinhalte aus B3 übernehmen kann, weshalb vorher eventuell noch B3 berechnet werden muss.

    Die Komplexität steigt aber, wenn auch B-Frames als Referenz genutzt werden können. In diesem Beispiel:



    ... benutzt das Frame B2 (neben P1 und P2) auch B1 als Referenz. Sprich: es müssen nicht nur P1 und P2 berechnet werden, BEVOR eine Berechnung von B2 möglich ist, sondern es müssen zuerst P1, P2 UND B1 berechnet werden, bevor die Informationen zur Berechnung von B2 vorliegen.

    Und das sind alles extrem simple Beispiele mit 2 bzw. 3 Referenzen. Stell dir das ganze mal mit 8 oder 16 Referenzen vor. Das wird dann seeeeehr verschachtelt.

    ALLE I-Frames im voraus zu berechnen geht nicht. Zumindest nicht, ohne gigantische Mengen an RAM zu verbrauchen.


    Wenn du nun ein schnelles Preset hast, und wohlmöglich dazu noch einfach komprimierbares Material, dann ist die CPU schneller fertig mit dem was parallelisierbar ist und das b-frame encoding muss dann noch getan werden und das bremst dann, da x264 auf die CPU warten muss, bis sie das erledigt hat, bevor x264 weiter machen kann. Ist das zu komprimierende Material komplex und/oder das Preset langsamer, dann dauert auch das Encoding von den i und p frames länger - Die CPU muss bereits hier viel mehr leisten.

    Habe grade gesehen dass die Auflösung in Vegas falsch war.


    Auch schon ein Punkt der absolut zu beachten ist. Ergo haste nicht sorgfältig genug geguckt, das die Projekteinstellungen korrekt sind.

    Was ist mit Interlace? Hast du da auf keine Halbbilder (progressiv) eingestellt?

    Nun Encodiere ich bei richtiger Auflösung mit 6 FPS und mit falscher Auflösung 10 FPS :/


    Nochmals Projekteinstellungen überprüfen und auch bedenken das inkomplexeres Video schneller zu komprimieren geht, als schwer komprimierbares Material.
    Aktuelle Projekte/Videos


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von De-M-oN ()

  • Okay danke es geht jetzt mit dem rendern, allerdings habe ich Probleme beim zusammenmuxen.

    Und zwar habe ich ja zweimal gerendert weil einmal habe ich mit 30 FPS und ein andernmal mit 40 aufgezeichnet.
    Nun habe ich den Ton zu den zwei Videos hinzugemuxt. Nun möchte ich an das erste Video das zweite dranhängen,
    aber dann bleibt das Bild nach dem ersten Video stehen. Also da gibt irgendwie Probleme.

    Wenn ich in eine Stelle im Video klicke (wo das zweite ist) hab ich immer ein Standbild. Beim ersten Video nicht.
    Woran kann das liegen?
  • So?

    Spoiler anzeigen

    Allgemein
    UniqueID/String : 210162537250918119702445087210895988945 (0x9E1BD51611A0F277A7FD4B83721E58D1)
    Vollständiger Name : C:\Users\Fabian\Videos\Videos\Lets Plays\Back To The Future\Episode 1 Its About TIme\part2script_finish88.mkv
    Format : Matroska
    Format-Version : Version 2
    Dateigröße : 782 MiB
    Dauer : 27min
    Modus der Gesamtbitrate : variabel
    Gesamte Bitrate : 3 980 Kbps
    Kodierungs-Datum : UTC 2012-06-29 22:26:16
    Kodierendes Programm : mkvmerge v5.6.0 ('Kenya Kane') built on May 27 2012 16:44:04
    verwendete Encoder-Bibliothek : libebml v1.2.3 + libmatroska v1.3.0
    Attachment : Yes / Yes

    Video
    ID : 2
    Format : AVC
    Format/Info : Advanced Video Codec
    Format-Profil : High@L4.0
    Format-Einstellungen für CABAC : Ja
    Format-Einstellungen für ReFrames : 4 frames
    Muxing-Modus : Header stripping
    Codec-ID : V_MPEG4/ISO/AVC
    Dauer : 27min
    Breite : 1 920 Pixel
    Höhe : 1 080 Pixel
    Bildseitenverhältnis : 16:9
    Bildwiederholungsrate : 30,000 FPS
    ColorSpace : YUV
    ChromaSubsampling : 4:2:0
    BitDepth/String : 8 bits
    Scantyp : progressiv
    verwendete Encoder-Bibliothek : x264 core 125 r2200 999b753
    Kodierungseinstellungen : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=infinite / keyint_min=1 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=21.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
    Sprache : Englisch
    Default : Ja
    Forced : Nein

    Audio
    ID : 1
    Format : FLAC
    Format/Info : Free Lossless Audio Codec
    Codec-ID : A_FLAC
    Dauer : 27min
    Bitraten-Modus : variabel
    Kanäle : 2 Kanäle
    Samplingrate : 44,1 KHz
    BitDepth/String : 16 bits
    verwendete Encoder-Bibliothek : libFLAC 1.2.1 (UTC 2007-09-17)
    Default : Ja
    Forced : Nein
  • FLACs kannste nicht anhängen wegen dem Header. Eig. müsste da MKVMergeGUI auch eine Warnung zu ausgegeben haben.

    Avisynth:

    Quellcode

    1. LoadPlugin("C:\Program Files (x86)\MeGUI\tools\ffms\ffms2.dll")
    2. FFAudioSource("x:\deine-flac.flac")+FFAudioSource("x:\deine-zweiteflac.flac")


    Im Audio Input dann diese AVS Datei öffnen, und encoden.

    (Alternativ zb Audacity, wenn über AVS Script nicht magst)

    Dann in MKVMergeGUI 1. Video hinzufügen, FLAC hinzufügen, 2. Video anhängen. Muxen.
    Aktuelle Projekte/Videos


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von De-M-oN ()