sexta-feira, 22 de junho de 2018

You Tube Parte 5


Neste artigo discorrerei sobre duas ótimas ferramentas para criação de vídeos: Mednafen (multiemulador) e Simple Screen Recorder.

Mednafen
Mednafen é um versátil multiemulador para o PCLinuxOS. Ele emula 10 sistemas diferentes, com diversos cores de emulação, sendo alguns exclusivos, enquanto outros foram incorporados ao projeto.

Systema Baseado no core:
Atari Lynx Handy
Game Boy Advance VisualBoyAdvance
Neo Geo Pocket Color Neopop
Nintendo Entertainment System FCE Ultra
Super Nintendo Entertainment System bsnes
Nintendo Virtual Boy Original. NEC V810 CPU core based on Reality Boy.
PC Engine Original. CD-ROM interface based on PC2e.
PC-FX Original. NEC V810 CPU core based on Reality Boy.
PlayStation Original.
WonderSwan Color Cygne
Sega Genesis Genesis Plus
Sega Master System and Game Gear SMS Plus
Sega Saturn Original.



Não é, no entanto, um emulador qualquer: Mednafen tem características que o tornam único:
    • Suporte físico para joystick / gamepad.
    • Sistema de configuração de entrada versátil; atribuir vários botões físicos a um botão ou ação virtual.
    • Vários filtros gráficos e modos de dimensionamento.
    • Salvar estados.
    • Rebobinagem de jogos em tempo real.
    • Capturas de tela, salvas no formato PNG.
    • Gravação de filmes no formato QuickTime.
    • Registro de som no formato MS WAV.
    • Carregando jogos de arquivos compactados gzip e (pk) zip.
    • Reprodução em rede (utilizando um programa de servidor dedicado externo).
    • Suporte a trapaças (cheats) incorporado
    • Suporte a patches on the fly, para jogos individualmente.
O que nos interessa é a sua capacidade de gravar filmes de gameplay no formato Quick time (Apple MOV).

Para tanto, é necessário invocar o Mednafen pela linha de comando.

Então, para capturar um vídeo gameplay, o seguinte comando deve ser entrado por um terminal:

$ mednafen -qtrecord nome_do_video.mov arquivo de rom ou iso do jogo que se quer filmar.

Exemplo:

Para gravar um gameplay do Sonic, do Mega Drive, o comando seria mednafen -qtrecord sonic.mov sonic.gen

O vídeo do gameplay será gravado na pasta onde o Mednafen for invocado.

Agora, algumas configurações devem ser feitas, para ajustar a gravação ao hardware que se tem.

Abra o arquivo mednafen.cfg,  que fica na pasta .mednafen, na /home do usuário, com o editor de texto plano de sua preferência.

No arquivo aberto, procure pela linha qtrecord.vcodec.

Nesta linha é definido o codec que será usado na caputra. Há 3 opções possíveis:
    • raw
    • cscd
    • png

RAW: O formato raw é um codec rápido, computacionalmente, mas causará um tamanho de arquivo enorme e pode exceder a taxa de gravação sustentada do seu meio de armazenamento.

CSCD - CamStudio Screen Codec :
Um bom equilíbrio entre desempenho e taxa de compressão, mas, ele exige uma máquina bastante potente (um Corei3 no mínimo), e, vai depender também de qual sistema será emulado, os sistemas de 32 bits exigirão mais potência de processamento. Como exemplo, uma captura de 15 minutos gerou um arquivo de 10GB.

PNG:
Tem uma taxa de compressão melhor do que "cscd", mas exige muito mais CPU, ou seja, você precisará de uma CPU bem mais potente. Se estiver sem espaço no HD, e, com uma boa CPU, poderá ser uma opção.

O arquivo de vídeo resultante deverá ser processado com um conversor, como o Winff (ou qualquer outro conversor de vídeo) para adaptar o vídeo a uma resolução usável para ser editado posteriormente.


Simple Screen Recorder(SSR)
É um software de screencast baseado em Qt feito para sistemas operacionais Linux, que foi criado como uma alternativa mais simples para programas como ffmpeg / avconv e VLC.

É um fantástico screen recorder, muito melhor que o Record my desktop(é capaz de gravar telas OpenGL), e, muito leve em recursos, tanto que é melhor do que alguns métodos de captura nativos, de outros programas que já abordei nessa série de artigos, que, causam um certo LAG quando gravando, ou, os arquivos resultantes são muito grandes. SSR consegue uma ótima relação entre recursos usados e tamanho de arquivo gerado.

Agora, vamos focar nas configurações do SSR.

Nota: Vou indicar as configurações para melhor performance em máquinas bem modestas (como é a máquina que uso para capturar meus gameplays).

SSR estará na seção Vídeo do menu de programas.

Tela inicial


Após a tela de abertura acima, clique em Continue.

Primeira tela de configurações

