Alternative zu VirtualDub mit MagivYUV für DirectShadow?

  • Hallo zusammen,


    ich verwende für die Aufnahmen einen separaten PC mit einer Blackmagic Intensity Pro 4K. Um dort aufzunehmen, verwende ich VirtualDub und encode in MagivYUV. Das hat mutmaßlich bis zum Win 10-Upgrade 1803 auch gut geklappt. Nun bekommt VirtaulDub keine Verbindung mehr zum Treiber der Karte. Mit dem hauseigenen Blackmagic-Tool will ich nicht aufnehmen, da die Dateien dann noch größer werden.


    Ein Downgrade auf 1709 kommt auch nicht infrage.


    Daher stellt sich die Frage, ob es alternative Tools gibt? OBS würde zwar funktionieren, das kann aber nicht per MagicYUV encoden.



    Danke für eure Hilfe!

  • Mit ffmpeg kann man auch DirectShow aufnehmen, allerdings ist das ein bisschen Syntaxgebastel und eher unkomfortabel.


    Alternativ wäre OBS ja auch mit UT Video zu benutzen, der steht MagicYUV nicht in viel nach.

  • Grafikkarte ist eine GTX 970.


    Mit ffmpeg meint ihr, ohne OBS etc. sondern direkt aufgerufen? Gut, das wäre schon praktikabel, da man sich nur einmal reinfuchsen muss um die richtigen Optionen zu finden. Der Befehl lässt sich dann ja jedes Mal gleich aufrufen.

  • da man sich nur einmal reinfuchsen muss um die richtigen Optionen zu finden


    Ja eben. Gibt doch nichts bequemeres danach :)


    Sogar mit automatischer Ordnererstellung möglich, wenn man sich die batch entsprechend hinbastelt :) Und da du die Audioaufnahmegeräte direkt angibst als Name wird er auch sofort meckern, wenn eins mal nicht da ist (statt einfach NICHTS aufzunehmen oder ein falsches Gerät, wie es die GUI Programme ja zu gerne dann machen xD.
    Und die Audiosynchro ist der absolute Burner. Nach 5std immer noch FRAMEAKKURAT synchron.


    Und du hast mit ffmpeg einfach die beste Leistung. Diese Szenenkomposition von OBS zieht via DirectShow wiedergabe an sich schon enorm leistung. Bei ffmpeg wird da wenigstens keine Vorschau dauerhaft gerendert, sondern nur roh abgegriffen.


    Code
    ffmpeg -f dshow -list_devices 1 -i dummy -report


    Das schreibt dir in eine Datei deine Geräteliste. Da müsste dann der Name deiner Capture Karte für Video auftauchen. Bei mir ist es:
    "Datapath VisionSC-DP2 Video 01"


    Dann brauchste noch die Modiliste:

    Code
    ffmpeg -list_options true -f dshow -i "video=Datapath VisionSC-DP2 Video 01" -report


    video= natürlich durch den Namen deiner Karte dann ersetzen.


    Die Modiliste ist sehr wichtig wegen unterstützten Farbräumen und fpsraten etc.
    Auch gucken was im Capture Pin eingestellt werden kann bei deiner Karte ( Bei Virtualdub im Capture Mode bei Capture Pin die Einstellungen prüfen. und auch den Capture Filter )


    Dann hab ich 'ne Batch z.B.


    Lets Play Doom 2016.bat
    mit diesem Inhalt:

    Code
    SETLOCAL ENABLEDELAYEDEXPANSION
    ECHO OFF
    SET capturefolder=%~n0
    CALL start_capture.bat


    Hier wird also die Variable "capturefolder" auf den des aktuellen Batchdateinamens (eben in dem Fall Lets Play Doom 2016) gesetzt. Sollte der ordner noch nicht existieren, wird er erstellt.
    Danach wird die start_capture.bat aufgerufen und die hat dann den eigentlichen Code:



    main path hab ich auf e:\ da ich auf e:\ die ordner erstellt haben möchte.
    bei set filename taucht dann die capturefolder variable wieder auf. Wie du siehst wird es auch bei wiederholten aufnahmen nicht zu überschreibungen können, weil datum und uhrzeit mit an den dateinamen gehangen wird.
    Des Weiteren kann man eine Partnummer angeben bevor die Aufnahme startet dank der %number% geschichte.


    und unten halt die command für meine Karte. Idealerweise hat man keine Farbraumkonvertierungen drin, weil die singlethreaded über CPU laufen, aber ich kanns bei mir nich ändern. NV12 kann meine Karte zwar und auch NVEnc, ergo wäre's dann NV12 -> NV12, jedoch gefallen mir damit paar umstände nicht die eher mich betreffen. und rgb0 ginge zwar auch noch, aber erzeugt mikroruckler bei der Grafikkarte bei anspruchsvolleren titeln. Also belass ichs bei bgr24 -> yuv420p
    hat dann zwar wegen dem farbkonvert etwas cpu, aber ist der beste kompromiss.
    Den vf vflip wirst du vermutlich nicht brauchen. den brauch ich halt bei meiner karte und RGB Abgreifung. Ansonsten musste halt nur noch die Gerätenamen anpassen und die farbräume eben.

  • Wow, das ist mal ein Service. Lieben Dank dafür! Das sollte eine gute Ausgangsbasis für mich sein. Aber scheinbar hab ich schon ein anderes Problem mit DirectShow. Beim zweiten Befehl, um die Modi aufzulisten, kommt schon ein Fehler:


    Code
    [dshow @ 045356c0] Unable to BindToObject for Blackmagic WDM Capture
    [dshow @ 046f56c0] Could not find video device with name [Blackmagic WDM Capture] among source devices of type video.
    video=Blackmagic WDM Capture: I/O error

    Da muss ich mal schauen. Vermutlich muss ich das Device "Decklink Video Capture" nehmen, denn da spuckt ffmpeg die Modi aus.


    Hier gäbe es auch einen Wiki-Eintrag.


    Nachtrag: Eine Reparaturinstallation im Installtool hat den Treiber repariert. Jetzt kann ich sowohl unter ffmpeg als auch unter virtualdub wieder das Device "Blackmagic WDM Capture" verwenden und das geschriebene Videofile enthält auch Video.


    Dennoch werde ich auf ffmpeg umstellen, weil ich dort einfach alles unter Kontrolle habe. Wenn ich damit fertig bin, schreib ich meine Syntax in den Thread.


    Nachtrage 2: Der Treiber spinnt wieder herum. Ich vermute, dass es mit dem 1803-Upgrade zusammenhängt. Ich lass das mal liegen, bis ein neuer Treiber herauskommt.

  • Die Audiosynchro ist bei Virtualdub viel schlechter und wird gerne asynchron. Ich hab vorher virtualdub genutzt und es war oft probleme mitm audiosync (spielstarts, ladebildschirme, ruckler im spiel, mag virtualdub oft nicht). Zudem wärest du dann wieder auf ekeligem CPU Encoding gebunden und das killt einfach alles.


    bezogen auf dein Artikel - bitte halte dich da mehr an meiner line. z.B. die rtbufsize sollte in jedem Fall auf das Maximum von 2147MB sein, damit dir der buffer nicht überläuft.


    4:2:2 Farbraum gibt es bei NVEnc nicht, von daher wirste diesen auf yuv420p wandeln müssen. Kostet bisschen CPU, den qmax dann möglichst nicht kleiner als 16, da dir sonst der rtbuffer überläuft und du dann frames dropst.


    Naja Windows 10 macht mir Angst. Ich bin froh das ich noch mit Windows 7 unterwegs bin. Aber wenn hier irgendwann mal neue CPU und so kommt, bleibt mir ja nichts anderes übrig als dieses misslungene Stück Software :(


    Auch hab ich noch was vergessen, was sehr wichtig ist:


    Zitat von De-M-oN

    Denk dran das bei Drittsoftwarenutzung von NVEnc die Grafikkarte in den P2 Performance Modus umschaltet - auch wenn du Energieleistung auf max performance bevorzugen hast.
    Lad dir dafür Nvidia Profile Inspector in der neusten Dev Build runter, drück das letzte Symbol (Zahnrad mit Lupe drauf) dann scroll nach 5- common und setze Force CUDA P2 State auf OFF und drück oben rechts auf apply.
    Diesen Vorgang musst du nach jedem Nvidiatreiber Update wiederholen.

  • Ich werd auf der Kiste jetzt nochmal das Windows 10 1709 installieren und schauen, ob es damit wieder funktioniert. Alleine schon, um dem Blackmagic-Support diese Info weitergeben zu können. Ansonsten bügel ich im nächsten Schritt ein Windows 7 drüber und fertig. Der Rechner ist eh nur zum aufnehmen da.


    Ich glaube, wir haben ein Missverständnis. Mein normaler PC hat die GTX 970, der Aufnahme-PC hat keine Grafikkarte eingebaut, da läuft also alles über die i5-3550-CPU.


    Ich werd mich an deinem Befehl orientieren und schau mir dann noch die einzelnen Optionen an um herauszufinden, was die bewirken. Die Doku sollte das ja hergeben. :)


    Nachtrag:
    Unter Windows 10 1709 läuft das Capturing mit Virtual Dub sofort wieder anstandslos. Ich teste mal noch etwas hin und her.


    Nachtrag 2:
    Nach einiger Testerei kann ich nun ziemlich sicher sagen, dass es an Windows 10 1803 lag.
    Aktuell verwende ich folgende ffmpeg-Syntax:


    Code
    ffmpeg -y -f dshow -video_size 1920x1080 -pixel_format bgr0 -rtbufsize 2147M -framerate 60 -i video="Blackmagic WDM Capture":audio="Blackmagic WDM Capture" -vcodec libx264 -acodec copy -audio_buffer_size 80 -pix_fmt yuv420p -preset ultrafast -crf 0 d:\output.mkv


    Bei entsprechendem Bildmaterial geht die CPU-Last auf die 100% zu und es kommt zu framedrops:



    Code
    real-time buffer [Blackmagic WDM Capture] [video input] too full or near too full (63% of size: 2147000000 [rtbufsize parameter])! frame dropped!

    Virtualdub mit MagicYUV bewegt sich so zwischen 50 und 60%.

  • Noch eine Rückmeldung:
    Ich habe den Blackmagic-Support bemüht, leider jedoch mit unbefriedigendem Ergebnis. Man stellt zwar WDM-Treiber bereit, beruft sich jedoch darauf, dass es sich bei FFMPEG und VirtualDub um Drittsoftware handele und man deren Support bemühen solle. Uff... Für die ist das erledigt, da deren eigene Software ja unter Windows 10 1803 läuft.

  • Ich glaube, wir haben ein Missverständnis. Mein normaler PC hat die GTX 970, der Aufnahme-PC hat keine Grafikkarte eingebaut, da läuft also alles über die i5-3550-CPU.

    Warum denn 2 Computer? Einer reicht doch

    Bei entsprechendem Bildmaterial geht die CPU-Last auf die 100% zu und es kommt zu framedrops:

    Naja bei x264 wundert mich das auch nicht. Die Farbkonvertierung zieht zusätzlich CPU. ggf kann man das ja identisch halten, je nach dem was für farbräume die blackmagic sonst noch kann. oder halt den output an die karte angleichen.
    Aber der Sinn der Capture Karte sollte eig. ja sein keine CPU Last zu erzeugen (abgesehen vllt noch die Farbkonvertierung wenn nicht anders geht)
    Daher versteh ich dieses 2-PC Setup nicht, wo dann zudem noch keine NVEnc fähige Grafikkarte vorhanden ist?

    Ich habe den Blackmagic-Support bemüht, leider jedoch mit unbefriedigendem Ergebnis. Man stellt zwar WDM-Treiber bereit, beruft sich jedoch darauf, dass es sich bei FFMPEG und VirtualDub um Drittsoftware handele und man deren Support bemühen solle. Uff... Für die ist das erledigt, da deren eigene Software ja unter Windows 10 1803 läuft.

    Das ist halt der Vorteil bei Datapath. Die geben keine capture software mit, sondern schicken dich sogar los drittsoftware zu nehmen.^^

  • Warum denn 2 Computer? Einer reicht doch

    Nicht, wenn die Steckplätze auf dem Mainboard nicht vorhanden sind, um GraKa und Capture-Karte unterzubringen. Den Rechner hat mir jemand überlassen, daher bot sich das an. Außerdem laufen auch die Aufnahmeplatten dann nur noch bei Bedarf.



    Aber der Sinn der Capture Karte sollte eig. ja sein keine CPU Last zu erzeugen (abgesehen vllt noch die Farbkonvertierung wenn nicht anders geht)
    Daher versteh ich dieses 2-PC Setup nicht, wo dann zudem noch keine NVEnc fähige Grafikkarte vorhanden ist?

    Sinn der Capturekarte ist es, den Einfluss auf die Framerate durch Dxtory zu vermeiden und nicht, eine Komprimierung durchzuführen. Und da erfüllt mein Setup seinen Zweck ganz hervorragend.

  • Nicht, wenn die Steckplätze auf dem Mainboard nicht vorhanden sind, um GraKa und Capture-Karte unterzubringen

    Hat das Mainboard nur 2 Steckplätze oder du so viele Karten? Ich mein ich hab sogar noch 'ne Soundkarte drin.

    Sinn der Capturekarte ist es, den Einfluss auf die Framerate durch Dxtory zu vermeiden und nicht, eine Komprimierung durchzuführen. Und da erfüllt mein Setup seinen Zweck ganz hervorragend.

    Nach wie vor: Für Aufnahme ohne FPS Verlust brauchts einfach kein 2-PC-Setup, weshalb ich es nach wie vor für unnötig halte, denn:


    Mit Capture Karte aufnehmen via NVEnc = Einfluss auf die Framerate durch ffmpeg = null (bzw nahezu null wenn Farbkonvertierung drin, aber das merkst du nicht in der Spiel-FPS sondern an der NVEnc Leistung. Kannst dann also kein 2560x1600 @ 120fps Video mehr drehen ^^)
    Und selbst ohne Capture Karte wäre es möglich.
    OBS mit shared texture hook + NVEnc und auch hier wäre kein FPS Verlust durch die Aufnahme. FPS Verlust durch die Aufnahme hast du nur durch altmodischem Framebufferhook, statt shared texture hook, und CPU Encoding.


    NVEnc kann auch lossless, aber wenn eine Farbkonvertierung drin ist, könnte ein höherer CQP nötig sein, damit die Codierung nicht überlastet (überlaufender rtbuffer)
    Ich nehm mit CQP 16 auf und das ist mehr als genug Puffer, das ein Re-encode + Youtube Re-encode exakt gleich überlebt wird als wenn die Aufnahme mathematisch lossless war. Letzteres lässt nur die Festplatten schwitzen und schneller voll werden.


    Da wäre meiner Meinung nach das Geld in eine Datapath CC besser investiert gewesen als in einen weiteren PC. ;)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!