Probleme bei ffmpeg-Desktopaufnahme

  • Ich versuche ein Spiel in einem Fenster aufzunehmen (kein OpenGL). Dazu verwende ich folgenden Befehl für ffmpeg:

    Code
    ffmpeg -f pulse -i default -f x11grab -s 862x512 -r 30 -i :0.0 -acodec copy -pix_fmt yuv420p -vcodec libx264 -crf 0 -preset ultrafast -threads 0 -y out.mkv

    Das Problem: Der Ton ist länger als das Video. Das Video wird in korrekter Geschwindigkeit aufgenommen, der Ton aber anscheinend langsamer, was man auch hören kann. Und mit -f alsa wird garkein Ton aufgenommen, und -f alsa -i pulse ist im Ergebnis noch schlimmer als -f pulse. Und ich merke gerade, dass das Video auch flackert.

    Vielleicht weiß ja jemand eine Lösung, wie ich Ton und Bild zusammen synchron aufnehmen kann. Ansonsten müsste ich mir überlegen wie ich den Ton im Nachhinein an die Videogeschwindigkeit anpasse.


    OS: Mint 16
    Kernel: x86_64 Linux 3.11.0-12-generic

  • a. mal versucht in ein weniger komprimiertes video format zu capturen? (um zu wissen ob eventuell das Videohandling zu den Aussetzern führt
    b. Du hast da jetzt zwei files hochgeladen, Dein Aufruf sollte aber nur eines erzeugen -> was haben die Files mit dem Aufruf zu tun?

  • Ich habe jetzt FFV1 als Videocodec benutzt und das Bild ist jetzt in Ordnung. Der Ton ist aber weiter asynchron.
    Hier ein eineinhalb-minütiger Beispielclip, diesmal die unveränderte Originalausgabe: http://www.sendspace.com/file/ogj7f1
    In diesem Fall hat der Ton eine Länge von 1:34 und das Video 1:32. Bei einer längeren Aufnahme wird die Differenz größer.


    Und falls es vielleicht hilfreich ist, noch die Ausgabe von arecord -l:

    Code
    **** Liste der Hardware-Geräte (CAPTURE) ****Karte 0: NVidia [HDA NVidia], Gerät 0: ALC662 rev1 Analog [ALC662 rev1 Analog]  Sub-Geräte: 1/1  Sub-Gerät #0: subdevice #0Karte 0: NVidia [HDA NVidia], Gerät 2: ALC662 rev1 Alt Analog [ALC662 rev1 Alt Analog]  Sub-Geräte: 1/1  Sub-Gerät #0: subdevice #0

    Und hier die Terminalausgabe bei einer Aufnahme:

  • '-async 1 ' hinter pulse und Huffyuv + .avi haben auch nicht geholfen. Habe versucht JACK zu installieren und über jack_capture aufzunehmen, aber irgendwie wollte es nicht laufen.
    Ich denke ich versuch mal nachträglich den Ton zu resamplen bis er synchron ist und guck, wie das Ergebnis dann sein wird. Ich hatte mal ein AviSynth-Script mit dem das automatisch ging, aber das hab ich nicht mehr. Mal sehen ob ich das nochmal hin bekomm.

  • Sollte unter Linux auch nicht kompliziert sein
    1. mit mediainfo die Längen von beiden Auslesen
    2. Streckfaktor ausrechnen
    3. mit sox die Tonspur strecken
    (Ich vermute, dass man das Ganze in ffmpeg mit den filter_complex settings auch irgendwie in einem Aufruf machen kann, aber wirklich nur ne Vermutung.)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!