Vollbildanwendungen aufnehmen

27 Beiträge / 0 neu
Letzter Beitrag
meldrian
Bild des Benutzers meldrian
Offline
Beigetreten: 12.05.2009
Beiträge: 1989
Vollbildanwendungen aufnehmen

Hallo,

wenn ich Vollbildanwendungen mit "recordmydesktop", sonst eigentlich ganz brauchbar, aufnehmen möchte dann sehe ich im Anschluss im aufgenommenen Video nur meinen Desktop, höre mein Geblubber aber von der Vollbildanwendung keine Spur. Das Video, in dem ich das game ja zeigen wollte, ist dann natürlich fürn Karrn.

Was tun? Software zum aufnehmen wechseln? Bin für Vorschläge offen... oder habe ich einfach nur irgendeine Option bei recordmydesktop übersehen?
Ich danke vorab für die Hilfe.

MfG,
euer Mel

andreas
Bild des Benutzers andreas
Offline
Beigetreten: 07.06.2010
Beiträge: 168

Du gehst auf Erweitert, Leistung, Immer Vollbilder pro Frame +, dann sollte es gehen :P
Bei mir ruckelt das aber dann bissi :/

meldrian
Bild des Benutzers meldrian
Offline
Beigetreten: 12.05.2009
Beiträge: 1989

Ich hab so ein paar Anwendungen (bspw.: red eclipse) da will das einfach nicht.

Hier mal ein Beispielvideo:
http://www.youtube.com/watch?v=1-DFRe5mTdU&feature=youtu.be

Interessant: Bekam eben bei nem Test (anderes Video) am Ende eine Email-Benachrichtigung vom Desktop her. Dann sieht man plötzlich noch kurz ein paar Ingameszenen.
Schalte ich nicht in den Vollbildmodus ist übrigens alles gut, es betrifft also scheinbar wirklich nur diesen.

Commandline
Bild des Benutzers Commandline
Offline
Beigetreten: 23.05.2008
Beiträge: 507

Compositing/Desktopeffekte an oder aus?

Ansonsten mal glc: https://github.com/nullkey/glc

-1 für Kool Savas.

Desti
Bild des Benutzers Desti
Offline
Beigetreten: 09.09.2009
Beiträge: 112

GLC geht nur für opengl Anwendungen.

PlayX
Bild des Benutzers PlayX
Offline
Beigetreten: 04.07.2008
Beiträge: 310

Falls du nen 2ten Rechner und etwas geld über hast.
http://www.blackmagic-design.com/products/intensity/

http://youtu.be/MixfhLaxnBg

Commandline
Bild des Benutzers Commandline
Offline
Beigetreten: 23.05.2008
Beiträge: 507

Ansonsten vielleicht Xvidcap? Zwar alt, aber wer weiß.....

Oder mal da gucken: http://wiki.ubuntuusers.de/screencasts

klappi
Bild des Benutzers klappi
Offline
Beigetreten: 01.05.2011
Beiträge: 17

mit ffmpeg kannst du es auch mal probieren.

Commandline
Bild des Benutzers Commandline
Offline
Beigetreten: 23.05.2008
Beiträge: 507

ffmpeg ist auch als mini-howto in meinem vorherigen Link enthalten ;)

meldrian
Bild des Benutzers meldrian
Offline
Beigetreten: 12.05.2009
Beiträge: 1989

Wow, viel Literatur für einen Sonntag Nachmittag.
Danke bis hierher, ich lese mich durch, probiere ein bisschen herum und gebe Rückmeldung über Erfolg und Misserfolg.
Bis dahin sind weitere Vorschläge wie immer gerne gesehen.

LG,

thechef
Bild des Benutzers thechef
Offline
Beigetreten: 17.05.2008
Beiträge: 176

Es ist auch möglich mit GLC oder Yukon Non-OpenGL-Apps aufzunehmen. Diese Tools nehmen auch noch locker 120 frames pro Sekunde auf (angenommen das Dateisystem ist schnell genug, z.B. Hauptspeicher).
Dann ist Compiz/Desktopeffekte allerdings vorausgesetzt. Der Compositing Window-Manager muss nämlich mit den GLC oder yukon hooks gestartet werden, also wahrscheinlich so: glc compiz

Ist recordmydesktop usw. überbaupt flüssig? 30 FPS ohne doppelte Frames?

Das Video ist zwar schon 4 Jahre alt, aber ich denke, dass das heute auch noch irgendwie realisierbar ist:

