Sto usando cose del genere:
avconv -f x11grab -s 1024x768 -r 24 -i 0:0 -deadline realtime -b 5000000 -minrate 200000 -maxrate 40000000 recording-filename-000.webm
Dove:
-f x11grab
- applica il "formato" di acquisizione dello schermo.
-s 1024x768
è la risoluzione del file di input (aka area di acquisizione). Ad esempio è uguale alla risoluzione del desktop. Se inferiore, l'area di registrazione sarebbe a sinistra e in alto. In questo esempio ho usato l'area di registrazione 1024x768.
-r 24
- frequenza dei fotogrammi. Fondamentalmente, da 23 a 30 FPS utilizzati dai film reali per ottenere immagini di registrazione fluide. Tuttavia, per lo screencast potrebbe essere opportuno ridurlo per ottenere un'immagine migliore a bitrate più bassi. Ho usato 24 per fare la cattura dello schermo del gioco.
-i 0:0
è un suggerimento per usare display 0: 0 come sorgente (il dispositivo è in notazione xorg). Se hai solo 1 monitor e l'impostazione predefinita di Xorg, 0: 0 andrà bene la maggior parte delle volte.
-deadline realtime
- è un suggerimento per libvpx. Vogliamo l'acquisizione dal vivo. Vogliamo prestazioni in tempo reale. Quindi libvpx farà del suo meglio per codificare VP8 in REALTIME. Per fare ciò scambia in qualche modo la qualità con la velocità. Alla data velocità in bitrate sarà un po 'peggio di quanto non sarebbe in tempo reale. Ma la velocità di codifica salirebbe alle stelle. Quindi sul mio hardware può sgretolare 1024x768 a 24FPS, scene intense, senza far cadere alcun frame (si consiglia comunque una potente CPU). In questo esempio desideravo una cattura dal vivo di qualità decente con un buon FPS e un'area di acquisizione abbastanza ampia. Quindi l'utilizzo della CPU da parte del codec potrebbe essere un problema. Ecco perché questo suggerimento è davvero necessario per ottenere buoni risultati.
-b 5000000
- bitrate target in bit / secondo. Ho usato 5Mbit per ottenere un'immagine più o meno buona di scene abbastanza intense. Il codec proverà a mantenere la velocità media in bitrate del video vicina a questo valore. Più basso è questo valore, peggiore è la qualità e più piccolo è il file. Puoi sperimentare un po 'per avere idea di quale bitrate è buono per usi particolari. I servizi di condivisione video potrebbero convertire i video in caso di superamento. Se stai per utilizzare il proprio server, spetta a te occuparti del traffico. Se si effettua una riduzione inferiore, la qualità dell'immagine sarà scarsa. Sentiti libero di cambiare valore per avere un'idea di ciò che è meglio per te. I 5Mbit erano destinati alla cattura dal vivo più o meno piacevole di scene intense in giochi in cui non si può facilmente vedere che l'immagine è sovrapressa. Per catturare applicazioni fisse, in pratica avrai bisogno di molto meno.
-minrate
200000 - è un bitrate minimo consentito per il codec. A seconda della natura delle cose che vuoi catturare, a volte potresti voler forzare il bitrate minimo per mantenere una foto dall'aspetto ragionevole, qualunque cosa accada. A volte l'euristico del codec potrebbe ridurre il bitrate molto al di sotto dei valori che potresti desiderare, dando cattive immagini in alcune scene. Questa opzione consente di forzare il codec a mantenere il bitrate minimo anche se il codec ritiene che la scena sia semplice e che il bitrate possa essere eliminato. Un valore elevato di questo parametro può aumentare le dimensioni del file impedendo al codec di utilizzare bitrate più bassi.
-maxrate 40000000
- Questo valore controlla il bitrate massimo a raffica in scene intense. Ho usato un valore davvero elevato per consentire al codec di andare molto più in alto della media desiderata se ritiene che una velocità più elevata sia obbligatoria per mantenere una qualità decente in alcune scene. Per ottenere un'immagine di bell'aspetto in tutte le condizioni è preferibile impostare un valore abbastanza alto (40Mbit è una velocità simile a BlueRay e farà il trucco). D'altra parte, se stai per trasmetterlo in streaming utilizzando il tuo server, devi ridurre questo valore a costo di una qualità dell'immagine in scene intense. Altrimenti il server potrebbe non riuscire a far fronte al bitrate di scoppio desiderato, non essendo in grado di consegnarlo in tempo reale agli utenti. Quindi il giocatore dovrebbe affrontare buffer underrun (che è fastidioso). I servizi di condivisione video si prenderanno cura di loro stessi e di solito convertono i video in bassi per abbassare i parametri a scapito della qualità delle immagini.
recording-filename-000.webm
- è un nome file di output. Se usi l'estensione .webm, ffmpeg / avconv sono abbastanza intelligenti da capire che vuoi WEBM. È così semplice - avconv indovina il formato desiderato dal nome file. Quindi i file .WEBM sono WEBM all'interno.
Ecco fatto: questo comando dirige la registrazione dello schermo su file webm. Non sono necessarie conversioni extra ed libvpx
è suggerito che sia il più veloce possibile. Non viene emesso alcun suono poiché non esiste alcuna specifica per l'ingresso audio. Potrebbe essere o meno quello che vuoi. Per l'audio, è necessario specificare anche la sorgente di input per il flusso audio.
PS questo può sembrare un po 'complicato ma alla fine della giornata puoi capire che una taglia non può andare bene per tutti. Quindi, per ottenere un'immagine di bell'aspetto in tutte le situazioni, potresti davvero voler avere alcune maniglie per il codec usato e vuoi regolarle. Ffmpeg ti dà tutte le maniglie di cui potresti mai aver bisogno e molto di più. È un'arma pesante di conversione e codifica video. Quindi questo esempio è un buon punto di partenza per coloro che vogliono fare codifiche più o meno avanzate ed è pronto a sperimentare un po 'per ottenere risultati davvero decenti.