Per coloro che non lo sanno, a screencast è una registrazione digitale dell'output dello schermo del computer, a volte contenente narrazione audio.
En Linux, ce ne sono diversi strumenti per rendere screencast. Tuttavia, quelli che preferiscono farlo consumando risorse minime non possono smettere di leggere questo articolo. |
Utilizzando 2 strumenti (ffmpeg per catturare lo schermo e xwininfo per ottenere le coordinate e le dimensioni della finestra da registrare) sono riuscito a realizzare screencast utilizzando risorse minime e ottenendo risultati ottimali.
Lo script per avviare lo screencast
#! / Bin / bash
# Ottieni le coordinate e le dimensioni della finestra selezionata
# Ciò esclude la decorazione della finestra.
xywh non impostato
eval $ (xwininfo -frame |
sed -n -e "s / ^ + X assoluta in alto a sinistra: + ([0-9] +). * / x = 1 / p"
-e "s / ^ + Y assoluto in alto a sinistra: + ([0-9] +). * / y = 1 / p"
-e "s / ^ + Larghezza: + ([0-9] +). * / w = 1 / p"
-e "s / ^ + Altezza: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # che la larghezza è un multiplo di 2, altrimenti ffmpeg si lamenta
WIN_XY = $ x "," $ y # formatta le coordinate XY
WIN_GEO = $ w "x" $ h # dimensione della finestra di formato
# notify-send mostrerà un messaggio che indica l'inizio dello screencast.
# esegui ffmpeg con i parametri che si adattano alla tua configurazione.
notifica-invio "Avvio screencast ..." && ffmpeg -f alsa -i hw: 0 -f x11grab -r 25 -s $ WIN_GEO -i: 0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264 -preset ultrafast - crf 0 -threads 0 save.mp4
Non devi comprendere appieno tutto ciò che fa questo script. Basta seguire i commenti. Tuttavia, è molto probabile che tu debba modificare alcuni parametri nella riga in cui viene eseguito ffmpeg per adattarli alla configurazione della tua macchina.
Architettura audio
1) Se usi OSS, sostituisci -f alsa -i hw: 0 con -f oss -i / dev / dsp
2) Se usi solo ALSA, devi usare i parametri presenti nello script (-f alsa -i hw: 0). Per determinare il numero dopo hw: puoi eseguire aplay -l e scegliere il numero della scheda audio appropriata.
3) Se usi Pulse Audio (Ubuntu e derivati lo usano), usa i parametri -f alsa -ac 1 -i pulse.
FPS
-r 25 indica gli fps (fotogrammi al secondo o fotogrammi al secondo) a cui si desidera registrare. 25 è una buona opzione.
Codec audio, video e di sincronizzazione
-acodec libmp3lame è il codec audio. Ho scelto di registrarlo in mp3. Puoi usare qualsiasi altro.
-async 1 consente la sincronizzazione dell'audio con il video.
-vcodec libx264 -preset ultrafast -crf 0 -threads 0, dice a ffmpeg che il codec video da usare è x264 e che il preset è ultraveloce (c'è veloce, lento, ecc.), altrimenti non registrerà correttamente alla quantità desiderata di fps. Il parametro -crf 0 indica il livello di compressione (minore è la compressione, minore è la compressione). Infine, i thread 0 indica il numero di thread da utilizzare, quando si passa 0 ffmpeg lo calcola automaticamente. Come per le impostazioni audio, puoi scegliere altre opzioni.
Tutte queste impostazioni sono state quelle che mi hanno dato i migliori risultati: un file relativamente piccolo, una buona qualità video, con audio sincronizzato e senza ritardi. Tuttavia, ti consiglio di immergerti nella documentazione di ffmpeg per scoprirne altri.
Lo script per terminare lo screencast
#! / Bin / bash
notify-send "Termina screencast ..." && killall ffmpeg
ffcast
Cercando informazioni per scrivere le sceneggiature, ho scoperto che qualcuno aveva un'idea molto simile alla mia. Ffcast è uno script che utilizza gli stessi strumenti (ffmpeg e xwininfo). Lo menziono perché alcuni potrebbero trovare più conveniente usare questo script.
In Arch e derivati, ho aperto un terminale e ho eseguito:
yaourt -S ffcast
Il resto puoi scaricarlo da qui.
Finire…
Dopo aver creato e salvato gli script salvati nella tua cartella HOME, devi concedergli i permessi di esecuzione. Supponendo che start_screencast e finish_screencast siano chiamati, esegui i seguenti comandi in un terminale:
chmod + x start_screencast
chmox + x terminate_screencast
Infine, resta solo da assegnare ciascuno degli script a 2 scorciatoie (scorciatoie) che sono comode per te. In questo modo, gli script verranno eseguiti quando si preme la combinazione di tasti selezionata.
Da quando ho conosciuto Linux, mi sono chiesto esattamente la stessa cosa che è stata appena descritta in questo commento. sarebbe un progetto ambizioso.
Il tutorial mi sembra buono, ma come si fa a dire qualcosa di facile per utenti inesperti? Beh, quello che mi sembra il migliore è KAzam, è facile da usare e secondo me non consuma molto !!!!! Saluti
Non tutto. Inoltre, credo sinceramente che non esista una buona interfaccia per lo screencasting (che ha tutto ciò di cui ho bisogno), che funzioni con i formati che desidero e che consuma poche risorse.
Nel mio caso, il terminale è l'opzione migliore. Non pretendo che sia per tutti, ma è bene condividere ciò che si sta imparando, giusto?
Saluti! Paolo.
È sbagliato che se vogliamo espandere il sistema operativo sotto GNU / linux consigliamo agli utenti di fare quel genere di cose nel terminale le persone vogliono qualcosa di facile e funzionale
@ingjorgerocha
A livello di server uso anche solo console, nessun ambiente grafico ... è il più pratico e da lì faccio tutto (automatizzo i backup ad esempio come dici bene ...), ma, su una macchina che hai come un server ... cosa vuoi fare uno screencast su di esso? hehe .. Ffmpeg è molto molto valido ma penso che il problema della console dovrebbe andare in secondo piano a seconda di quali distribuzioni.
Dato che abbiamo così tanta varietà di distribuzioni nel mondo Linux, e la console è abbastanza perfezionata per funzionare correttamente in tutte le situazioni (è quasi infallibile piuttosto ..), dovremmo iniziare a migliorare le app per il pubblico, iniziare a lucidare, codificare e l'aspetto grafico ... che è ciò che viene richiesto oggi.
Abbiamo progetti Linux abbastanza arcaici e abbandonati, sappiamo tutti che ... un buon esempio, per me, è il motivo per cui non esiste più un formato di file eseguibile che ti permetta di prendere un programma su una pendrive e semplicemente fare doppio clic e un semplice installazione a parte la necessità di repository (e quindi di rete) .. niente APTonCD, anche questo è obsoleto .. abbiamo bisogno di uno standard, un ".tux" o qualcosa di simile a un ".exe" di Windows. È per problemi di spazio? .. in Windows, l'eseguibile di Gimp occupa 72mb e lo stesso per Linux (.deb) occupa 4,2mb ... come mai? Bene, perché il programma Gimp stesso, in Windows è accompagnato da tutte le librerie per assicurarsi che il programma funzioni una volta installato ... in Linux potremmo avere qualcosa di uguale, l'eseguibile occuperebbe di più, perderemmo il vantaggio di dimensioni ma guadagniamo in portabilità (e di più con i ricordi così grandi che portiamo oggi in tasca ... che differenza fa trasportare 4 MB rispetto a 72 MB se quasi tutti noi portiamo pendrive da 8 GB?)
Tutte queste cose devono essere pulite ... il sistema è stabile, ha un ottimo supporto e compatibilità con i driver ... perché non miglioriamo quello che c'è? ... se qualcuno è incoraggiato, iniziamo il progetto eseguibile ehe.!
Uhm ... beh, le persone che amano la console non la amano perché, caro amico, la adorano perché con essa si possono automatizzare molte cose, ad esempio a livello di server (anche se non è così).
Onestamente, la console è molto utile ... ma ci sono programmi con qualche GUI che usano ffmpeg e sono più attraenti e costruttivi per i possibili nuovi utenti Linux ... Consiglio RecordMyDescktop che è nei repository di quasi tutte le distribuzioni. Lo so ci sono molte persone che amano la console, ma questo deve essere finito con il più possibile ... Linux deve essere concentrato sul desktop e un possibile utente finale che fondamentalmente lo desidera, un'interfaccia grafica e, se possibile, bella e pratica ... è così difficile? che non possiamo lasciarci calpestare .. Linux ha un enorme potenziale e dobbiamo spremerlo fuori!
Nonostante tutto, è un ottimo programma! Buon post ^^
La verità è che sì, è fantastico condividere ciò che si sta imparando ... Questa non è una critica nel senso svalutante del post, ma una critica al motivo per cui più persone non usano Linux ... qualunque cosa dicano, il console andrebbe ridotta ad un secondo piano per lasciare il posto alle dotazioni grafiche (questo non vuol dire che sia esclusa la possibilità di fare cose da console, ma che chi vuole usarla e chi no, beh, no ..)
Alla fine della giornata, ciò che vende, ciò che colpisce è la facilità di utilizzo di un sistema operativo ... internamente Linux è inarrestabile, ma se a quella facilità d'uso e interfacce intuitive si aggiungono ... conquistiamo gli utenti e questo vantaggio lo sviluppo della community, i diversi programmi, il supporto di aziende di videogiochi e quindi hardware specifico (diciamo schede grafiche ..), la creazione di software specializzato che attualmente esiste solo su Windows / Mac ... Non lo so, penso questo è in piano 15M ... tutto molto bello ma ora è il momento di cambiare un po 'rotta ... e dico un po'!
Bene, il progetto eseguibile standard in Linux è ancora valido, se qualcuno lo legge e vuole che iniziamo a collaborare, ecco la mia email, non sto nascondendo hehe (whysoyjuan@gmail.com)
Saluti e spero di vedere altri commenti qui ... che siano critiche o elogi, il fatto è che dobbiamo parlare.
Buona! Buon contributo.
Abbraccio! Paolo.
Di cosa tratta questo programma ... attenzione, non sono molto informato su questo!
Generalmente, viene utilizzato per convertire i video. In questo caso, dimostriamo come utilizzarlo per registrare il desktop e realizzare un video tutorial, ad esempio.
Abbraccio! Paolo.
Grazie. Nella risoluzione, ad esempio 1280X800, la X deve essere maiuscola affinché il comando ffmpeg funzioni.