A quarentena é um momento maravilhoso para aprender alguma coisa. Porém, como você entende, para que alguém aprenda alguma coisa, alguém deve ensinar. Se você tem uma apresentação que deseja fazer para um público de milhões de pessoas e ganhar fama mundial, então este artigo é para você. Aqui você encontrará instruções passo a passo sobre como fazer um vídeo a partir de sua apresentação.
Descartamos o caminho de gravar “comentários de áudio” no PowerPoint e exportar a apresentação para vídeo como trivial e não fornecendo um décimo dos recursos necessários para um vídeo realmente legal.
Primeiro, vamos decidir quais frames precisamos:
- Os slides reais com narração
- mudança de slide
- Citações de filmes populares
- Várias molduras com o rosto do palestrante e seu gato preferido (opcional)
Criando uma estrutura de diretório
.
├── clipart
├── clips
├── rec
├── slide
└── sound
A finalidade dos diretórios na ordem de listagem: filmes dos quais extrairemos citações (clipart), fragmentos de nosso futuro vídeo (clipes), vídeos da câmera (rec), slides em forma de imagens (slide), som (som).
Fazendo uma apresentação em fotos
Para um verdadeiro usuário de Linux com olhos vermelhos, fazer uma apresentação na forma de imagens não apresenta problemas. Deixe-me lembrá-lo de que um documento em formato pdf pode ser analisado em imagens usando o comando
pdftocairo -png -r 128 ../lecture.pdf
Se não existir tal comando, instale você mesmo o pacote poppler-utils (instruções para Ubuntu; se você tem Arch, então sabe perfeitamente o que fazer sem mim).
Aqui e além, acredito que o vídeo esteja preparado no formato HD Ready, ou seja, 1280x720. Uma apresentação com tamanho horizontal de 10 polegadas fornece exatamente esse tamanho quando descarregada (consulte o parâmetro -r 128).
Preparando o texto
Se você quiser criar um material realmente excelente, seu discurso precisa ser escrito primeiro. Também pensei que poderia falar o texto sem preparação, principalmente porque tenho boa experiência em palestras. Mas uma coisa é tocar ao vivo e outra é gravar um vídeo. Não seja preguiçoso – o tempo gasto digitando será recompensado muitas vezes.
Aqui está meu formato de gravação. O número do título é igual ao número do slide, as interrupções são destacadas em vermelho. Qualquer editor é adequado para preparação, mas é melhor usar um processador de texto completo - por exemplo, OnlyOffice.
Voz sobre os slides
O que posso dizer - ligue o microfone e escreva :)
A experiência mostra que a qualidade de gravação, mesmo do microfone externo mais barato, é incomparavelmente melhor do que a do microfone embutido de um laptop. Se você quer equipamentos de qualidade, eu recomendo
Para gravar eu usei gravador de áudio – um aplicativo muito simples para gravação de som. Você pode pegar, por exemplo, aqui:
sudo add-apt-repository ppa:audio-recorder/ppa
sudo apt-get update
sudo apt-get install audio-recorder
O principal nesta etapa é nomear os arquivos corretamente. O nome deve consistir no número do slide e no número do fragmento. Os fragmentos são numerados com números ímpares - 1, 3, 5, etc. Assim, para o slide, cujo texto é mostrado na imagem, serão criados dois arquivos: 002-1.mp3 и 002-3.mp3.
Se você gravou todos os vídeos de uma vez em uma sala silenciosa, não precisa fazer mais nada com eles. Se você gravou em várias etapas, é melhor equalizar o nível de volume:
mp3gain -r *.mp3
Utilities ganho de mp3 Por alguma razão, não está nos repositórios padrão, mas você pode obtê-lo aqui:
sudo add-apt-repository ppa:flexiondotorg/audio
sudo apt-get update
sudo apt-get install mp3gain
Depois de tudo isso, você precisa gravar outro arquivo com silêncio. É necessário adicionar trilha sonora aos vídeos silenciosos: se um vídeo tem trilha sonora e o outro não, fica difícil colar esses vídeos. O silêncio pode ser gravado com um microfone, mas é melhor criar um arquivo no editor Audacity. O comprimento do arquivo deve ser de pelo menos um segundo (mais é possível) e deve ser nomeado silêncio.mp3
Preparando vídeos de interrupção
Aqui tudo é limitado apenas pela sua imaginação. Você pode usar um editor para editar vídeos Avidemux. Era uma vez nos repositórios padrão, mas por algum motivo foi cortado. Isso não vai nos impedir:
sudo add-apt-repository ppa:ubuntuhandbook1/avidemux
sudo apt-get update
sudo apt-get install avidemux2.7-qt5
Existem muitas instruções para trabalhar com este editor na Internet e, em princípio, tudo lá é intuitivo. É importante atender a várias condições.
Primeiro, a resolução do vídeo deve corresponder à resolução de vídeo desejada. Para fazer isso, você precisa usar dois filtros no “vídeo de saída”: swsResize para alterar a resolução e “adicionar campos” para transformar um filme soviético de “formato estreito” em um formato amplo. Todos os outros filtros são opcionais. Por exemplo, se alguém não entender por que a declaração do Sr. Sharikov está no fragmento em discussão, usando o filtro “adicionar logotipo”, você pode sobrepor o logotipo do PostgreSQL no topo do “Coração de Cachorro”.
Em segundo lugar, todos os fragmentos devem usar a mesma taxa de quadros. Eu uso 25 quadros por segundo porque minha câmera e os antigos filmes soviéticos me proporcionam isso. Se o filme que você está cortando foi filmado em uma velocidade diferente, use o filtro Reamostrar vídeo.
Terceiro, todos os fragmentos devem ser compactados com o mesmo codec e embalados nos mesmos contêineres. Portanto, em Avidemux para o formato, selecione vídeo – “MPEG4 AVC (x264)", áudio -"AAC (FAAC)", Formato de saída - "Muxer MP4".
Em quarto lugar, é importante nomear corretamente os vídeos cortados. O nome do arquivo deve consistir no número do slide e no número do fragmento. Os fragmentos são numerados com números pares, começando em 2. Assim, para o quadro em discussão, o vídeo com a interrupção deve ser chamado 002-2.mp4
Depois que os vídeos estiverem prontos, você precisará transferi-los para o diretório com fragmentos. Configurações avidemux diferem das configurações ffmpeg por padrão com parâmetros misteriosos tbr, tbn, tbc. Eles não afetam a reprodução, mas não permitem que os vídeos sejam colados. Então vamos recodificar:
for f in ???-?.mp4;
do
ffmpeg -hide_banner -y -i "${f}" -c copy -r 25 -video_track_timescale 12800 ../clips/$f
done
Fotografando protetores de tela
Aqui também tudo é simples: você filma tendo como pano de fundo algum esquema inteligente, coloca os vídeos resultantes em um catálogo rec, e de lá transfira-o para o diretório com fragmentos. As regras de nomenclatura são as mesmas das aspas de interrupção, o comando de recodificação é o seguinte:
ffmpeg -y -i source_file -r 25 -vcodec libx264 -pix_fmt yuv420p -profile:v high -coder 1 -s 1280x720 -ar 44100 -ac 2 ../clips/xxx-x.mp4
Se você planeja iniciar o vídeo com seu discurso, nomeie este fragmento 000-1.mp4
Fazendo molduras a partir de imagens estáticas
É hora de editar vídeos a partir de imagens e sons estáticos. Isso é feito com o seguinte script:
#!/bin/bash
for sound in sound/*.mp3
do
soundfile=${sound##*/}
chunk=${soundfile%%.mp3}
clip=${chunk}.mp4
pic=slide/${chunk%%-?}.png
duration=$(soxi -D ${sound} 2>/dev/null)
echo ${sound} ${pic} ${clip} " - " ${duration}
ffmpeg -hide_banner -y -loop 1 -i ${pic} -i ${sound} -r 25 -vcodec libx264 -tune stillimage -pix_fmt yuv420p -profile:v high -coder 1 -t ${duration} clips/${clip}
done
Observe que a duração do arquivo de áudio é determinada primeiro pelo utilitário Soxie, em seguida, o vídeo com a duração necessária é editado. Todas as recomendações que encontrei são mais simples: em vez de uma bandeira -t ${duração} bandeira é usada -mais curto. De fato ffmpeg determina a duração do mp3 de forma muito aproximada e, durante a edição, a duração da trilha de áudio pode diferir muito (em um ou dois segundos) da duração da trilha de vídeo. Não importa se o vídeo inteiro consiste em um único quadro, mas quando você cola esse vídeo com interrupções na borda, ocorrem efeitos de gagueira extremamente desagradáveis.
Outra maneira de determinar a duração de um arquivo mp3 é usar mp3info. Ela também comete erros, e às vezes ffmpeg dá mais do que mp3info, às vezes é o contrário, às vezes os dois mentem – não notei nenhum padrão. E aqui Soxi funciona corretamente.
Para instalar este utilitário útil, faça o seguinte:
sudo apt-get install sox libsox-fmt-mp3
Fazendo transições entre slides
Uma transição é um pequeno vídeo em que um slide se transforma em outro. Para fazer esses vídeos, pegamos slides em pares e usamos imagemagick transformar um no outro:
#!/bin/bash
BUFFER=$(mktemp -d)
for pic in slide/*.png
do
if [[ ${prevpic} != "" ]]
then
clip=${pic##*/}
clip=${clip/.png/-0.mp4}
#
# генерируем картинки
#
./fade.pl ${prevpic} ${BUFFER} 1280 720 5 direct 0
./fade.pl ${pic} ${BUFFER} 1280 720 5 reverse 12
#
# закончили генерировать картинки
#
ffmpeg -y -hide_banner -i "${BUFFER}/%03d.png" -i sound/silence.mp3 -r 25 -y -acodec aac -vcodec libx264 -pix_fmt yuv420p -profile:v high -coder 1 -shortest clips/${clip}
rm -f ${BUFFER}/*
fi
prevpic=${pic}
done
rmdir ${BUFFER}
Por algum motivo eu queria que o slide fosse espalhado com pontos, e então o próximo slide fosse montado a partir dos pontos, e para isso escrevi um script chamado fade.pl Tendo imagemagick, um usuário real do Linux criará qualquer efeito especial, mas se alguém gostar da minha ideia de dispersão, aqui está o script:
#!/usr/bin/perl
use strict;
use warnings;
use locale;
use utf8;
use open qw(:std :utf8);
use Encode qw(decode);
use I18N::Langinfo qw(langinfo CODESET);
my $codeset = langinfo(CODESET);
@ARGV = map { decode $codeset, $_ } @ARGV;
my ($source, $target, $width, $height, $pixsize, $rev, $file_no) = @ARGV;
my @rects;
$rects[$_] = "0123456789AB" for 0..$width*$height/$pixsize/$pixsize/12 - 1;
for my $i (0..11) {
substr($_,int(rand(12-$i)),1) = "" for (@rects);
my $s = $source;
$s =~ s#^.*/##;
open(PICTURE,"| convert - -transparent white PNG:- | convert "$source" - -composite "$target/".substr("00".($file_no+$i),-3).".png"");
printf PICTURE ("P3n%d %dn255n",$width,$height);
for my $row (1..$height/$pixsize/3) {
for my $j (0..2) {
my $l = "";
for my $col (1..$width/$pixsize/4) {
for my $k (0..3) {
$l .= (index($rects[($row-1)*$width/$pixsize/4+$col-1],sprintf("%1X",$j*4+$k))==-1 xor $rev eq "reverse") ? "0 0 0n" : "255 255 255n" for (1..$pixsize);
}
}
print PICTURE ($l) for (1..$pixsize);
}
}
close(PICTURE);
}
Montamos o vídeo finalizado
Agora temos todos os fragmentos. Vá para o catálogo clipes e monte o filme finalizado usando dois comandos:
ls -1 ???-?.mp4 | gawk -e '{print "file " $0}' >list.txt
ffmpeg -y -hide_banner -f concat -i list.txt -c copy MOVIE.mp4
Divirta-se assistindo aos seus alunos agradecidos!
Fonte: habr.com