Extrem schlechte ffmpeg Performance beim Separieren der OBS Audiostreams

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

  • Extrem schlechte ffmpeg Performance beim Separieren der OBS Audiostreams

    Anzeige
    Hallo zusammen,

    ich habe oben genanntes Problem und findet dafür einfach keine Lösung. Ich habe folgende mp4 Datei aus OBS als Rohmaterial:

    Quellcode

    1. General
    2. Complete name : D:\Recordings\2016-12-08 20-43-54.mp4
    3. Format : MPEG-4
    4. Format profile : Base Media
    5. Codec ID : isom (isom/iso2/avc1/mp41)
    6. File size : 25.1 GiB
    7. Duration : 15 min 4 s
    8. Overall bit rate mode : Variable
    9. Overall bit rate : 239 Mb/s
    10. Writing application : Lavf57.41.100
    11. Video
    12. ID : 1
    13. Format : AVC
    14. Format/Info : Advanced Video Codec
    15. Format profile : High 4:4:4 Predictive@L4.2
    16. Format settings, CABAC : No
    17. Format settings, ReFrames : 1 frame
    18. Codec ID : avc1
    19. Codec ID/Info : Advanced Video Coding
    20. Duration : 15 min 4 s
    21. Bit rate : 238 Mb/s
    22. Width : 1 920 pixels
    23. Height : 1 080 pixels
    24. Display aspect ratio : 16:9
    25. Frame rate mode : Constant
    26. Frame rate : 60.000 FPS
    27. Color space : YUV
    28. Chroma subsampling : 4:2:0
    29. Bit depth : 8 bits
    30. Scan type : Progressive
    31. Bits/(Pixel*Frame) : 1.914
    32. Stream size : 25.1 GiB (100%)
    33. Color range : Limited
    34. Matrix coefficients : BT.601
    35. Audio #1
    36. ID : 2
    37. Format : AAC
    38. Format/Info : Advanced Audio Codec
    39. Format profile : LC
    40. Codec ID : 40
    41. Duration : 15 min 4 s
    42. Bit rate mode : Variable
    43. Bit rate : 288 kb/s
    44. Maximum bit rate : 320 kb/s
    45. Channel(s) : 2 channels
    46. Channel positions : Front: L R
    47. Sampling rate : 44.1 kHz
    48. Frame rate : 43.066 FPS (1024 spf)
    49. Compression mode : Lossy
    50. Stream size : 31.3 MiB (0%)
    51. Title : Game
    52. Default : Yes
    53. Alternate group : 1
    54. Audio #2
    55. ID : 3
    56. Format : AAC
    57. Format/Info : Advanced Audio Codec
    58. Format profile : LC
    59. Codec ID : 40
    60. Duration : 15 min 4 s
    61. Bit rate mode : Variable
    62. Bit rate : 2 090 b/s
    63. Maximum bit rate : 320 kb/s
    64. Channel(s) : 2 channels
    65. Channel positions : Front: L R
    66. Sampling rate : 44.1 kHz
    67. Frame rate : 43.066 FPS (1024 spf)
    68. Compression mode : Lossy
    69. Stream size : 231 KiB (0%)
    70. Title : TeamSpeak
    71. Default : No
    72. Alternate group : 1
    73. Audio #3
    74. ID : 4
    75. Format : AAC
    76. Format/Info : Advanced Audio Codec
    77. Format profile : LC
    78. Codec ID : 40
    79. Duration : 15 min 4 s
    80. Bit rate mode : Variable
    81. Bit rate : 219 kb/s
    82. Maximum bit rate : 320 kb/s
    83. Channel(s) : 2 channels
    84. Channel positions : Front: L R
    85. Sampling rate : 44.1 kHz
    86. Frame rate : 43.066 FPS (1024 spf)
    87. Compression mode : Lossy
    88. Stream size : 23.7 MiB (0%)
    89. Title : Microphone
    90. Default : No
    91. Alternate group : 1
    Alles anzeigen

    Mein nächster Schritt ist die Separation aller Audiostreams mittels ffmpeg um das Ganze dann in Premiere Elements zu schneiden. Dafür habe ich ein kleines Hilfsskript das das dies per Drag & Drop erledigt:

    Quellcode

    1. @echo off
    2. For %%A in ("%~1") do Set Name=%%~nA
    3. "%ProgramFiles%\ffmpeg\bin\ffmpeg.exe" -i "%~1" -threads 4 -map 0:a:1 -codec copy "%Name%-teamspeak.aac" -map 0:a:2 -codec copy "%Name%-microphone.aac"

    Wenn ffmpeg dann aber loslegt, zeigt mir der Taskmanager eine CPU-Last von 13% an, RAM 4GB von 32GB. Festplattentransferrate 7MB/sek. Das ganze System schläft quasi. Bei normalen Kopiervorgängen schafft die Platte 220 MB/sek.

    ffmpeg schreibt:
    size= 329kB time=00:09:59.49 bitrate= 4.5kbits/s speed=5.94x

    Hat jemand von euch eine Idee woran das liegen kann?

    Vielen Dank im Voraus.


    Overwatch - Täglich ein neues Ranglisten Video! Kommentiert und mit Facecam.
  • Ich hatte früher exakt das gleiche Problem und bin auf keine Lösung gekommen, also habe ich es einfach gelassen. Für die Dxtory-Aufnahmen nehme ich ganz normal den Dxtory Audio Splitter, für die AmaRecTV-Aufnahmen mache ich das mit dem SSM (der ja auch nur VirtualDub nutzt). Vielleicht wäre das eine bessere Alternative für dich, auch wenn es mehr Aufwand ist als eine Batch-Datei.
    1. Nacheinander splitten lassen und nicht simultan, lastet sonst nur Schreibaufwand auf der Festplatte aus, nicht die CPU, die macht sonst Pause ^^
    2. Warum werden nur 4 Threads genutzt? Sehe da keinen Sinn dies limitieren zu wollen.
    Bremst halt aus sowas.

    Und ja, die CPU braucht nicht viel. Was soll sie denn machen beim Kopieren? Auf 100% gehen? xD Das wäre mal richtig Fail. xD

    Was du nicht angegeben hast ist das er das Video weglassen soll. Da fehlt bei dir also noch der Parameter -vn
    Dann wird Video ignoriert. So wie es jetzt bei dir aussieht schleußt er das Video mit durch. Und das bremst dann natürlich auch.
  • Hatte das Problem auch, dass der Audio-Extract über FFMpeg sehr langsam war (Virtual Dub ebenfalls), der DxTory-Decoder war da deutlich schneller. Allerdings funktioniert der nicht bei OBS-Aufnahmen.

    Ich mache es mittlerweile so, dass ich nur den Spielsound von OBS aufnehmen lasse und dann mein Mikrofon über Audacity. Das wird dann in Shotcut (deinem Fall Premiere) zusammengemischt. Spart mir dann doch etwas Zeit bei der Nachbearbeitung.
    AKTUELLE PROJEKTE
    12 Uhr: Crysis: Warhead [BLIND]
    15 Uhr: Star Wars: Knights of the Old Republic II
    18 Uhr: Need For Speed (2015) [BLIND]
    19 Uhr: Ghost Recon: Wildlands [BLIND]


  • Anzeige

    Peacemaker666 schrieb:

    der DxTory-Decoder war da deutlich schneller. Allerdings funktioniert der nicht bei OBS-Aufnahmen.
    Der DxTory Audio Demuxer versteht nur PCM Audio. Wenn du mit OBS in AVI aufnehmen solltest und PCM als Audio, dann klappt der dort genauso gut.


    Peacemaker666 schrieb:

    der DxTory-Decoder war da deutlich schneller. Allerdings funktioniert der nicht bei OBS-Aufnahmen.
    VDub ist Speicherbegrenzt und auch das Ausleseverfahren ist etwas eigensinnig was die Speichernutzung angeht.
    Daher wäre da vllt. VDDubMod vllt. interessanter.

    FFmpeg kopiert via Bitstream. Das ist recht genau aber auch langsamer als wenn man den gesamten Stream nimmt und einfach nur alles in den Speicher zwischenlagert wie geht und diesen Inhalt kopiert.

    Das sind zwei unterschiedliche Methoden.

    Demuxer wie bei MKVExtract oder XMediaRecode machen die übliche Kopiermethode die ihr als Schnell bezeichnet.
  • Sagaras schrieb:

    Der DxTory Audio Demuxer versteht nur PCM Audio. Wenn du mit OBS in AVI aufnehmen solltest und PCM als Audio, dann klappt der dort genauso gut.
    Müsste eigentlich als PCM eingestellt sein. Der DxTory Demuxer hatte dann die ersten paar Minuten gemacht und dann aufgehört. Werde vielleicht mal rumprobieren, wenn ich den PC wieder habe, aber für mich habe ich mit Audacity und Shotcut eigentlich eine gute Alternative gefunden.
    AKTUELLE PROJEKTE
    12 Uhr: Crysis: Warhead [BLIND]
    15 Uhr: Star Wars: Knights of the Old Republic II
    18 Uhr: Need For Speed (2015) [BLIND]
    19 Uhr: Ghost Recon: Wildlands [BLIND]


  • Peacemaker666 schrieb:

    Müsste eigentlich als PCM eingestellt sein. Der DxTory Demuxer hatte dann die ersten paar Minuten gemacht und dann aufgehört.

    Ich kenne die genaue Struktur von AVI-Containern nicht, aber Dxtory scheint bei allem, was nicht direkt von Dxtory selbst ist, irgendwelche Probleme zu haben. :/ Auch bei ganz normalem PCM 16 Bit 44100Hz Stereo - solange der AVI-Container nicht von Dxtory geschrieben wurde, dauert es entweder brutal lange oder bricht irgendwann ab. Keine Ahnung warum, aber so waren meine Tests.
  • Ich würd FFmpeg nicht nutzen um Audiospuren zu extrahieren.
    Beim Extrahieren von PCM Spuren aus einer AVI benötigt VirtualDub ein paar Sekunden, während FFmpeg dafür mehrere Minuten in Anspruch nimmt. Qualvoll langsam. Im Gegensatz zu Dxtorys mitgeliefertem Tool lässt sich VirtualDub auch prima in automatisierte Abläufe einbinden, siehe SSM. Ist es etwas anderes als eine AVI, muss halt ein kleines AviSynth Script erstellt werden um das Video zu öffnen. Auch das kann automatisiert werden, siehe abermals SSM. Dass hierbei die Spuren allesamt in PCM umgewandelt werden dürfte verschmerzbar sein, da es sowieso bearbeitet werden soll.
  • Lass mal das mit MP4Box GUI. Die GUI Anwendung ist für die Füße. Die taugt einfach nix. Egal in welcher Hinsicht.
    Zudem ist die GUI Version einfach zu alt. Letztes Release war 2013.

    Die aktuelle CLI Version ist um längen besser und zudem könnte er es in seiner Batch Datei verwursten. Da wurde erst am 8.12.2016 das letzte mal released.
    Da ist GPAC recht schnell was das angeht ;D
  • Guten Morgen! Erstmal Danke für euer Feedback und eure Vorschläge zu dem Thema. Es ist schon interessant das ffmpeg solche Probleme hat.

    Ich werde wenn ich wieder daheim bin mal mp4box ausprobieren. Ob ich nun ffmpeg nutze oder ein anderes Tool ist mir wurscht. :D Und das es ein CLI ist ist umso besser, eine GUI brauche ich nicht.

    Wieviel Monate/Jahre braucht es eigentlich um den für sich selbst optimalen und qualitativ hochwertigsten Workflow herauszufinden? :D


    Overwatch - Täglich ein neues Ranglisten Video! Kommentiert und mit Facecam.
  • Vouk schrieb:

    Wieviel Monate/Jahre braucht es eigentlich um den für sich selbst optimalen und qualitativ hochwertigsten Workflow herauszufinden?
    Die Qualität die du fabrizierst muss dir selbst genügen. Wenn du damit selbst nicht einverstanden bist, gibt es in diesem Forum genug Leute um dir die Qualität zu liefern mit der du einverstanden bist. Da gibt es Workflows bis zum Abwinken.

    Aber die ultimative Qualität will niemand haben, weil das Workflows sind die entweder viel Zeit fressen oder den meisten schon zu umständlich sind oder halt auch schon zu überzogen. ^^

    Ein gesunder Menschenverstand und ein geeignetes Maß sind schon mal gute Voraussetzungen. Wer weiß wie YT arbeitet, kann seinen Workflow drauf anpassen.

    Es gibt zig Leute hier die dir Sachen zwecks Einstellungen und und und erklären und empfehlen können. Du kannst sie dann gerne annehmen oder hinterfragen oder halt auch sein lassen.
    Immerhin sind es deine Videos und du musst damit leben und kein anderer ^^
  • Es war mehr oder weniger eine rhetorische Frage. :D

    Ich habe mir schon viele Infos aus dem Forum zusammengesucht. Insbesonders aus dem Audio & Video Bereich. Mit der Qualität der Videos an sich bin ich auch zufrieden. (Auch wenn ich gerne x264 mit crf gerne direkt aus der NLE exportieren möchte, aber das wäre ein Thema für einen anderen Thread :) )

    Aber mir geht es eher um die Arbeitsabläufe an sich, die Kombination an Tools und deren effizienteste Nutzung.


    Overwatch - Täglich ein neues Ranglisten Video! Kommentiert und mit Facecam.
  • Julien schrieb:

    Peacemaker666 schrieb:

    Müsste eigentlich als PCM eingestellt sein. Der DxTory Demuxer hatte dann die ersten paar Minuten gemacht und dann aufgehört.
    Ich kenne die genaue Struktur von AVI-Containern nicht, aber Dxtory scheint bei allem, was nicht direkt von Dxtory selbst ist, irgendwelche Probleme zu haben. :/ Auch bei ganz normalem PCM 16 Bit 44100Hz Stereo - solange der AVI-Container nicht von Dxtory geschrieben wurde, dauert es entweder brutal lange oder bricht irgendwann ab. Keine Ahnung warum, aber so waren meine Tests.
    Ja, kann ich soweit aber auch bestätigen.
    AKTUELLE PROJEKTE
    12 Uhr: Crysis: Warhead [BLIND]
    15 Uhr: Star Wars: Knights of the Old Republic II
    18 Uhr: Need For Speed (2015) [BLIND]
    19 Uhr: Ghost Recon: Wildlands [BLIND]


  • Wer das unbedingt in diesem ollen Rechtsklick menü will, kann sich auch selber 'ne batch machen dafür. Sagaras hatte doch da mal batches für gehabt. Warum nutzt ihr nicht diese dann? Kann man denk ich auch so ausweiten, das sie alle gängigen Videoformate unterstützt.
    Ansonsten einfach SSM, damit kriegt man doch auch alles raus ;D
    Aktuelle Projekte/Videos


  • Ich habe sowohl ffmpeg als auch mp4box mal auf einer SSD (Samsung 840 Pro) als auch mit der Festplatte (Toshiba DT01ACA100) durchlaufen lassen:

    mp4box -raw 3 filename_30gb.mp4
    SSD: < 1s
    HDD: 243s

    ffmpeg -i filename_30gb.mp4 -vn -map 0:a:1 -codec copy teamspeak.aac
    SSD: 6s
    HDD: 261s

    Dabei scheint allerdings weniger die max. Transferrate der Festplatte das Problem zu sein. Diese wird ja nicht mal ansatzweise erreicht. Ich hätte nicht gedacht das der Unterschied so stark ist.

    Ergo: Es ist wohl eine zusätzliche SSD fällig.


    Overwatch - Täglich ein neues Ranglisten Video! Kommentiert und mit Facecam.