Aqui começamos a configurar como será a gravação. Você pode criar um profile, já com todas as configurações específicas e salvá-lo, não tendo que repetir o processo cada vez que for usar o programa. No meu caso, como não tenho muita variedade nas minhas gravações, não fiz um profile.

Primeiro, indique se será a gravação de uma tela inteira, ou apenas uma parte. SSR permite a gravação de uma parte ou de toda a tela, com ou sem o cursor.

Se quiser definir uma resolução, poderá fazê-lo nos campos Largura / Altura.
Defina a taxa de quadros (eu coloco sempre em 30, fica mais fácil para gerar vídeos depois).

Deixe desmarcado o Vídeo em escala, que esta opção gasta processamento do computador, já que cada quadro tem que ser processado individualmente, o que gera um LAG no processo.

Se quiser gravar o cursor, habilite esta opção.

Agora, o áudio.

Penso que gravar Gameplays, o áudio é indispensável (com cuidado com músicas comercias, mas, voltarei a esse assunto depois).

Bem, o SSR permite 3 backends possíveis para capturar áudio: Jack, Alsa e Pulseaudio.

Se você tem uma máquina bastante potente, o suficiente para rodar o jogo, o Pulseaudio e o SSR, esta é a opção mais simples. Basta selecionar Pulseaudio e indicar qual será a fonte de áudio e pronto, a gravação vai transcorrer sem problemas.

DETALHE: Se você for fazer uma narração, sobre o jogo ou o que seja que está capturando, grave o áudio numa trilha separada. Não grave sobre a trilha do jogo / programa que você está capturando.
É muito fácil de incorrer em algum problema, e por tudo a perder, enquanto a narração gravada em separado, você pode re fazer, remover ruídos ou cortar partes que não gostou, sem perder a trilha sonora do jogo  / programa que foi gravado. Eu, por exemplo, uso o meu celular para gravar meus voice-overs e depois edito e mixo no vídeo final.

Jack é mais complicado de fazer, mas, funciona muito bem, consome menos recursos que o Pulseaudio e tem uma qualidade muito boa. O PCLinuxOS já vem com o Jack2, a versão mais recente do Jack audio, e, você vai precisar também do QjackCtl, uma GUI que facilita o controle do Jack audio daemon (start / stop e configurações).

Agora abra o QJackCtl e, antes de fazer qualquer outra coisa, clique no botão de configurações. A maioria das configurações padrão está bem, você só precisa fazer algumas alterações:

    Certifique-se de que a caixa de seleção "realtime" esteja marcada, na aba parameters, e, na aba advanced, marque e a caixa de seleção "No Memory Lock " esteja desmarcada.

    Defina a  taxa para 44100, porque é isso que o SimpleScreenRecorder usará. Outras taxas de amostra ainda funcionarão, mas não é muito útil, já que o SimpleScreenRecorder irá redimensioná-lo para 44100 de qualquer maneira.

    Defina o tamanho do período para um valor razoável, por exemplo, 512 ou 1024. Valores menores diminuirão a latência, mas aumentarão a probabilidade de você obter xruns (cliques ou interrupções curtas no áudio). O melhor valor depende muito do seu hardware de som e do desempenho dos drivers do Linux para esse hardware. As placas de som USB geralmente apresentam melhor desempenho aqui. Com um kernel especial em tempo real e o hardware certo, você pode reduzir a latência para um milissegundo, mas eu não recomendo fazer isso: introduz muita sobrecarga, pode causar xruns e você provavelmente não notará a diferença de qualquer maneira, em latências  de 10ms ou menos.

    Defina o número de períodos como 2. Se isso não funcionar corretamente, mesmo com tamanhos de período muito grandes (ou seja, você ainda recebe xruns), tente 3 ou 4.

Configurando o Jack
    
Defina o número de canais de entrada e saída para 2, porque SimpleScreenRecorder atualmente suporta apenas estéreo.

Depois de escolher suas configurações, clique no botão '‘iniciar’' e aguarde alguns segundos. Se tudo correr bem, a exibição de status deve acender e conter apenas texto verde e amarelo. Se as coisas derem errado (você recebe xruns), o texto ficará vermelho.

Você deve sempre ter certeza de que o JACK está rodando antes de iniciar qualquer aplicativo que tente usar o JACK, porque eles podem tentar iniciar o JACK (em segundo plano), o que confundirá o QJackCtl (se isso acontecer, você deve encontrar o processo do jackd e matá-lo manualmente).

Você pode testar o JACK com qualquer aplicativo que tenha suporte a JACK (por exemplo, o Audacity). A maioria dos aplicativos normais não tem suporte a JACK, portanto, você precisará do que é chamado de ponte ALSA-para-JACK. Existem duas maneiras de fazer isso. O método clássico usa um dispositivo de loop ALSA. Ele sempre funciona, mas acrescenta muita latência que é irritante. Há uma solução muito melhor: o plugin JACK para o ALSA.
Para usar este plugin, é necessário instalar o pacote lib64alsa-plugins-jack. Este pacote habilita a saída PCM Jack, que pode ser usada pelo ALSA sem problemas.

