Någon föreslog att jag skulle rikta en kopia av den omodifierade X-skärmen till en fil och sedan konvertera den till en allmän videofil. Vilka kommandon skulle jag använda för att göra detta på ett Kubuntu-system? (Redigera: Han sa något om att bifoga en skärmport till en fil.) Om inte möjligt, vad är mitt bästa alternativ för en högkvalitativ skärminspelning som inte beror på snabb hårdvara?
Bakgrund: Jag försökte använda avconv med -f x11grab och några GUI-program. Oavsett vad jag försöker har den resulterande videon antingen artefakter / suddighet eller är hackig (saknade ramar). Detta beror troligen på CPU / minnesbegränsningar.
Mål:
- Videokvaliteten får inte märkbart skilja sig från att se sessionen direkt på en skärm, eftersom syftet är att visa en animerad Ansökan.
- Den slutgiltiga videon måste ha ett vanligt format som kan skickas till Windows-användare och användas på webben. Jag tycker att H.264 MP4 borde fungera.
- Lösningen bör inte förutsätta mycket förkunskaper. Jag känner till kommandoraden och grundläggande Linux-kommandon, men jag lär mig fortfarande Linux och vet inte mycket om videokodek.
Vad jag redan försökt:
- Hittills bästa kommando:
ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi
, konvertera sedan till mp4 medffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4
.- Bildkvaliteten är fantastisk, men på mitt testsystem ligger den på datorn. På ett snabbare målsystem släpar det inte, men ramar hoppas uppenbarligen, vilket gör videon inte särskilt smidig .
- Jag försöker fortfarande ta reda på hur man sparar greppet. avi-fil till SHM för att se om det hjälper.
- Använda GUI-inspelare från Istanbul och RecordMyDesktop
- Enkelt kommando:
avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg
med avconv version 0.8.3-4: 0.8.3-0ubuntu0.12.04.1 - Lägga till
-codec:copy
(misslyckas med:Requested output format "x11grab" is not a suitable output format
) - Lägga till
-same_quant
(ger hög kvalitet, men är mycket hackig / saknar många ramar) - Lägga till
-vpre lossless_ultrafast
(misslyckas med:Unrecognized option "vpre"
,Failed to set value "lossless_ultrafast" for option "vpre"
) - Lägga till olika värden för
-qscale
- Lägga till olika värden för
-b
- Lägga till
-vcodec h264
(matas ut flera gånger:Error while decoding stream #0:0
,[h264 @ 0x8300980] no frame!
)- Obs: h264 listas i utdata som
DE h264 raw H.264 video format
- Obs: h264 listas i utdata som
Svar
Om din hårddisk tillåter det kan du försöka göra det så här:
Skriv först okomprimerad fil:
ffmpeg -f x11grab -s SZ -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi
här SZ
är din skärmstorlek (t.ex. 1920×1080).
Därefter kan du komprimera det när som helst du vill:
ffmpeg -i grab.avi grab.mkv
Naturligtvis kan du ändra komprimering, välja codec och så på.
Kommentarer
Svar
Jag har haft framgång med:
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :1 \ -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \ video.mkv
Nyckelpunkter:
- -qp 0: x264 förlustfritt läge
- -förinställd ultrafast: minsta CPU-användning, stor storlek
- -pix_fmt yuv444p: standard, men ffmpeg föreslår yuv420p, vilket är förlorat
Tips: fånga skärm och webbkameraöverlägg med:
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
[redigera 20180418] Uppdatering för Gnome Shell och 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()
Kommentarer
- hur kan jag bestämmer min skärmstorlek?
Svar
Detta är en lösning och förmodligen inte ”nästan perfekt” som det kan bero på nätverkshastighet eller andra faktorer som kan hindra videoströmmen.
Använd VNC eller Teamviewer och anslut från din bärbara eller stationära dator till den andra maskinen. Om du har en Windows- eller OSX-bärbar dator tillgänglig, yo du har förmodligen verktyg som kan spela in detta, och jag tror att teamviewer kan spela in en session själv. Det är lätt att prova och du kan sedan bestämma om kvaliteten är tillräckligt bra.
Teamviewer tenderar att skala, men jag vet inte om detta också händer med inspelade sessioner.
VNC komprimerar eller skalas inte och din bärbara / stationära bildskärm behöver en högre upplösning än den andra maskinens. Kvaliteten är bra. Kanske kan den VNC-tittare du använder spela in. Jag är på Ubuntu nu och standardvisaren kan inte göra detta.
Skärminspelning för visning för en publik eller på webben – det finns specialverktyg för detta som kan fånga klick, följa och zooma in på musen och har andra alternativ för att göra det tydligare vad du gör.Jag föreslår att du tittar på dem också. Google för ”programvara för skärminspelning”.
Svar
Har du provat rfbroxy ?
Jag använder den för att spela in X11-skärm-sessioner.
Du kan använda den i ett läge där den bara spelar in en bild, om det finns en FÖRÄNDRING .
−-type=WHAT
WHAT = skärm är till och med standard, enligt man-sidan.
Kommentarer
- Att ’ är intressant. Hur gör du det?
- @GunarGessner borde vara standardbeteende. En alternativ metod är att reagera på mus / keyborad-händelser. Det kan vara ännu bättre om du har en klocka på skärmen och inte vill göra en bild när bara den klockan ändras …
Svar
Jag använder Camtasia för att spela in min spelvideo och onlinevideo. Jag använde också fraps videoinspelare innan men fps sjönk under uppspelning. Camtasia ger högre fps men det enda besvärliga problemet är att varje gång jag måste konvertera utdata .CAMREC till avi som du kan se i ange länkbeskrivning här ange länkbeskrivning här . .Camrec är det egna formatet för camtasia och kan inte spelas på någon tredje parts spelare som Windows Media Player och vlc.
ffmpeg -f x11grab -s 2560x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi