Gnome 3.10 ScreenCast + Audio no Arch

5

Estou tentando gravar minha área de trabalho (incluindo áudio) no Gnome 3.10 no Arch Linux com o gravador de tela interno ( Ctrl + Alt + Shift + R ). De acordo com este post (e outros semelhantes soluções que podem ser encontradas na Internet), eu tentei aplicar as configurações do gconf

gsettings set org.gnome.shell.recorder pipeline "queue ! videorate ! vp8enc quality=10 speed=2 ! mux. pulsesrc ! audio/x-raw-int ! queue ! audioconvert ! vorbisenc ! mux. webmmux name=mux"

mas recebo o seguinte erro:

No such schema 'org.gnome.shell.recorder'

Navegando com dconf-editor , vejo que org.gnome.shell.recorder na verdade não está lá e não encontrei nada parecido ... Como posso gravar minha área de trabalho no shell do gnome 3.10, incluindo áudio interno (não mic)?

EDIT: Também gostaria de não incluir o cursor do mouse durante a gravação.

    
por lviggiani 04.03.2014 / 12:20

2 respostas

6

Essa chave / esquema foi removido em gnome-shell ≥ 3.10 para que as soluções encontradas na Internet não funcionem mais.
Ray Strode, gnome dev 1 :

I've had a couple of people ask me if there's a way to do this in gnome-shell 3.10 and later and I haven't had a good answer. It's complicated by the fact that g-s-d now handles starting things and the org.gnome.shell.recorder schema has gone away.

A sugestão de Ray lá (atribua um atalho para o comando gjs ) é bem legal, mas o seu forro está faltando alguns js coisas. Eu tive que substituir o %T em threads=%T por um número (por exemplo, 2 ) para que funcionasse. Além disso, observe que o nome do arquivo .webm resultante não possui registro de data e hora, portanto, as execuções subseqüentes substituirão a existente se você não a renomear. Por fim, verifique se XDG_VIDEOS_DIR está definido em ~/.config/user-dirs.dirs , caso contrário, o comando não funcionará (erros com cannot open output file ).
De qualquer forma, voltando à sua pergunta, parâmetros de conversão de tela agora são codificados no gnome-shell ( shell-recorder.c ) por exemplo:

#define DEFAULT_PIPELINE "vp9enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux"

ou

shell_recorder_init (ShellRecorder *recorder)
{
....
recorder->draw_cursor = TRUE;

e, até onde eu sei, a única maneira de alterá-los seria por meio de uma extensão como

EasyScreenCast

(código-fonte aqui ) que permite personalizar todas as configurações (incluindo draw-cursor ). Funciona bem, eu só tive que adicionar minha gnome-shell versão, por exemplo 3.16.1 - para metadata.json e este personalizado gstreamer pipeline:

vp8enc  min_quantizer=10 max_quantizer=10 cpu-used=2 deadline=1000000  threads=2 ! queue ! mux. pulsesrc ! queue !  audioconvert ! vorbisenc ! queue ! mux. webmmux name=mux

via Tweak-tool > Extensões > Easyscreencast > Opções de screencast :

Alémdisso,umaformatrivialdescreencast+áudiointernoévialinhadecomando.Tudoquevocêprecisaéespecificarafontedeentradaparagravaçãodesom-sejacompacmd(cli)oucompavucontrol(gui)eusegst-launchparagravar.Então,primeiropegueonomedafontedeentradaterminandocom.monitor(quepodegravaroáudiodasuaplacadesom):

pacmdlist-sources|sed-n's/name:<\(.*\.monitor\)>//p'alsa_output.pci-0000_00_1b.0.analog-stereo.monitor

e,emseguida,execute:

pacmdset-default-source"alsa_output.pci-0000_00_1b.0.analog-stereo.monitor"
gst-launch-1.0 ximagesrc ! videoconvert ! queue ! videorate ! vp8enc  min_quantizer=10 max_quantizer=10 cpu-used=2 deadline=1000000  threads=2 ! queue ! mux. pulsesrc ! queue !  audioconvert ! vorbisenc ! queue ! mux. webmmux name=mux ! filesink location=screencast.webm

Para interromper a gravação, volte ao terminal e pressione Ctrl + C .

1: fonte

    
por 21.04.2015 / 02:05
3

Com base na resposta don_crissti, criei um script bash para automatizar essa tarefa.

Aqui está o script:

#!/bin/bash

if [ -z $1 ]; then
    echo "usage: screencast <outfile>"
    exit 1
fi

fname=$1
audio=$(pacmd list-sources | sed -n 's/\s*name: <\(.*\.monitor\)>//p')

pacmd set-default-source "$audio"

echo "Screencast started, to stop it come back to terminal and hit ctrl+c..."

gst-launch-1.0 ximagesrc \
    ! videoconvert \
    ! queue \
    ! videorate \
    ! vp8enc  min_quantizer=10 max_quantizer=10 cpu-used=2 deadline=1000000  threads=2 \
    ! queue \
    ! mux. pulsesrc \
    ! queue \
    !  audioconvert \
    ! vorbisenc \
    ! queue \
    ! mux. webmmux name=mux \
    ! filesink location=$fname > /dev/null

echo
echo "Screencast saved as $fname"

Uso:

$ ./screencast out_file_name.webm

Todos os créditos vão para don_crissti. Por favor vote sua resposta!

    
por 23.04.2015 / 13:52