Como gravar um vídeo em execução na tela? (captura de tela)

3

Estou tentando capturar vídeo e áudio da tela, alto-falantes e microfone. Eu gostaria de fazer isso com um comando de linha de comando.

Até agora,

ffmpeg -f x11grab -r 25 -s 800x600 -i :0.0 /tmp/outputFile.mpg

grava vídeo e

ffmpeg -f alsa -ac 2 -i pulse -acodec libmp3lame -ab 128k ~/Videos/outpulse.mp3

grava o áudio do microfone.

Ambos os comandos podem ser combinados em:

ffmpeg -f x11grab -r 25 -s 800x600 -i :0.0 -f alsa -ac 2 -i pulse -acodec libmp3lame -ab 128k /tmp/outputFile.mpg

, que registra a tela e o microfone no mesmo arquivo. Isso pode ser útil para tutoriais.

Como posso adaptar o comando acima para gravar nos alto-falantes? Ou gravar microfone + alto-falante ao mesmo tempo? Por exemplo, para uma sessão de VoIP. Obviamente, o áudio dos alto-falantes é gravado pelo microfone, mas isso resulta em uma qualidade de som muito baixa.

As opções

avconv também são bem-vindas, mas não quero nenhuma ferramenta que não seja padrão no Linux, baseada em GUI ou não nos repositórios.

    
por Quora Feans 11.03.2014 / 01:33

1 resposta

1

Se você estiver disposto a mudar para pulseaudio, um script como esse funcionará:

#!/usr/bin/bash

# video information
INRES="1920x1080"                   
OUTRES="1280x720"
FPS="24"  
QUAL="fast"                                 
FILE_OUT="$1"

#audio information
PULSE_IN="alsa_input.pci-0000_00_1b.0.analog-stereo"
PULSE_OUT="alsa_output.pci-0000_00_1b.0.analog-stereo.monitor"

ffmpeg -f x11grab -s "$INRES" -r "$FPS" -i :0.0 \
    -f pulse -i "$PULSE_IN" -f pulse -i "$PULSE_OUT" \
    -filter_complex amerge \
    -vcodec libx264 -crf 30 -preset "$QUAL" -s "$OUTRES" \
    -acodec libmp3lame -ab 96k -ar 44100 -threads 4 -pix_fmt yuv420p \
    -f flv "$FILE_OUT"

Os $PULSE_IN e $PULSE_OUT vars são os nomes da fonte de entrada (microfone) e da fonte do monitor de saída (alto-falante). Pulseaudio tem coisas chamadas "fontes de monitor" que permitem gravar a saída do alto-falante. Você pode encontrar os nomes das fontes com o comando pactl list sources | grep 'Name:'

Infelizmente, não sei como ativar uma fonte de mixagem estéreo em puro alsa, então o pulso provavelmente é sua melhor aposta.

    
por 18.10.2014 / 08:35