Noen foreslo at jeg skulle lede en kopi av det umodifiserte X-skjermbildet til en fil og deretter konvertere den til en generell videofil. Hvilke kommandoer vil jeg bruke for å gjøre dette på et Kubuntu-system? (Rediger: Han sa noe om å feste en skjermport til en fil.) Hva er det beste alternativet for en skjermopptak av utmerket kvalitet som ikke er avhengig av rask maskinvare, hvis ikke mulig?

Bakgrunn: Jeg prøvde å bruke avconv med -f x11grab og noen GUI-programmer. Uansett hva jeg prøver, har den resulterende videoen enten gjenstander / uskarphet eller er hakkete (mangler bilder). Dette skyldes sannsynligvis CPU / minnebegrensninger.

Mål:

  • Videokvaliteten må ikke være merkbart forskjellig fra å se økten direkte på en skjerm, fordi formålet er å demonstrere en animert applikasjon.
  • Den endelige videoen må være i et vanlig format som kan sendes til Windows-brukere og brukes på nettet. Jeg tror H.264 MP4 skal fungere.
  • Løsningen skal ikke forutsette mye forkunnskaper. Jeg er kjent med kommandolinjen og grunnleggende Linux-kommandoer, men jeg lærer fortsatt Linux og vet ikke mye om videokodeker.

Det jeg allerede har prøvd:

  • Beste kommando så langt: ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi, og konverter deretter til mp4 med ffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4.
    • Bildekvaliteten er god, men på testsystemet mitt ligger datamaskinen. På et raskere målsystem lagrer det ikke, men rammer hoppes åpenbart over, noe som gjør videoen ikke veldig glatt .
    • Jeg prøver fortsatt å finne ut hvordan jeg kan redde grepet. avi-fil til SHM for å se om det hjelper.
  • Bruk av GUI-opptakere fra Istanbul og RecordMyDesktop
  • Enkel kommando: avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg ved hjelp av avconv versjon 0.8.3-4: 0.8.3-0ubuntu0.12.04.1
  • Legge til -codec:copy (mislykkes med: Requested output format "x11grab" is not a suitable output format)
  • Legge til -same_quant (gir god kvalitet, men er veldig hakkete / mangler mange bilder)
  • Legger til -vpre lossless_ultrafast (mislykkes med: Unrecognized option "vpre", Failed to set value "lossless_ultrafast" for option "vpre")
  • Legge til forskjellige verdier av -qscale
  • Legge til forskjellige verdier for -b
  • Legge til -vcodec h264 (utganger gjentatte ganger: Error while decoding stream #0:0, [h264 @ 0x8300980] no frame!)
    • Merk: h264 er oppført i utdata som DE h264 raw H.264 video format

Svar

Hvis harddisken din tillater det, kan du prøve å gjøre det på denne måten:

Skriv først ukomprimert fil:

ffmpeg -f x11grab -s SZ -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi 

her SZ er skjermstørrelsen din (f.eks. 1920×1080).

Etter det kan du komprimere den når som helst du vil:

ffmpeg -i grab.avi grab.mkv 

Selvfølgelig kan du endre komprimering, velge kodek og så på.

Kommentarer

  • Se også: unix.stackexchange.com/a/120001/26227
  • ubuntu 18.04 fungerer ikke ‘ t fungerer mislykkes:: 0.0: Ugyldig argument
  • @ user1325696, fungerer ganske bra. F.eks. ffmpeg -f x11grab -s 2560x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi

Svar

Jeg har hatt suksess med:

ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :1 \ -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \ video.mkv 

Hovedpunkter:

  • -qp 0: x264 lossless mode
  • -innstilt ultrafast: minste CPU-bruk, stor størrelse
  • -pix_fmt yuv444p: standard, men ffmpeg foreslår yuv420p, som er tapsfri

Tips: fange skjerm og webkameraoverlegg 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] Oppdatering for 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 bestemmer jeg skjermstørrelsen min?

Svar

Dette er en løsning, og sannsynligvis ikke «nesten perfekt» som det kan avhenge av nettverkshastighet eller andre faktorer som kan hindre videostrømmen.

Bruk VNC eller Teamviewer og koble fra den bærbare datamaskinen til den andre maskinen. Hvis du har en Windows- eller OSX-bærbar PC tilgjengelig, du har sannsynligvis verktøy som kan ta opp dette, og jeg tror teamviewer kan ta opp en økt selv. Det er enkelt å prøve, og du kan bestemme om kvaliteten er god nok.

Teamviewer har en tendens til å skalere, men jeg vet ikke om dette også skjer med innspilte økter.

VNC komprimerer eller skaleres ikke, og den bærbare / stasjonære skjermen trenger høyere oppløsning enn den andre maskinen. Kvaliteten er god. Kanskje kan VNC-visningen du bruker ta opp. Jeg er på Ubuntu nå, og standardvisningen kan ikke gjøre dette.

Skjermopptak for visning for et publikum eller på nettet – det er spesielle verktøy for dette som kan fange klikk, følge og zoome inn på musen, og har andre alternativer for å gjøre det tydeligere hva du gjør.Jeg foreslår at du tar en titt på dem også. Google for «programvare for skjermopptak».

Svar

Har du prøvd rfbroxy ?

Jeg bruker den til å ta opp X11-skjermøkter.

Du kan bruke den i en modus der den bare tar opp et bilde, hvis det er ENDRING .

−-type=WHAT WHAT = skjerm er til og med standard, ifølge man-siden.

Kommentarer

  • At ‘ er interessant. Hvordan gjør du det?
  • @GunarGessner bør være standardadferd. En alternativ metode er å reagere på mus / keyborad hendelser. Dette kan bli enda bedre hvis du har en klokke på skjermen og ikke vil lage et bilde når bare den klokken endrer seg …

Svar

Jeg bruker Camtasia til å spille inn spillvideo og video på nettet. Jeg brukte også fraps videoopptaker før, men fps faller under avspilling. Camtasia gir høyere fps, men det eneste plagsomme problemet er at hver gang jeg må konvertere utgangen .CAMREC til avi som du kan se i skriv inn lenkebeskrivelse her skriv inn lenkebeskrivelse her . .Camrec er det proprietære formatet til camtasia og kan ikke spilles på noen tredjepartsspillere som Windows Media Player og vlc.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *