Como facer un screencast usando ffmpeg

Para os que non o saiban, a cribado é unha gravación dixital da saída da pantalla do ordenador, que ás veces contén narración de audio.

En Linux, hai varias ferramentas facer fundición de pantalla. Non obstante, os que prefiren facelo consumindo recursos mínimos non poden deixar de ler este artigo.


Empregando 2 ferramentas (ffmpeg para capturar a pantalla e xwininfo para obter as coordenadas e dimensións da xanela a gravar) conseguín facer retransmisións utilizando recursos mínimos e obtendo resultados óptimos.

O guión para iniciar o screencast

#! / bin / bash

# Obter as coordenadas e o tamaño da xanela seleccionada
# Isto exclúe a decoración de fiestras.
  desestablecer xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + X superior esquerdo esquerdo absoluto: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Y superior esquerdo esquerdo: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Ancho: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Altura: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # que o ancho é múltiplo de 2, se non, ffmpeg quéixase
WIN_XY = $ x "," $ y # coordina XY en formato
WIN_GEO = $ w "x" $ h # tamaño da xanela do formato
# notification-send amosará unha mensaxe indicando o comezo do screencast.
# execute ffmpeg cos parámetros que se axusten á súa configuración.
notificar-enviar "Iniciar 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 -fíos 0 save.mp4

Non tes que entender completamente todo o que fai este guión. Basta con seguir os comentarios é suficiente. Non obstante, é moi posible que teña que cambiar algúns parámetros na liña onde se executa ffmpeg para axustalos á configuración da súa máquina.

arquitectura de audio

1) Se usa OSS, substitúa -f alsa -i hw: 0 por -f oss -i / dev / dsp

2) Se só usa ALSA, ten que empregar os parámetros que aparecen no script (-f alsa -i hw: 0). Para determinar o número despois de hw: pode executar aplay -l e escoller o número de tarxeta de son axeitado.

3) Se usa Pulse Audio (Ubuntu e os derivados usan isto), use os parámetros -f alsa -ac 1 -i pulse.

FPS

-r 25 indica os fps (fotogramas por segundo ou fotogramas por segundo) nos que desexa gravar. 25 é unha boa opción.

Códec de audio, vídeo e sincronización

-acodec libmp3lame é o códec de audio. Decidín gravalo en mp3. Podes usar calquera outro.

-async 1 permite a sincronización de audio con vídeo.

-vcodec libx264 -preset ultrafast -crf 0-threads 0, dille a ffmpeg que o códec de vídeo a usar é x264 e que o preajustado é ultrarrápido (hai rápido, lento, etc.), se non, non gravará correctamente na cantidade desexada de fps. O parámetro -crf 0 indica o nivel de compresión (canto menor é a compresión, menor é a compresión). Finalmente, os fíos 0 indican o número de fíos a usar, ao pasar 0 ffmpeg calcúlano automaticamente. Do mesmo xeito que coa configuración de audio, podes escoller outras opcións.

Todas estas opcións foron as que me deron mellores resultados: un ficheiro relativamente pequeno, unha boa calidade de vídeo, con audio sincronizado e sen atrasos. Non obstante, recoméndovos mergullar na documentación ffmpeg para descubrir outras.

O guión para rematar o screencast

#! / bin / bash
notificar-enviar "Finalizando screencast ..." && killall ffmpeg

Para que ambos scripts funcionen, debe ter instalado un aviso-envío. Todas as distribucións derivadas de Ubuntu deberían vir con esta ferramenta instalada. En Arch e derivados: sudo pacman -S libnotify.

ffcast

Buscando información para escribir os guións, descubrín que alguén tiña unha idea moi similar á miña. Ffcast é un script que usa as mesmas ferramentas (ffmpeg e xwininfo). Menciono porque algúns poden considerar máis cómodo usar este script.

En Arch e derivados, abrín un terminal e executei:

yaourt -S ffcast

O resto, podes descargalo desde aquí.

Para rematar…

Unha vez creados e gardados os scripts gardados no cartafol HOME, ten que concederlle permisos de execución. Supoñendo que se chaman start_screencast e finish_screencast, execute os seguintes comandos nun terminal:

chmod + x start_screencast
chmox + x terminar_screencast

Finalmente, só queda asignar cada un dos scripts a 2 atallos (atallos) que sexan cómodos para vostede. Deste xeito, os scripts executaranse cando prema a combinación de teclas seleccionada.


O contido do artigo adhírese aos nosos principios de ética editorial. Para informar dun erro faga clic en aquí.

12 comentarios, deixa os teus

Deixa o teu comentario

Enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados con *

*

*

  1. Responsable dos datos: Miguel Ángel Gatón
  2. Finalidade dos datos: controlar SPAM, xestión de comentarios.
  3. Lexitimación: o seu consentimento
  4. Comunicación dos datos: os datos non serán comunicados a terceiros salvo obrigación legal.
  5. Almacenamento de datos: base de datos aloxada por Occentus Networks (UE)
  6. Dereitos: en calquera momento pode limitar, recuperar e eliminar a súa información.

  1.   Michael Sp dixo

    Desde que coñecín Linux, pregunteime exactamente o mesmo que se acaba de detallar neste comentario. sería un proxecto ambicioso.

  2.   pmf dixo

    O tutorial paréceme bo pero como dis que é algo doado para os usuarios novatos? Ben, o que me parece mellor é KAzam, é fácil de usar e non consume moito na miña opinión !!!! Graciñas

  3.   imos usar linux dixo

    Non todo. Ademais, sinceramente creo que non hai ningunha boa interface para a captura de pantalla (que ten todo o que necesito), que funcione cos formatos que desexo e que consome poucos recursos.

    No meu caso, o terminal é a mellor opción. Non pretendo que sexa para todos, pero é bo compartir o que se está aprendendo, non?

    Ánimo! Paul.

  4.   Jorge Rocha dixo

    Está mal que se queremos expandir o sistema operativo baixo GNU / linux aconsellemos aos usuarios que fagan ese tipo de cousas no terminal as persoas queiran algo sinxelo e funcional

    @ingjorgerocha

  5.   por que soio dixo

    A nivel de servidor tamén uso só consola, sen contorno gráfico ... é o máis práctico e fago todo desde aí (automatizar copias de seguridade, por exemplo, como ben dis ...), pero nunha máquina que tes como un servidor ... para que queres facer un screencast? hehe..ffmpeg é moi moi válido pero creo que o problema da consola debería pasar a segundo plano dependendo de que distribucións.
    Dado que temos moita variedade de distros no mundo de Linux e a consola está suficientemente perfecta para funcionar correctamente en todas as situacións (é case infalible ..), deberiamos comezar a mellorar as aplicacións para o público, comezar a pulir, codificar e aspecto gráfico ... que é o que se demanda hoxe.
    Temos proxectos Linux bastante arcaicos e abandonados, todos sabemos que ... un bo exemplo, para min, é a razón pola que xa non hai un formato de ficheiro executable que che permita levar un programa nun pendrive e simplemente facer dobre clic e un simple instalación ademais de requirir repositorios (e polo tanto rede) .. sen APTonCD, isto tamén está anticuado .. necesitamos un estándar, un ".tux" ou algo similar a un ".exe" de Windows. ¿É cuestión de espazo? .. en Windows, o executable de Gimp ocupa 72mb e o mesmo para Linux (.deb) ocupa 4,2mb ... por que é isto? Ben, porque o propio programa Gimp, en Windows vai acompañado de todas as bibliotecas para asegurarnos de que o programa funciona cando está instalado ... en Linux poderiamos ter algo igual, o executable ocuparía máis, perderiamos a vantaxe de tamaño pero gañamos en portabilidade (e máis cos recordos tan grandes que hoxe levamos nos petos ... que diferenza ten levar 4 MB que 72 MB se case todos levamos pendrives de 8 GB?)
    Todas estas cousas deben ser pulidas ... o sistema é estable, ten un gran soporte e compatibilidade co controlador ... por que non melloramos o que hai? ... se alguén se anima, iniciamos o proxecto executable jeje.!

  6.   hidabe dixo

    Uhm ... ben, á xente que ama a consola non a adoran porque querido amigo, encántana porque con ela pódense automatizar moitas cousas, por exemplo, a nivel de servidor (aínda que non é así).

  7.   por que soio dixo

    Sinceramente, a consola é moi útil ... pero hai programas con algunha GUI que usan ffmpeg e son máis atractivos e construtivos para posibles novos usuarios de Linux ... Recomendo RecordMyDescktop que está nos repositorios de case todas as distros. Sei hai moita xente que ama a consola, pero isto debe rematarse co máximo posible ... Linux debe estar centrado no escritorio e un posible usuario final que fundamentalmente o desexe, unha interface gráfica e, se é posible, fermosa e práctica. ¿é tan difícil? que non podemos deixarnos pisar ... Linux ten un enorme potencial e debemos espremelo!
    A pesar de todo, é un programa estupendo. Bo post ^^

  8.   por que soio dixo

    A verdade é que si, é xenial compartir o que un está aprendendo ... Non se trata dunha crítica no sentido devaluador do post, senón de por que máis xente non usa Linux ... o que digan, o a consola debería reducirse a un segundo plano para dar paso ás instalacións gráficas (isto non significa que se descarta a posibilidade de facer cousas por consola, senón que quen queira usala e quen non, ben, non ..)
    Ao final do día, o que vende, o que chama a atención é a facilidade de operar un sistema operativo ... Linux é imparable internamente, pero se a iso lle engadimos facilidade de uso e interfaces intuitivas ... gañamos usuarios e iso beneficia. o desenvolvemento da comunidade, os diferentes programas, o apoio de empresas de videoxogos e polo tanto hardware específico (digamos tarxetas gráficas ...), creación de software especializado que actualmente só existe en Windows / Mac ... Non sei, eu creo que isto está no plan 15M ... todo moi bo pero agora toca cambiar un pouco de rumbo ... e digo un pouco!

    Ben, o proxecto executable estándar en Linux segue vixente, se alguén o le e quere que comecemos a colaborar, aquí está o meu correo electrónico, non me oculto jeje (whysoyjuan@gmail.com)

    Un saúdo e espero ver máis comentarios aquí ... sexan críticas ou eloxios, o certo é que temos que falar.

  9.   imos usar linux dixo

    Bo! Boa contribución.
    Abrazo! Paul.

  10.   Gerardo dixo

    De que vai este programa ... teña coidado, non son moi coñecedor disto.

    1.    usemos linux dixo

      Xeralmente, úsase para converter vídeos. Neste caso, demostramos como usalo para gravar o seu escritorio e facer un vídeo tutorial, por exemplo.
      Abrazo! Paul.

  11.   tarribalis dixo

    Grazas. Na resolución, por exemplo, 1280X800, o X debe ser maiúscula para que o comando ffmpeg funcione.