Unperformantes Verarbeiten von x264-OBS Aufnahme

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

  • Unperformantes Verarbeiten von x264-OBS Aufnahme

    Anzeige
    Seit längerem mal wieder ein erfrischendes "Moin" von mir ... Ich nehme derzeit testweise mit OBS Studio auf, alles läuft derzeit nach den EInstellungen aus dem Sammelfred...
    Jedoch ist es merkwürdig: Schon bei der Scripterstellung mithilfe des SSM dauert es gefühlt Ewigkeiten, bis die Extrahierung der Audio-Files abgeschlossen ist. Das gleiche bei megui: Nach Hinzufügen des Scriptes dauert es ewig, bis die Dateiausgabe ausgefüllt ist und ich starten kann, was sich hinzieht bis zum Encoding selbst: Dieses läuft mit allerhöchstens 10 FPS durch, wo ich bei jeglichen anderen (DxTory-)Aufnahmen, auch wenn nicht hundertrprozentig vergleichbar aber doch eine grobe Richtung vorgebend, jedes Encoding MINDESTENS mit 20fps druchläuft...

    Warum ist die Verarbeitung der x264 Files so unperformant?
    Anbei mein Script... dazu noch die Frage: Ist der gewählte Farbraum YV12 für Nv12 Aufnahmen korrekt?

    Spoiler anzeigen

    Quellcode

    1. ### SagaraS Scriptmaker - Version 6.1 ###
    2. ### Lade Plugins und setze die globalen Variablen ###
    3. LoadPlugin("C:\Program Files (x86)\SagaraS Scriptmaker\Plugins\FFMS2.dll")
    4. Global breite = 2560
    5. Global hoehe = 1440
    6. Global AR = 0
    7. ### Lade Videoquellen ###
    8. SetMTMode(3)
    9. AVIload("G:\fertige Aufnahmen\1. Rendervorgang\Intro Roh\Intro1080p.mkv", 1, 0, 0, -0, -0, "Auto", "Igno.", 0, 0)\
    10. ++ AVIload("R:\2016-11-19 23-10-28.mkv", 1, 0, 0, -0, -0, "Auto", "Igno.", 0, 0).FadeIn0(30).FadeOut0(30)
    11. ### Filter Verarbeitungszone ###
    12. (IsYUY2() == true) ? ConvertToYV16(matrix = "Rec709") : Last
    13. ### Funktion für Video-Laderoutine ###
    14. Function AVIload (String file, int loading, int cl, int co, int cr, int cu, string pixtype, string afps, int fpsn, int fpsd) {
    15. pixtype2 = (pixtype == "YUY2") ? "YUY2" : (pixtype == "RGB24") ? "RGB24" : (pixtype == "Y8") ? "Y8" : (pixtype == "YV12") ? "YUV420P8" : (pixtype == "YV24") ? "YUV444P8" : pixtype
    16. (loading == 1) ? FFIndex(file) : nop()
    17. clip0 = (loading == 3) ? (pixtype == "Auto") ? LWLibavVideoSource(file) : LWLibavVideoSource(file, format = pixtype2) : (loading == 2) ? Import(file).KillAudio() : (loading == 1) ? (pixtype == "Auto") ? FFVideoSource(file, threads=1) : FFVideoSource(file, threads=1, colorspace=pixtype) : (pixtype == "Auto") ? AVISource(file, false).KillAudio() : AVISource(file, false, pixel_type=pixtype).KillAudio()
    18. clip1 = clip0.AutoFPS(afps, fpsn, fpsd).Cropping(cl, co, cr, cu)
    19. Return (clip1.width == breite && clip1.height == hoehe) ? clip1.ConvertToYV12(matrix = "Rec709") : Clip1.Resize()
    20. }
    21. Function AutoFPS (Clip clip0, string afps, int fpsn, int fpsd) {
    22. rate1 = (afps == "Auto") ? (Round(Float(clip0.framerate * 1000)) / 1000) / 2 : nop()
    23. rate2 = (afps == "Auto") ? Round(clip0.framerate) / 2 : nop()
    24. rate = (afps == "Auto") ? (rate1 == rate2) ? 1 : 1001 : (afps == "Igno.") ? clip0.frameratedenominator : fpsd
    25. ratefaktor = (afps == "Auto") ? (rate == 1001) ? 1000 : 1 : nop()
    26. clip0 = (afps == "Auto") ? (rate == 1001) ? clip0.AssumeFPS(Round(clip0.Framerate) * 1000, rate) : clip0.AssumeFPS(round(clip0.framerate), rate) : (afps == "Igno.") ? clip0.AssumeFPS(clip0.frameratenumerator, rate) : clip0.AssumeFPS(fpsn, rate)
    27. Return clip0.ChangeFPS(50, 1)
    28. }
    29. Function Cropping (Clip clip0, int cl, int co, int cr, int cu) {
    30. clip0 = (clip0.IsRGB32() == True) ? clip0.ConvertToRGB24() : clip0
    31. Return (cl != 0 || co != 0 || cr != 0 || cu != 0) ? clip0.Crop(cl, co, cr, cu) : clip0
    32. }
    33. Function Resize (Clip clip1) {
    34. clip1 = (AR == 1) ? ((float(Clip1.height * breite) / clip1.width) / 2 == round((float(Clip1.height * breite) / clip1.width) / 2)) ? ((float(Clip1.width * hoehe) / clip1.height) / 2 == round((float(Clip1.width * hoehe) / clip1.height) / 2)) ? clip1 : clip1.ConvertToRGB24() : clip1.ConvertToRGB24() : clip1
    35. clip1 = (AR == 1) ? (((clip1.width * hoehe) / clip1.height > breite) ? Clip1.Spline36Resize(breite, ceil(float(Clip1.height * breite) / clip1.width)) : Clip1.Spline36Resize(ceil(float(clip1.width * hoehe) / clip1.height), hoehe)) : clip1.Spline36Resize(breite, hoehe).ConvertToYV12(matrix = "Rec709")
    36. back = (AR == 1) ? (0 == 1) ? ImageReader("", 0, clip1.framecount - 1, clip1.framerate).ChangeFPS(Clip1.frameratenumerator, Clip1.frameratedenominator).Spline36Resize(breite, hoehe).ConvertToYV12(matrix = "Rec709") : BlankClip(clip1, width = breite, height = hoehe, pixel_type = "YV12").KillAudio() : clip1
    37. Return (AR == 1) ? Overlay(back, clip1, (back.width - clip1.width) / 2, (back.height - clip1.height) / 2) : clip1
    38. }
    Alles anzeigen




    so jetzt hoff ich auf eure Fähigkeiten - MfG, TimBourbon
  • Im SSM wird via FFMS2 so ein h264 Video erst einmal indexiert und dann auch noch nur mit einem Thread betrieben, aufgrund von Fehlermarge.
    Sprich Prozentual kann es passieren bei einer Nutzung mehrerer Threads in Bezug zur Nutzung von FFMS2 das sich Fehler im Bild zeigen. Um dies nicht zu produzieren und vorzubeugen ist der Thread Wert auf 1 gesetzt.

    Effektiv schneller wäre die Nutzung von L-Smash unter Verwendung von LibAV. Das kann man im SSM umstellen. LibAV wäre ungefähr das gleiche wie das was FFMS2 auch macht. Nur L-Smash braucht keine Thread Limitierung.

    Noch schneller, aber unter der höheren Gefahr einer Fehlermage am Video kann man auch L-Smash auch ohne LibAV verwenden. Das würde noch mal wesentlich schneller gehen, sofern man für die Quellen oder generell für das Skript Multithreading abschaltet.

    Denn L-Smash hat an sich schon Multithreading intern. Daher auch wesentlich schneller. Ob nun mit oder ohne LibAV.


    h264 oder generell Lossy kodierte Videos brauchen oft mehr Speicher zur Dekodierung als z.B. Lossless kodierte Videos. Das ist an sich ganz normal.

    Aber hier jetzt hast du über FFMS2 im SSM halt nur ein Thread genutzt, und das bremst dich extrem aus.
  • rechts aufklappen und dann l-smash anhaken. Änder den Pfad noch auf den von MeGUI. Das darfst du jedes Mal machen weil SSM nen bug hat, das er sich den Pfad nicht merkt :D
    Oder du kopierst die von megui in SSM rein, dann kanns dir ja egal sein.
    Rufe aber vorher den Updater von MeGUI auf und gucke ob l-smash aktiviert ist und wenn nich mach es und drück auf update.

    Nimm l-smash mit l-smashvideosource - kann man das überhaupt bestimmen ob libav oder lsmash @Sagaras ? Weil ich hab das nur im VFR-CFR Konverter gesehen!
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7
  • Lies mein post ganz und nicht von unten nach oben die erste Zeile :P
    In SSM.
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7
  • ja natürlich.
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7
  • Audio mit ffms2 raus und Video bleibste bei lsmash?

    Könnte klappen?
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7