http://www.youtube.com/watch?v=d_fP6yYg5M8

Sinnigerweise nehme ich hier auf wie ich ein Videogame aufnehme und einen Livestream daraus mache :)

Desti
Bild des Benutzers Desti
Offline
Beigetreten: 09.09.2009
Beiträge: 112

Mit GLC habe ich auch schon herum experimentiert, zwar noch nicht den ganzen Compositor, aber ich hatte eher das Problem von GLC in gstreamer zu kommen.

Desti
Bild des Benutzers Desti
Offline
Beigetreten: 09.09.2009
Beiträge: 112

http://www.youtube.com/watch?v=tlyYYlhv9jk

Bekomms selber aber grad noch nicht so zum laufen, mache allerdings nicht nur disk recording, sondern live streaming.

thechef
Bild des Benutzers thechef
Offline
Beigetreten: 17.05.2008
Beiträge: 176

Fürs Livestreaming hatte ich damals einen yukon streamer geschrieben in Java: https://github.com/wereHamster/yukon/wiki/YunikornServer

macht aus dem stream ein multipart jpeg. So lässt sich der Stream auf einer Webseite oder sogar als Avatar in einem Forum oder was auch immer einbinden.

Die Quellen dazu hab ich noch. Die Links auf wereHamsters Seite sind allerdings veraltet. Bei Interesse richte ich den SVN-Server wieder ein oder stelle das irgendwo auf einen git server oder was auch immer.

Werde die Sache demnächst mal wieder genau betrachten. Habe deshalb auf heute eine neue 2 TB Festplatte für YUV-Video Material bestellt :)

So, erstmal wie man compiz aufnimmt:

(einzelne Optionen nachzulesen auf: https://github.com/nullkey/glc/wiki)

glc-capture -o ~/Videos/capture.glc -s -g --pbo compiz

dabei bewirkt die Option -s, dass die Aufnahme sofort mit dem Start von compiz beginnt (Hotkey geht bei compiz nicht)
-g bewirkt, dass der Capture-Zeitpunkt glaube nicht bei Buffer-Swapping sondern bei glFinish gemacht wird (compiz verwendet kein double buffering, oder so - d.h. ohne die option wird nichts aufgenommen, da der glSwap-Befehl nie ausgeführt wird).

--pbo bewirkt, dass der Capturing-Vorgang asynchron läuft (vorausgesetzt Hardware und Treiber unterstützen PBOs). Die Applikation wird nicht blockiert (bewirkt sehr viel).

Normalerweise dürfte aber genügen:

Im Normalfall würd ich jedoch machen:

glc-capture -o ~/Videos/capture.glc --pbo <Direct3D oder OpenGL Spiel deiner Wahl>

Beispielvideo:
http://youtu.be/CMotR8yUG9o

Leider hat mir youtube das Video auf HD 720 runterskaliert. Die ursprüngliche Aufnahme ist 1680x1050

edit: und noch eines
http://youtu.be/pSXIHgif0TY

Desti
Bild des Benutzers Desti
Offline
Beigetreten: 09.09.2009
Beiträge: 112

Ich streame mit Flumotion.

glc scheint allerdings nicht mit kwin zu arbeiten, bekomme da nur einen opengl buffer error und compiz will derzeit einfach nicht richtig starten.

thechef
Bild des Benutzers thechef
Offline
Beigetreten: 17.05.2008
Beiträge: 176

Hast du folgende Kombinationen versucht?

-g --capture=back
-g --capture=front
--capture=back
--capture=front

Dasselbe ohne bzw. mit --pbo

Desti
Bild des Benutzers Desti
Offline
Beigetreten: 09.09.2009
Beiträge: 112

Hab alles durchprobiert, nix zu machen mit kwin. Habe allerdings jetzt compiz zum laufen gebracht und damit geht es, bisher jedoch nur für file recording.

glc-capture -v 3 -g --capture=back --pbo -s -o testkwin.glc kwin --replace
[ 0,00s util info ] version 0.5.8
[ 0,03s gl_capture info ] capturing at 30,000000 fps
[ 0,03s gl_capture info ] reading frames from GL_BACK
[ 0,03s gl_capture info ] reading data as dword aligned
[ 0,03s util info ] system information

  threads hint = 4

[ 0,03s util info ] stream information

  signature    = 0x00434c47
  version      = 0x04
  flags        = 0
  fps          = 30,000000
  pid          = 17767
  name         = /usr/bin/kwin
  date         = Sun Jan  1 18:10:18 2012

[ 0,03s main info ] starting glc
[ 0,03s file info ] opening /home/dumm/trashtest/testkwin.glc for writing stream (no sync)
[ 0,03s pack info ] compressing using QuickLZ
[ 0,03s gl_capture info ] reading frames in GL_BGRA format
[ 0,04s main info ] glc running
[ 0,04s alsa_hook info ] starting capturing
[ 0,04s gl_capture info ] starting capturing
[ 0,04s gl_capture info ] refreshing color correction
[ 0,04s main info ] started capturing
[ 0,04s main info ] glc initialized
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 460/PCI/SSE2
OpenGL version string: 4.2.0 NVIDIA 290.10
OpenGL shading language version string: 4.20 NVIDIA via Cg compiler
Driver: NVIDIA
Driver version: 290.10
GPU class: GF100
OpenGL version: 4.2
GLSL version: 4.20
X server version: 1.10.4
Linux kernel version: 3.1
Direct rendering: yes
Requires strict binding: no
GLSL shaders: yes
Texture NPOT support: yes
[ 48,12s gl_capture info ] using GL_ARB_pixel_buffer_object
[ 48,12s gl_capture info ] creating/updating configuration for video 1
[ 70,48s gl_capture info ] creating/updating configuration for video 1
[ 70,48s gl_capture error ] Das Argument ist ungültig (22)
[ 70,48s gl_capture info ] stopping capturing
kwin(17767) KWin::checkGLError: GL error ( PostPaint ): "GL_OUT_OF_MEMORY"

glc-capture -v 3 -g --capture=front -s --disable-audio -o testkwin.glc kwin --replace
[ 0,00s util info ] version 0.5.8
[ 0,03s gl_capture info ] capturing at 30,000000 fps
[ 0,03s gl_capture info ] reading frames from GL_FRONT
[ 0,03s gl_capture info ] reading data as dword aligned
[ 0,03s util info ] system information

  threads hint = 4

[ 0,03s util info ] stream information

  signature    = 0x00434c47
  version      = 0x04
  flags        = 0
  fps          = 30,000000
  pid          = 18241
  name         = /usr/bin/kwin
  date         = Sun Jan  1 18:15:01 2012

[ 0,03s main info ] starting glc
[ 0,03s file info ] opening /home/dumm/trashtest/testkwin.glc for writing stream (no sync)
[ 0,03s pack info ] compressing using QuickLZ
[ 0,03s gl_capture info ] reading frames in GL_BGRA format
[ 0,04s main info ] glc running
[ 0,04s gl_capture info ] starting capturing
[ 0,04s gl_capture info ] refreshing color correction
[ 0,04s main info ] started capturing
[ 0,04s main info ] glc initialized
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 460/PCI/SSE2
OpenGL version string: 4.2.0 NVIDIA 290.10
OpenGL shading language version string: 4.20 NVIDIA via Cg compiler
Driver: NVIDIA
Driver version: 290.10
GPU class: GF100
OpenGL version: 4.2
GLSL version: 4.20
X server version: 1.10.4
Linux kernel version: 3.1
Direct rendering: yes
Requires strict binding: no
GLSL shaders: yes
Texture NPOT support: yes
[ 9,30s gl_capture info ] creating/updating configuration for video 1
[ 21,90s gl_capture info ] creating/updating configuration for video 1
[ 25,99s gl_capture info ] creating/updating configuration for video 1
[ 30,44s gl_capture info ] creating/updating configuration for video 1
[ 31,75s gl_capture info ] creating/updating configuration for video 1
[ 38,59s gl_capture info ] creating/updating configuration for video 1
[ 61,22s gl_capture info ] creating/updating configuration for video 1
[ 65,14s gl_capture info ] creating/updating configuration for video 1

glc-play testkwin.glc
[ 0.04s file error ] unexpected EOF

Das testfile ist immer nur ein paar hundert byte groß, während es mit compiz logischerweise zig MB pro Sekunde wächst.

meldrian
Bild des Benutzers meldrian
Offline
Beigetreten: 12.05.2009
Beiträge: 1989

Hallo nochmal,

"Ist recordmydesktop usw. überbaupt flüssig? 30 FPS ohne doppelte Frames?"
Ja, das passt schon. Alle bisherigen Videos sind damit erstellt worden. Einzig die Erfassung von Fenstern lässt mich im Stich was dann doch eher nervig ist.

Mit glc habe ich versucht mich anzufreunden, scheitere bislang aber an der Tatsache das mir bei jedem Versuch, egal wie lang, nur 115Byte große Dateien angelegt werden die sich via glc-play nicht wiedergeben lassen. was mache ich vermutlich falsch, jemand eine Idee? Danke bis hier her.

Desti
Bild des Benutzers Desti
Offline
Beigetreten: 09.09.2009
Beiträge: 112

Das passiert wenn das Programm nicht capture bar ist, bzw. den falschen Buffer zur falschen Zeit kopiert wird.

Was hast du denn aufnehmen wollen?

meldrian
Bild des Benutzers meldrian
Offline
Beigetreten: 12.05.2009
Beiträge: 1989

hedgewars zum Testen.
Danke, mit Smokin Guns geht es.
Das Bild ist etwas dunkel und der Ton verhält sich verdächtig still aber das wird sich mit Parametern beheben lassen.

PlayX
Bild des Benutzers PlayX
Offline
Beigetreten: 04.07.2008
Beiträge: 310

So Mel jetzt schreibe ich mal wie ich meine Spiele aufnehme.

Erstmal braucht man ffmpeg,pavucontrol,arecord, ein Spiel, optional ein Mikro für Komentare.

Ich starte das Spiel im Fenstermodus.

dann starte ich ffmpeg mit folgenden parametern.

ffmpeg -re -async 30 -f alsa -i pulse -f x11grab -s 1276x718 -r 30 -i :0.0+2,50 -s hd1080 -vcodec libx264 -preset ultrafast -crf 16 -acodec libmp3lame -ab 320k screencast.mp4

ich gehe das jetzt mal schritt für schritt ab.

ffmpeg: is klar oder
-re: sorgt für echtzeitverarbeitung, was bei mir so manchen rockler behoben hat
-async 30: hält Video und Audio Synchron. der Wert muss der gewünschtem Framerate gleich sein.
-f alsa -i pulse: dank dessen kannst du ten ton über pulse abgreifen.
-f x11grab_ damit wird als videoquelle der x11 angelegt
-s 1276x718: ist die gewünschte eingangsauflösung. da ich eine 1280x1ß24er Auflösung habe, brauche ich nur einen kleineren Teil. Diese auflösung ist für mich passen und muss den eigenen Bedingungen angepasst werden.
-r 30: Die Framerate
-i :0.0+2,50 Gibt den zu nutzenden XServer an und die X-Y Koordinaten des Aufnahmebereiches. In kenem Fall 2 Pixel nach Links (damit der Fensterrahmen weg ist und 50px nach unten, wegen der Leiste am Oberen Bildschirmrand + Fensterdeko.
-s hd1080: Skaliert das aufgenommene Material aif FullHD ich kann man auch HD720, HD480 oder einen anderen gewünschten wert wie 1345x456 eintragen. Es ist natürlich auch immer von der Power des eigenen Systems abhängig.
-vcodec libx264 -preset ultrafast -crf 16: Hier kommen Meine Videoeinstellungen. ich verwende x264, scheiße auf die Kompression und lasse ihn statdessen ultraschnell arbeiten (fast und medium scheinen aber bei 30 Frames zumindest bei mir auch noch zu gehen) und wähle als Qualitätsstufe den CRF Modus und als Wert 16. Wer mehr dazu wissen will bitte die x264 Doku lessen. -crf ist für 1 Pass empfohlen und werte zwischen 16 und 20 bieten eine gute Balance zwischen Größe und Qualität. Kleinere werte ergeben noch bessere Qualität.
-acodec libmp3lame -ab 320k: Hier die Audioeinstellungen: Ich encode als MP3 mit 320kbit/s mehr kann ich dazu nicht sagen:
screencast.mp4: die ausgabedatei.

Über pavucontrol kann man nachdem ffmpeg gestartet ist das Aunahmegrät definieren. Hier sollte man dann den Monitor seiner genutzten Sondkarte wählen.

Meinen Kommentar nehme ich paralel über arecord auf. Dazu wähle ich für arecord einfach das mic als aufnahmequelle.
Das hat den Vorteil, das ich meinen kommentar noch mit Audacity bearbeiten kann (Rauschfilter usw.) danach füge ich es mit der Audiospur der Spielaufnahme zusammen.

Falls noch fragen oder eränzugen sind, immer her damit.

manuel
Bild des Benutzers manuel
Offline
Beigetreten: 19.05.2008
Beiträge: 245

Hi PlayX

Wie bzw was machst du mit den Audiospuren genau ? Also so wie ich das aus deinem Kommentar entnehme hast du eine Audio Datei für deinen Kommentar und greifst mit ffmpeg den Sound und die Grafik vom Game ab.

So wie bekommst du jetzt die Audiospur aus der screencast.mp4 um sie mit deinem Kommentar zu mixen ? Und wie bekommst du die gemeinsame Audiospur da wieder rein ?

Danke fürs Erklähren :-)

PlayX
Bild des Benutzers PlayX
Offline
Beigetreten: 04.07.2008
Beiträge: 310

Ich habe 3 Soundkarten (2 würden auch reichen)
Mit der ersten nehme ich über ffmpeg das game auf.
mit der zweiten nehme ich dann den kommentar auf.

Ich habe dann also die mp4 mit dem video und gamesound und eine wav mit dem komentar.

Dann starte ich Audacity. Importiere darin die Soundspur aus der MP4 (Audacity holt sich die schon passend raus) und die wav Spur. Ich mische dann beide Spuren ab und filtere ein wenig. Das Ergebnis exportiere ich dann als eine Flac. Jedes andere Format würde natürlich auch gehen.

Dann habe ich also zusätzlich noch eine Flac mit dem fertigen Endsound.

Dann kommt mkvmerge zum einsatz. Damit kann ich einfach das video aus der mp4 und den sound aus der flac zu einem mkv zusammen schieben.

fertig

manuel
Bild des Benutzers manuel
Offline
Beigetreten: 19.05.2008
Beiträge: 245

Super danke fürs erklähren. Ggf könnte man deine Methode auch in den Kurz Angespielt Artikel mit rein machen tun. Wenn du nix dagegen hast würde ich das übernehmen...

PlayX
Bild des Benutzers PlayX
Offline
Beigetreten: 04.07.2008
Beiträge: 310

Mittlerweile habe ich mein Script ein wenig abgeändert.

ffmpeg -threads 0 -async 30 -f x11grab -s 1272x720 -r 30 -i :0.0+4,24 -vf "scale=1272:720,pad=1280:720:4:0" -vcodec libx264 -preset faster -crf 18 ramdisk/screencast.mp4& arecord -f dat daten/audio.wav& arecord -f dat daten/audio2.wav

Ich lasse also mit ffmpeg nur noch das video aufnehmen und starte paralel zwei mal arecord um einmal den sound vom spiel und einmal den kommentar aufzunhemen. ich kann über pavucontrol ja den beiden arecord instanzen jeweils eine andere aufnahmequelle zuordnen. durch das paralele starten ist auch alles hinterher synchron.
Mit einem "killall ffmpeg& killall arecord" kann ich auch alles hinterher wieder gleichzeitig beenden.

Ich speichere das Video selbst auf eine Ramdisk. Denn bei Speicherung auf meine HDD hatte ich immer wieder Framedrops. Obwohl ich schon eine extra Platte nur für die Videos habe kam sie doch nicht schnell genug hinterher. Eine Ramdisk war also die einfachste möglichkeit. Zwar ist meine Aufnahmezeit derzeit auf ca. 40 Minuten beschränkt, denn dann wären die 4GB der Ramdisk voll, aber da Ram ja kaum noch was kostet werde ich wohl nochmal um 8GB erweitern. Was mir dann ja gut 80Minuten Aufnahmezeit bringen sollte. Das dürfte wohl reichen.

-vcodec libx264 -preset faster -crf 18

Ich setze also auf x264 und nutze eine Qualitätswert von 18 (näheres bitte im ffmpeg wiki lesen) was angeblich für das menschliche Auge verlustfrei wirken soll, also reicht mir das. Als Present setze ich faster, alles darunter, also fast, medium, slow und slower brauchten zu viel CPU und führe somit zu Framedrops. Bei sehr anspruchsvollen spielen muss dieser wert eventuell auch angepasst werden (superfast, ultrafast).

andreas
Bild des Benutzers andreas
Offline
Beigetreten: 07.06.2010
Beiträge: 168

https://github.com/MaartenBaert/ssr

http://www.youtube.com/watch?v=HIhyc0TFKtA

goshawker
Bild des Benutzers goshawker
Offline
Beigetreten: 13.04.2013
Beiträge: 65

Herzlichen Glückwunsch!!
Der goldene Spaten ist Deiner!

Mastodon