Nogen foreslog, at jeg dirigerede en kopi af det umodificerede X-display til en fil og derefter konverterede den til en videofil til generelle formål. Hvilke kommandoer vil jeg bruge til at gøre dette på et Kubuntu-system? (Rediger: Han sagde noget om at vedhæfte en skærmport til en fil.) Hvis det ikke er muligt, hvad er min bedste mulighed for en fremragende skærmoptagelse i kvalitet, der ikke afhænger af hurtig hardware?
Baggrund: Jeg prøvede at bruge avconv med -f x11grab og nogle GUI-programmer. Uanset hvad jeg prøver, har den resulterende video enten artefakter / uskarphed eller er urolig (manglende rammer). Dette skyldes sandsynligvis CPU / hukommelsesbegrænsninger.
Mål:
- Videokvalitet må ikke være mærkbart forskellig fra at se sessionen direkte på en skærm, fordi formålet er at demonstrere en animeret Ansøgning.
- Den endelige video skal have et almindeligt format, der kan sendes til Windows-brugere og bruges på internettet. Jeg synes, at H.264 MP4 skal fungere.
- Løsningen forudsætter ikke meget forudgående viden. Jeg kender kommandolinjen og grundlæggende Linux-kommandoer, men jeg lærer stadig Linux og ved ikke meget om videokodecs.
Hvad jeg allerede har prøvet:
- Hidtil bedste kommando:
ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi
, konverter derefter til mp4 medffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4
.- Billedkvaliteten er god, men på mit testsystem ligger den bag computeren. På et hurtigere målsystem forsinkes det ikke, men rammer springes naturligvis over, hvilket gør videoen ikke særlig glat .
- Jeg prøver stadig at finde ud af, hvordan man gemmer grebet. avi-fil til SHM for at se, om det hjælper.
- Brug af GUI-recordere fra Istanbul og RecordMyDesktop
- Enkel kommando:
avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg
ved hjælp af avconv version 0.8.3-4: 0.8.3-0ubuntu0.12.04.1 - Tilføjelse af
-codec:copy
(mislykkes med:Requested output format "x11grab" is not a suitable output format
) - Tilføjelse af
-same_quant
(resulterer i god kvalitet, men er meget hakket / mangler mange rammer) - Tilføjelse af
-vpre lossless_ultrafast
(mislykkes med:Unrecognized option "vpre"
,Failed to set value "lossless_ultrafast" for option "vpre"
) - Tilføjelse af forskellige værdier for
-qscale
- Tilføjelse af forskellige værdier for
-b
- Tilføjelse af
-vcodec h264
(output gentagne gange:Error while decoding stream #0:0
,[h264 @ 0x8300980] no frame!
)- Bemærk: h264 er angivet i output som
DE h264 raw H.264 video format
- Bemærk: h264 er angivet i output som
Svar
Hvis din harddisk tillader det, kan du prøve at gøre det på denne måde:
Skriv først ukomprimeret fil:
ffmpeg -f x11grab -s SZ -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi
her SZ
er din skærmstørrelse (f.eks. 1920×1080).
Derefter kan du komprimere det når som helst du vil:
ffmpeg -i grab.avi grab.mkv
Selvfølgelig kan du ændre komprimering, vælge codec og så på.
Kommentarer
Svar
Jeg har haft succes med:
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :1 \ -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \ video.mkv
Nøglepunkter:
- -qp 0: x264 tabsfri tilstand
- -indstillet ultrafast: mindste CPU-brug, stor størrelse
- -pix_fmt yuv444p: standard, men ffmpeg foreslår yuv420p, som er tabsfri
Tip: optag skærm og webcam-overlay 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
[rediger 20180418] Opdatering til Gnome Shell og 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
- hvordan kan jeg bestemmer min skærmstørrelse?
Svar
Dette er en løsning og sandsynligvis ikke “næsten perfekt” som det kan afhænge af netværkshastighed eller andre faktorer, der kan forhindre videostrømmen.
Brug VNC eller Teamviewer og opret forbindelse fra din bærbare computer eller desktop til den anden maskine. Hvis du har en Windows- eller OSX-bærbar computer tilgængelig, u har sandsynligvis værktøjer, der kan optage dette, og jeg tror, at teamviewer kan optage en session selv. Det er let at prøve, og du kan derefter beslutte, om kvaliteten er god nok.
Teamviewer har tendens til at skalere, men jeg ved ikke, om dette også sker med optagede sessioner.
VNC komprimerer eller skalerer ikke, og din bærbare / stationære skærm har brug for en højere opløsning end den anden maskins. Kvaliteten er god. Måske kan den VNC-fremviser, du bruger, optage. Jeg er på Ubuntu nu, og standardvisningen kan ikke gøre dette.
Skærmoptagelse til visning for et publikum eller på nettet – der er specielle værktøjer til dette, der kan fange klik, følge og zoome ind på musen og har andre muligheder for at gøre det mere klart, hvad du laver.Jeg foreslår, at du også ser på dem. Google til “skærmoptagelsessoftware”.
Svar
Har du prøvet rfbroxy ?
Jeg bruger den til at optage X11-skærm-sessioner.
Du kan bruge den i en tilstand, hvor den kun optager et billede, hvis der er ENDRE .
−-type=WHAT
WHAT = skærm er endda standard ifølge man-siden.
Kommentarer
- At ‘ er interessant. Hvordan gør du det?
- @GunarGessner skal være standardadfærd. En alternativ metode er at reagere på mus / keyborad-begivenheder. Dette kan være endnu bedre, hvis du har et ur på skærmen og ikke vil lave et billede, når kun det ur skifter …
Svar
Jeg bruger Camtasia til at optage min gameplayvideo og onlinevideo. Jeg brugte også fraps videooptager før, men fps faldt under afspilning. Camtasia giver en højere fps, men det eneste generende problem er, at hver gang jeg skal konvertere output .CAMREC til avi, som du kan se i indtast linkbeskrivelse her indtast linkbeskrivelse her . .Camrec er det proprietære format for camtasia og kan ikke afspilles på nogen tredjepartsafspillere som Windows Media Player og vlc.
ffmpeg -f x11grab -s 2560x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi