Ich habe mit der Aufnahme von Screencasts mit FFmpegs X11grab-Modul experimentiert, was bisher mehr oder weniger gut funktioniert hat. Ich verstehe, dass die A/V-Kodierung ein komplexer Prozess mit vielen feinen Details ist, aber ich tue mein Bestes, um zu lernen.FFmpeg Screencast Aufzeichnung: Welche Codecs zu verwenden?
Ich möchte eine "leichte" Aufnahme eines Videostreams machen, die so wenig wie möglich auf das System belastet, während der Stream aufgezeichnet wird. Ich nehme zwei Audiostreams getrennt mit pacat und sox auf. Später wird das Ganze gefiltert, normalisiert, codiert und zu einem Matroska-Container kombiniert.
Im Moment habe ich ffmpeg einen Rawvideo-Stream aufnehmen, um zu x264 yuv4 demuxer gefüttert werden. Ich experimentierte mit ffv1 und straight x264 Aufnahme vor. Mein System kann die Echtzeit-Kodierung mit x264 für die Einstellungen, die ich für den endgültigen Stream benötige, nicht verarbeiten. Daher muss ich nach Abschluss der Aufzeichnung erneut komprimieren. Ich habe festgestellt, dass ffv1 mich schrecklich Frame fallen lässt, und Yuv4 auch, aber weniger. Ich vermute, dass dies auf die Festplattengeschwindigkeit zurückzuführen ist, selbst wenn ich in einem SATA3 Caviar Black sitze, der ausschließlich zum Speichern der aufgezeichneten Daten verwendet wird.
Die Frage ist, welche Kombination von Video-Codecs sollte ich betrachten? Record gerade in x264 und recompress zu "besser" x264 später? Rohes Video, dann komprimieren? Wie gehe ich vor, um Probleme wie die Frame Drops zu identifizieren, die ich erlebt habe?
EDIT: Dies ist die ffmpeg Linie, die ich derzeit verwende.
ffmpeg -v warning -f x11grab -s 1920x1080 -r 30000/1001 -i :0.0\
-vcodec rawvideo -pix_fmt yuv420p -s 1280x720\
-threads 0\
recvideo.y4m
Wie lautet die Auflösung Ihres Screencasts? –
Ich nehme den gesamten Bildschirm bei 1080p auf und skaliere im laufenden Betrieb auf 720p. – mkaito
https://trac.ffmpeg.org/wiki/StreamingGuide erwähnt einige gute Codecs zu verwenden – rogerdpack