Mas, para usá-lo, é necessário configurar o arquivo .asoundrc, na /home do usuário, e, rotear o áudio através do Jack para realizar a captura.

Crie então um arquivo .asoundrc com o conteúdo abaixo:

# override default
pcm.!default {
    type plug
    slave {
        pcm "rjack"
    }
}

# ALSA-to-JACK bridge
pcm.jack {
    type plug
    slave {
        pcm "rjack"
    }
    hint {
        description "JACK bridge"
    }
}
pcm.rjack {
    type jack
    playback_ports {
        0 "system:playback_1"
        1 "system:playback_2"
    }
    capture_ports {
        0 "system:capture_1"
        1 "system:capture_2"
    }
}

Isso fará com que o plugin JACK seja o dispositivo padrão ALSA. A maioria dos aplicativos simplesmente usa o padrão, então isso geralmente é tudo que você precisa fazer.
Alguns aplicativos podem ter uma maneira de selecionar a entrada / saída de som dentro do aplicativo; nesse caso, você deve usar 'default' ou selecionar manualmente 'jack_system'.

Agora você pode usar SimpleScreenRecorder com o backend JACK. SimpleScreenRecorder pode automaticamente fazer conexões para casos de uso comum (gravando o microfone e / ou os alto-falantes), mas se você precisar de um controle mais fino, você pode manualmente gerenciar conexões com QJackCtl clicando no botão 'conectar' (não confundir com o botão 'patchbay', que é usado para aplicar automaticamente conexões predefinidas).

Você também pode combinar SimpleScreenRecorder com vários outros aplicativos JACK para aplicar efeitos de áudio em tempo real.

Quando terminar com o JACK, primeiro feche todos os aplicativos que usam o sistema de som, exclua o arquivo .asoundrc em sua pasta pessoal (ou apenas renomeie-o para poder usá-lo novamente mais tarde) e interrompa o JACK via QjackCtl.


Configurando com Alsa
Usar o SSR com Alsa é a opção que menos carrega o sistema, e, bastante fácil de configurar.
Como funciona ?

Colocando-se a entrada de áudio como Alsa, o SSR vai capturar o áudio da fonte definida na caixa de diálogo Fonte, no caso da figura abaixo, [hw:0,0] HDA Intel ALC662 Rev1 Analog.



Ou seja, o SSR vai gravar o áudio dessa entrada de som Alsa no vídeo de gameplay.

Mas, será necessário plugar um cabo especial, P2 Y, para levar a saída de áudio para os falantes / fones externos, e, injetar o áudio na entrada especificada na configuração.


O cabo necessário se parece com o da figura abaixo.


Aconselho que injete o áudio na entrada MIC traseira, que é stereo, captura o som em dois canais, e, possui filtragem na entrada. Eu mesmo tentei injetar o áudio na entrada IN do computador, mas, o nível de ruído é muito alto. Na entrada MIC já há filtragem de capacitores, o que corta o nível de ruído para padrões aceitáveis.

Agora, configure os níveis no alsamixer, pressione F4, dispositivos de captura, e configure-os



Note que esta configuração é específica do meu setup. A sua poderá / deverá ser diferente, então, identificar quais são os dispositivos de MIC e configurar o dispositivo correto deverá ser feito antes de começar a gravação, sob pena do vídeo gameplay resultar mudo. A saída de volume, no meu caso, deixo em 86% do valor total, no controle de volume. Você poderá experimentar diferentes valores, para não deixar o áudio nem muito baixo, nem alto demais, com distorções.

Este tipo de setup é o que menos recursos consome do computador, já que apenas rodarão: a aplicação que você quer capturar e o SSR, ao contrário das outras opções, que envolvem dois ou mais daemons, que geram uma sobrecarga maior.

Agora, prosseguindo a configuração, pressione Continua no SSR, e, uma tela como a abaixo deverá aparecer


Selecione o profile YouTube, defina o nome do arquivo e onde será gravado, cheque as caixas Arquivo separado por segmento e Add timestamp.
Defina o container (eu sempre ponho MP4), o codec (h.264 é um padrão) e o preset (para gameplays Superfast  é o melhor).
O áudio (MP3) e o bit rate (eu costumo deixar em 160KBps).
Pressione continua, e, aparecerá a tela de início de gravação. Pressione Inicie a gravação e pronto, seu vídeo começará a ser gravado.



Quando terminar de gravar, se estiver satisfeito com o resultado, aperte em Salve a gravação, caso contrário, pressione Cancela a gravação.

Experimente com o SSR até achar uma configuração que julgue a melhor para seu caso, pois ele possui diversas configurações, e, o ajuste fino entre elas é o que produz um melhor resultado.

Assim terminamos mais um artigo da série do You Tube, e, no próximo mês teremos o capítulo final dessa série.

Espero que apreciem, até lá!