Encoding-Talk

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

  • Anzeige
    Deine Angaben sind auch die in denen mein Video encodiert wurde. Video ist begrenzter Bereich und BT.709, das kann ich auch in AVSPmod so nachprüfen. Und MPC-HC stellt es vollkommen richtig dar, während VLC zwar etwas verblasst ist, aber zumindest korrekt BT.709 ist. Stelle ich bei AVSPmod einfach BT.601 ein und belasse es auf Begrenztem Farbraum, dann krieg ich so ziemlich exakt das Bild von Youtube raus: Es ist nicht verblasst aber die Farben trotzdem falsch.

    Das heisst an der Farb Reichweite ändert sich also nichts, was Youtube da macht ist ja offensichtlich schlichtweg ein BT.709 video nehmen und es ohne grund für manche als BT.601 auszuspucken, und offensichtlich nicht nur für mich so.

    Ich kann mir trotzdem gut vorstellen das es an Nvidia Einstellungen liegt, denn zwinge ich Youtube den Flash Player auf, dann wird es korrekt dargestellt.
  • Abend zusammen,

    ich encodiere ja bei kurzen, bearbeiteten Videos immer zuerst unkomprimiert mit Adobe Premiere und dann erst mit MeGUI (Was bei mir irgendwie schneller geht als der Umweg über AFS oder vfwschlagmichtot). Nun habe ich mir nie zuvor Gedanken darüber gemacht, aber jetzt fällt mir auf, dass ich ja unterschiedliche Optionen habe um mit Premiere möglichst verlustfrei meine Datei zur weiteren Bearbeitung zur Verfügung zu stellen - wo ist denn der Unterschied. und gibt es überhaupt einen?

    Zum einen gibt es das Format "AVI (Unkomprimiert)", wo ich neben den grundlegenden Videoeinstellungen zwischen zwei Video-Codecs die Wahl habe: V210 vs UYVY.

    Ich hab aber auch das Format "AVI" auswählen und schon habe ich ne mehr oder minder freie Wahl der Video-Codecs. Zum einen gibt es die Auswahlmöglichkeit "None" - also ohne jeglichen Video-Codec? Oder Uncompressed UYVY 422 8bit. Oder MagicYUV losless v1.2rev2 (64 bit) oder V210 10-bit YUV und ein paar mehr, bei denn der Qualitäts-regler bei 100 ausgegraut ist.

    Was davon eignet sich zu meinem Zweck und gibt es überhaupt schwerwiegende Unterschiede (von der Dateigröße mal abgesehen)?
  • Warum nicht erneut wieder den gleichen Lossless Codec mit dem du auch aufgenommen hast? Das drittelt deine HDD Last und geht somit wesentlich schneller ohne das deine Platte danach randvoll ist.
    Beim Codec auch drauf achten das die Thread Einstellung auf Auto/maximum steht.
    Beim Export möglichst den gleichen Farbraum wie bei Aufnahme wieder wählen.

    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 | DooM 2: Project Brutality | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt 4 | WRC 7
  • Team_Cryo schrieb:

    Hier nochmal meine Render Einstellungen:
    Audio: 128 Kbit/s; 48.000 Hz; 32 Bit; Stereo; AAC
    Video: 59,940 fps; 1920x1080 Progressive; YUV; 16 Mbit/s
    Die sind ja spannend.
    Vor allem der Audio. Nur 128 kbit, aber 48khz und 32bit? okay .. :D

    Warum nicht 60 fps statt 59,94? Quelle eine Konsole? Ansonsten auch eher strange.
    Die Videobitrate ist auch viel zu niedrig. Erstrecht bei den Vegas Encodern.

    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 | DooM 2: Project Brutality | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt 4 | WRC 7
  • Ich heb mal den Thread wieder aus Versenkung.

    Ich bin super faul geworden, ich versuche alle möglichen Abläufe möglichst zu automatisieren. Bei AviSynth beiße ich mir grad ein bisschen die Zähne und finde nicht wirklich was im Netz dazu. Vorhandene Vorkenntnisse: Batch.

    Folgende Aufgabe: Die Videos werden ja mit den gleichen Einstellungen encodiert. Ich möchte, dass das Skript einfach die .avi im Ordner lädt, ohne des absoluten Pfads.

    Ich habe hier noch paar alte Skripts von SSM, die ich grad anzupassen versuche.

    Originalzeile:
    Spoiler anzeigen

    Quellcode

    1. AVIload("R:\01-DieSache\01-DieSache\01-DieSache.avi", 0, 0, 0, -0, -0, "Auto", "Auto", 0, 0)



    Nun, wenn ich stattdessen AVIload ("*.avi") oder AVIsource ("*.avi") oder AVIFileSource("*.avi") einsetze, bekomme ich einen Fehler bei MeGUI. Ich verstehe auch nicht so ganz den Unterschied zwischen den 3 Befehlen. Wie funktioniert denn sowas bei AviSynth? Irgendwie bin ich da auch zu doof das zu googlen, ich bekomme nur was zu DirectShowSource, aber das ich noch mal was anderes. Geht sowas überhaupt?

    Danke :)
  • AVIload wird nicht so funktionieren, weil das ist eine von mir erstellte Funktion die ebenfalls in das Skript hinein müsste. Die Angaben die du da siehst sind Parameter die der Funktion übergeben werden. So stehen die Parameter für AVIload folgendermaßen:
    AVIload(Pafd des Videos in Anführungszeichen, Bildschnitt für Links, Oben, Rechts, Unten, Pixel Typ als String [Auto, RGB24, YV24, YUY2, YV12, Y8], Angabe für FPS Rundung als String [Auto, Igno., Manueller FPS Wert als Bruch], FPS Zähler Wert, FPS Nenner Wert)

    Um das zu verwenden benötigst du halt die Funktion dazu. Die wird aber durch den SSM individuell generiert. Je nachdem welche Einstellungen du getätigt hast.

    Würde daher vorschlagen das du diese Option vergisst und es im SSM lässt. ^^

    -

    Standard kannst du aber AVISource verwenden für AVI Files. avisynth.nl/index.php/AviSource
    FFVideoSource und FFAudioSource muss in Kombination genutzt werden und braucht das Plugin FFMS2.DLL avisynth.nl/index.php/FFmpegSource#Function_Reference
    Dann gibt es noch L-Smash: avisynth.nl/index.php/LSMASHSource

    FFMS2 als auch L-Smash wirst du brauchen, wenn du vorhast andere Dinge in AVISynth zu laden wie z.B. MP4, MKV, etc. pp.


    Darauf kannst du eine Batch aufbauen die solch ein Skript generiert. Denn ein AVISynth Skript kann nicht von sich aus erkennen ob in seinem Pfad eine Videodatei existiert oder nicht. Und schon gar nicht das AVISynth das automatisch in sein Skript schreibt. ^^

    Aber mit einer Batch Datei kannst du das bewerkstelligen oder man kann programmieren und schreibt sich ein kleines Tool dafür (Was eleganter wäre als eine Batch). ^^


    Theoretisch müsste die Batch oder das Tool folgende Aufgabe erfüllen:
    - Prüfung ob keine, eine oder mehrere AVI Dateien im Ordner sind
    - Sind AVI Dateien vorhanden muss für jede dieser Dateien ein Skript angelegt werden
    - In jedem der Skripte muss dann die jeweilige AVI Datei (Am besten mit Pfad) von der Batch/Tool eingetragen werden


    Um das in Batch umzusetzen wird das echt kompliziert. Wenn nicht gar unmöglich, da die Schleife für Dateinamen und Skripterstellung mehrer Dateien mit 2 Schleifen gelöst werden müsste und das würde bei einer Batch Komplikationen ergeben.

    Aber ganz easy ist das z.B. schon mit QB64 zu regeln (Kostenlos): portal.qb64.org/

    Quellcode

    1. spec$ = "*.AVI" ' <-- List all Files in current directory with specific types
    2. file$ = DIR$(spec$) 'use a file spec ONCE to find the last file name listed
    3. IF DIRCount% > 1 THEN
    4. DO
    5. file$ = DIR$("") 'use an empty string parameter to return a list of files!
    6. file2$ = LEFT$(file$, LEN(file$) - 3) + "AVS"
    7. IF file$ <> "" THEN
    8. IF _FILEEXISTS(file2$) = -1 THEN KILL file2$ ' overwrite the AVS File, when exists
    9. OPEN file2$ FOR OUTPUT AS #1
    10. ' AVISynth Script
    11. ' German: Hier kann der AVISynth Skript eingetragen werden.
    12. ' Um " im Skript zu nutzen muss man CHR$(34) nutzen, da " in QB64 fuer Strings genutzt werden
    13. PRINT #1, "AVISource(" + CHR$(34) + file$ + CHR$(34) + ").AutoFPS(" + CHR$(34) + "Auto" + CHR$(34) + ", 0, 0)"
    14. PRINT #1,
    15. PRINT #1, "Function AutoFPS (Clip clip0, string afps, int fpsn, int fpsd) {"
    16. PRINT #1, " rate1 = (afps == " + CHR$(34) + "Auto" + CHR$(34) + ") ? (Round(Float(clip0.framerate * 1000)) / 1000) / 2 : nop()"
    17. PRINT #1, " rate2 = (afps == " + CHR$(34) + "Auto" + CHR$(34) + ") ? Round(clip0.framerate) / 2 : nop()"
    18. PRINT #1, " rate = (afps == " + CHR$(34) + "Auto" + CHR$(34) + ") ? (rate1 == rate2) ? 1 : 1001 : (afps == " + CHR$(34) + "Igno." + CHR$(34) + ") ? clip0.frameratedenominator : fpsd"
    19. PRINT #1, " ratefaktor = (afps == " + CHR$(34) + "Auto" + CHR$(34) + ") ? (rate == 1001) ? 1000 : 1 : nop()"
    20. PRINT #1, " clip0 = (afps == " + CHR$(34) + "Auto" + CHR$(34) + ") ? (rate == 1001) ? clip0.AssumeFPS(Round(clip0.Framerate) * 1000, rate) : clip0.AssumeFPS(round(clip0.framerate), rate) : (afps == " + CHR$(34) + "Igno." + CHR$(34) + ") ? clip0.AssumeFPS(clip0.frameratenumerator, rate) : clip0.AssumeFPS(fpsn, rate)"
    21. PRINT #1, "}"
    22. CLOSE #1
    23. END IF
    24. LOOP UNTIL LEN(file$) = 0 'file list ends with an empty string
    25. END IF
    26. SYSTEM
    27. END
    28. '####################
    29. '# Function #
    30. '####################
    31. FUNCTION DIR$ (spec$)
    32. CONST TmpFile$ = "DIR$INF0.INF", ListMAX% = 500 'change maximum to suit your needs
    33. SHARED DIRCount% 'returns file count if desired
    34. STATIC Ready%, Index%, DirList$()
    35. IF NOT Ready% THEN REDIM DirList$(ListMAX%): Ready% = -1 'DIM array first use
    36. IF spec$ > "" THEN 'get file names when a spec is given
    37. SHELL _HIDE "DIR " + spec$ + " /b > " + TmpFile$
    38. Index% = 0: DirList$(Index%) = "": ff% = FREEFILE
    39. OPEN TmpFile$ FOR APPEND AS #ff%
    40. size& = LOF(ff%)
    41. CLOSE #ff%
    42. IF size& = 0 THEN KILL TmpFile$: EXIT FUNCTION
    43. OPEN TmpFile$ FOR INPUT AS #ff%
    44. DO WHILE NOT EOF(ff%) AND Index% < ListMAX%
    45. Index% = Index% + 1
    46. LINE INPUT #ff%, DirList$(Index%)
    47. LOOP
    48. DIRCount% = Index% 'SHARED variable can return the file count
    49. CLOSE #ff%
    50. KILL TmpFile$
    51. ELSE IF Index% > 0 THEN Index% = Index% - 1 'no spec sends next file name
    52. END IF
    53. DIR$ = DirList$(Index%)
    54. END FUNCTION
    Alles anzeigen
    Funktioniert Tadellos. Die EXE Datei muss du mit QB64 erzeugen und in den Ordner kopieren wo du deine Videos hast.

    Beim Ausführen, wird der Skript für jede AVI Datei erstellt die sich im Ordner befindet.

    Kann man noch ausbauen. z.B.
    - einen Absoluten Pfad für die Dateinamen mit in den Skript schreiben lassen
    - Die Skripte dann in ein extra Ordner verschieben

    So hätte man eine bessere Übersicht.

    Man kann das auch Optisch über das Programm ausgeben lassen. Aber so hast du schon mal ein Muster. ;D