Como criar uma composição de filmes?

2

Suponha que eu tenha dois vídeos (no formato AVI, se isso for importante), digamos movie1.avi e movie2.avi .

movie1.avi tem uma taxa de quadros de 10 fps. movie2.avi também tem um framerate de 10fps, mas foi acelerado em algum lugar, de tal forma que ele deveria ser jogado por 5fps.

Agora, quero criar um novo filme, que consiste basicamente em movie2.avi (desacelerado) projetado no canto inferior direito de movie1.avi .

Qual método posso usar para compor esses dois filmes assim? Preciso decompô-los em vários quadros, compor as imagens e fazer um novo filme? Isso manteria a qualidade como é? São as ferramentas de fácil acesso para obter o que eu quero?

Uma sugestão do Windows ou do Linux faria o trabalho por mim.

    
por Bernhard 29.07.2013 / 16:36

2 respostas

2

Você pode usar os filtros ffmpeg para sobrepor o vídeo e criar um efeito Picture-in-Picture. Para sobrepor o movie2.avi , teremos que reduzi-lo e reproduzi-lo com uma taxa de quadros menor, usaremos outro filtro.

Seu comando se parece com algo assim:

ffmpeg -i movie1.avi \
-filter:v "movie=movie2.avi, scale=iw/2:ih/2, setpts=2.0*PTS [small];\
[in][small] overlay=main_w-overlay_w:main_h-overlay_h [out]" output.avi

Por questões de legibilidade, dividi o comando onde o \ é. Para dividir:

  • -i movie1.avi é seu grande filme de entrada.
  • -filter:v "movie=movie2.avi carrega o pequeno filme.
  • scale=iw/2:ih/2 diminui esse filme para metade de sua largura e altura. iw e ih são parâmetros que recebem a largura e a altura da entrada, respectivamente. Veja as scale opções de filtro se você quiser ajustar isso.
  • setpts=2.0*PTS permite que o vídeo seja exibido duas vezes mais lento que o original, "expandindo" os carimbos de hora de apresentação individuais dos quadros. Você poderia acelerar com 0.5*PTS . Veja setpts .
  • Isso é atribuído ao link [small] .
  • Os links [in] e [small] são combinados com um filtro overlay , posicionando o canto superior esquerdo do vídeo menor no meio do quadro. Os parâmetros main_w e main_h ocupam a largura e a altura do quadro, portanto, aqui, você está selecionando o ponto médio exato.
  • Isso é renderizado para [out] .

Poderia ser algo assim:

Aqui estão algumas dicas:

  • Sempre use uma versão recente de ffmpeg , não aquela fornecida por sua distribuição do Linux. A página de download do FFmpeg tem uma lista de compilações estáticas para cada sistema operacional.

  • O comando, por padrão, usará algumas configurações básicas relacionadas a codecs de vídeo e áudio. Isso pode resultar em uma qualidade pior que a original. Você pode ajustar a qualidade definindo uma taxa de bits mais alta ou um sinalizador de qualidade variável com -qscale . Dê uma olhada na codificação XviD / MPEG-4 orientar para vídeos AVI ou escolher MP4 como saída com o codificador x264 .

    Na prática, isso pode se parecer com o seguinte:

    ffmpeg -i movie1.avi … -c:v libxvid -qscale 2 output.avi
    ffmpeg -i movie1.avi … -c:v libx264 -crf 21 output.mp4
    
por 30.07.2013 / 15:20
1

Você poderia fazer isso decompondo quadro a quadro, mas há muito software de edição de vídeo gratuito que deve permitir que você faça isso mais facilmente.

Como exemplos, você pode dar uma olhada em Windows Movie Maker como solução do Windows ou kdenlive como uma solução linux.

Quase todos os softwares de edição de vídeo podem alterar a velocidade de reprodução de um vídeo ou compor dois vídeos conforme você descreve.

    
por 30.07.2013 / 15:19