Qualcuno mi ha suggerito di indirizzare una copia del display X non modificato in un file e successivamente di convertire quel file in un file video generico. Quali comandi dovrei usare per farlo su un sistema Kubuntu? (Modifica: ha detto qualcosa riguardo al collegamento di una porta display a un file.) Se non è possibile, qual è la mia migliore opzione per una registrazione dello schermo di qualità eccellente che non dipenda dallhardware veloce?

Background: ho provato a usare avconv con -f x11grab e alcuni programmi GUI. Tuttavia, indipendentemente da ciò che provo, il video risultante presenta artefatti / sfocatura o è discontinuo (fotogrammi mancanti). Ciò è probabilmente dovuto a vincoli di CPU / memoria.

Obiettivi:

  • La qualità del video non deve essere notevolmente diversa dal vedere la sessione direttamente su uno schermo, perché lo scopo è dimostrare un applicazione.
  • Il video finale deve essere in un formato comune che può essere inviato agli utenti Windows e utilizzato sul Web. Penso che H.264 MP4 dovrebbe funzionare.
  • La soluzione non dovrebbe presupporre una conoscenza preliminare. Conosco la riga di comando e i comandi di base di Linux, ma sto ancora imparando Linux e non so molto sui codec video.

Quello che ho già provato:

  • Il miglior comando finora: ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi, quindi converti in mp4 con ffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4.
    • La qualità delle immagini è ottima, ma nel mio sistema di prova è in ritardo rispetto al computer. Su un sistema di destinazione più veloce non è in ritardo, ma i fotogrammi vengono ovviamente saltati, rendendo il video non molto fluido .
    • Sto ancora cercando di capire come salvare il grab. avi in SHM per vedere se questo aiuta.
  • Utilizzo dei registratori GUI Istanbul e RecordMyDesktop
  • Comando semplice: avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg utilizzando avconv versione 0.8.3-4: 0.8.3-0ubuntu0.12.04.1
  • Laggiunta di -codec:copy (non riesce con: Requested output format "x11grab" is not a suitable output format)
  • Aggiunta di -same_quant (si ottiene unottima qualità, ma è molto instabile / mancano molti fotogrammi)
  • Aggiunta di -vpre lossless_ultrafast (non riesce con: Unrecognized option "vpre", Failed to set value "lossless_ultrafast" for option "vpre")
  • Aggiunta di vari valori di -qscale
  • Aggiunta di vari valori di -b
  • Aggiunta di -vcodec h264 (restituisce ripetutamente: Error while decoding stream #0:0, [h264 @ 0x8300980] no frame!)
    • Nota: h264 è elencato in output come DE h264 raw H.264 video format

Risposta

Se il tuo HDD lo consente, puoi provare a farlo in questo modo:

Prima scrivi un file non compresso:

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

qui SZ è la dimensione del display (ad es. 1920×1080).

Dopodiché puoi comprimerlo in qualsiasi momento tu voglia:

ffmpeg -i grab.avi grab.mkv 

Ovviamente puoi cambiare la compressione, selezionare il codec e così via su.

Commenti

  • Vedi anche: unix.stackexchange.com/a/120001/26227
  • ubuntu 18.04 non ‘ t il lavoro fallisce:: 0.0: argomento non valido
  • @ user1325696, funziona abbastanza bene. Per esempio. ffmpeg -f x11grab -s 2560x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi

Risposta

“Ho avuto successo con:

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

Punti chiave:

  • -qp 0: modalità lossless x264
  • -preset ultrafast: utilizzo della CPU più piccolo, dimensioni grandi
  • -pix_fmt yuv444p: il valore predefinito, ma ffmpeg suggerisce yuv420p, che è lossy

Suggerimento: cattura schermo e webcam overlay con:

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

[modifica 20180418] Aggiornamento per Gnome Shell e 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() 

Commenti

  • come posso determino la dimensione dello schermo?

Risposta

Questa è una soluzione alternativa e probabilmente non “quasi perfetta” come può dipendere dalla velocità di rete o da altri fattori che possono ostacolare il flusso video.

Usa VNC o Teamviewer e connettiti dal tuo laptop o desktop allaltra macchina. Se hai un laptop Windows o OSX disponibile, yo Probabilmente hai strumenti in grado di registrare questo e credo che teamviewer possa registrare una sessione stessa. È facile da provare e puoi decidere se la qualità è abbastanza buona.

Teamviewer tende a ridimensionarsi, ma non so se ciò accada anche con le sessioni registrate.

VNC non si comprime né si ridimensiona e il monitor del tuo laptop / desktop necessita di una risoluzione maggiore di quella dellaltra macchina. La qualità è buona. Forse il visualizzatore VNC che usi può registrare. Sono su Ubuntu ora e il visualizzatore standard non può farlo.

Registrazione dello schermo per la visualizzazione a un pubblico o sul Web: ci sono strumenti speciali per questo che possono catturare i clic, seguire e ingrandire il mouse e avere altre opzioni per rendere più chiaro ciò che stai facendo.Ti consiglio di dare unocchiata anche a quelli. Google per “software di registrazione dello schermo”.

Risposta

Hai provato rfbroxy ?

Lo uso per registrare sessioni di schermate X11.

Puoi usarlo in una modalità in cui registra solo unimmagine, se cè un CAMBIAMENTO .

−-type=WHAT WHAT = schermo è persino predefinito, secondo la pagina man.

Commenti

  • That ‘ è interessante. Come si fa?
  • @GunarGessner dovrebbe essere il comportamento predefinito. Un metodo alternativo consiste nel reagire agli eventi mouse / keyborad. Questo può essere anche meglio se hai un orologio sullo schermo e non vuoi fare una foto quando cambia solo quellorologio …

Rispondi

Sto usando Camtasia per registrare il mio video di gioco e il video online. Ho anche usato il videoregistratore fraps prima, ma gli fps diminuiscono durante la riproduzione. Camtasia fornisce un fps più alto, ma lunico problema è che ogni volta che devo convertire loutput .CAMREC in avi, come puoi vedere in inserisci qui la descrizione del link inserisci qui la descrizione del link . .Camrec è il formato proprietario di camtasia e non può essere riprodotto su lettori di terze parti come Windows Media Player e vlc.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *