Iemand stelde voor om een kopie van het ongewijzigde X-scherm naar een bestand te sturen en dat bestand daarna om te zetten naar een algemeen videobestand. Welke commandos zou ik gebruiken om dit op een Kubuntu-systeem te doen? (Bewerken: hij zei iets over het aansluiten van een weergavepoort aan een bestand.) Indien niet mogelijk, wat is dan mijn beste optie voor een schermopname van uitstekende kwaliteit die niet afhankelijk is van snelle hardware?
Achtergrond: ik heb geprobeerd avconv te gebruiken met -f x11grab en enkele GUI-programmas. Wat ik ook probeer, de resulterende video heeft artefacten / wazigheid of is schokkerig (ontbrekende frames). Dit is waarschijnlijk te wijten aan CPU / geheugenbeperkingen.
Doelen:
- Videokwaliteit mag niet merkbaar verschillen van het zien van de sessie direct op een scherm, omdat het doel is om een geanimeerde toepassing.
- De uiteindelijke video moet een gangbare indeling hebben die naar Windows-gebruikers kan worden verzonden en op internet kan worden gebruikt. Ik denk dat H.264 MP4 zou moeten werken.
- De oplossing mag niet veronderstellen dat er veel voorkennis is. Ik ben bekend met de commandoregel en basis Linux-commandos, maar ik leer nog steeds Linux en weet niet veel van videocodecs.
Wat ik al heb geprobeerd:
- Beste commando tot dusver:
ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi
, en vervolgens converteren naar mp4 metffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4
.- De beeldkwaliteit is geweldig, maar op mijn testsysteem blijft het achter bij de computer. Op een sneller doelsysteem vertraagt het niet, maar frames worden duidelijk overgeslagen, waardoor de video niet erg vloeiend is.
- Ik probeer nog steeds uit te vinden hoe ik de opname kan opslaan. avi-bestand naar SHM om te zien of dat helpt.
- Istanbul en RecordMyDesktop GUI-recorders gebruiken
- Eenvoudig commando:
avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg
met avconv-versie 0.8.3-4: 0.8.3-0ubuntu0.12.04.1 - Toevoegen van
-codec:copy
(mislukt met:Requested output format "x11grab" is not a suitable output format
) - Toevoegen van
-same_quant
(resulteert in uitstekende kwaliteit, maar is erg schokkerig / er ontbreken veel frames) - Toevoegen van
-vpre lossless_ultrafast
(mislukt met:Unrecognized option "vpre"
,Failed to set value "lossless_ultrafast" for option "vpre"
) - Verschillende waarden toevoegen van
-qscale
- Verschillende waarden toevoegen van
-b
-
-vcodec h264
(voert herhaaldelijk uit:Error while decoding stream #0:0
,[h264 @ 0x8300980] no frame!
)- Opmerking: h264 wordt vermeld in uitvoer als
DE h264 raw H.264 video format
- Opmerking: h264 wordt vermeld in uitvoer als
Antwoord
Als uw harde schijf het toestaat, kunt u het op deze manier proberen:
Schrijf eerst een ongecomprimeerd bestand:
ffmpeg -f x11grab -s SZ -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi
hier SZ
is uw weergavegrootte (bijv. 1920 x 1080).
Daarna kunt u het op elk gewenst moment comprimeren:
ffmpeg -i grab.avi grab.mkv
Natuurlijk kunt u de compressie wijzigen, codec selecteren en zo Aan.
Reacties
Antwoord
Ik heb succes gehad met:
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :1 \ -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \ video.mkv
Belangrijkste punten:
- -qp 0: x264 lossless-modus
- -preset ultrasnel: kleinste cpu-gebruik, groot formaat
- -pix_fmt yuv444p: de standaard, maar ffmpeg suggereert yuv420p, wat lossy is
Hint: maak scherm en webcam overlay met:
ffmpeg -f x11grab -thread_queue_size 64 -video_size 1920x1080 -framerate 30 -i :1 \ -f v4l2 -thread_queue_size 64 -video_size 320x180 -framerate 30 -i /dev/video0 \ -filter_complex "overlay=main_w-overlay_w:main_h-overlay_h:format=yuv444" \ -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \ video.mkv
https://trac.ffmpeg.org/wiki/Capture/Desktop
[edit 20180418] Update voor Gnome Shell en Wayland:
#!/usr/bin/env python3 from dbus import SessionBus, Interface from os import getcwd, path from sys import argv BUS_NAME = "org.gnome.Shell.Screencast" PATH_NAME = "/org/gnome/Shell/Screencast" INTERFACE_NAME = BUS_NAME PIPELINE="x264enc pass=qual quantizer=0 speed-preset=ultrafast ! queue ! matroskamux" if path.isabs(argv[1]): name = argv[1] else: name = path.join(getcwd(), argv[1]) bus = SessionBus() screen_cast = bus.get_object(BUS_NAME, PATH_NAME) screen_cast = Interface(screen_cast, INTERFACE_NAME) ret, name = screen_cast.Screencast(name, {"pipeline": PIPELINE}) if not ret: print("Error starting screencast.") raise SystemExit(1) try: i = input() except (EOFError, KeyboardInterrupt): pass finally: screen_cast.StopScreencast()
Reacties
- hoe kan bepaal ik mijn schermgrootte?
Antwoord
Dit is een tijdelijke oplossing en waarschijnlijk niet “bijna perfect” zoals het kan afhangen van de netwerksnelheid of andere factoren die de videostream kunnen hinderen.
Gebruik VNC of Teamviewer en maak verbinding vanaf je laptop of desktop met de andere machine. Als je een Windows- of OSX-laptop beschikbaar hebt, yo je hebt waarschijnlijk tools die dit kunnen opnemen, en ik denk dat teamviewer zelf een sessie kan opnemen. Het is gemakkelijk te proberen en u kunt dan beslissen of de kwaliteit goed genoeg is.
Teamviewer neigt naar schaalvergroting, maar ik weet niet of dit ook gebeurt met opgenomen sessies.
VNC comprimeert of schaalt niet, en uw laptop / desktopmonitor heeft een hogere resolutie nodig dan die van de andere machine. De kwaliteit is goed. Misschien kan de VNC-viewer die u gebruikt opnemen. Ik gebruik nu Ubuntu en de standaardviewer kan dit niet.
Schermopname voor weergave aan een publiek of op internet – er zijn speciale tools hiervoor die klikken kunnen opvangen, volgen en erop kunnen inzoomen de muis en andere opties hebben om duidelijker te maken wat u doet.Ik stel voor dat je die ook eens bekijkt. Google voor “schermopnamesoftware”.
Answer
Heb je geprobeerd rfbroxy ?
Ik gebruik het om X11-scherm-sessies op te nemen.
Je kunt het gebruiken in een modus waarin het alleen een foto opneemt, als er een VERANDERING is .
−-type=WHAT
WHAT = scherm is zelfs standaard, volgens de man-pagina.
Reacties
- Dat ‘ is interessant. Hoe doe je dat?
- @GunarGessner zou standaardgedrag moeten zijn. Een alternatieve methode is om te reageren op muis- / keyborad-gebeurtenissen. Dit kan nog beter zijn als je een klok op het scherm hebt staan en geen foto wilt maken als alleen die klok verandert …
Antwoord
Ik gebruik Camtasia om mijn gameplayvideo en online video op te nemen. Ik heb ook eerder een fraps-videorecorder gebruikt, maar de fps daalt tijdens het spelen. Camtasia geeft een hogere fps, maar het enige lastige probleem is dat ik elke keer dat ik de uitvoer .CAMREC naar avi moet converteren, zoals je kunt zien in voer hier de linkbeschrijving in voer hier de linkbeschrijving in . De .camrec is het gepatenteerde formaat van camtasia en kan niet worden afgespeeld op spelers van derden, zoals Windows Media Player en vlc.
ffmpeg -f x11grab -s 2560x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi