Como reproduzir um vídeo com áudio de um arquivo separado? (mux durante a reprodução)

2

Meu laptop roda o Xubuntu 14.04 LTS. Estou compondo uma partitura para um filme mudo, e estou tentando "Mickey Mouse" (sincronizar notas para a acção). Eu posso ajustar ligeiramente a edição do filme mudo para alinhar eventos com batidas da música. A ferramenta para transformar o filme em um intermediário sem perda (AVI com Huffyuv) em cerca de 1 GB por dois minutos, que eu posso codificar para um formato compactado (WebM com VP8 ou MPEG-4 com AVC).

Se eu já codifiquei o vídeo, normalmente uso essa linha de comando para combinar o vídeo compactado com a partitura, com base em avconv substituir áudio :

avconv -y -i the_video.mp4 -i the_audio.wav -map 0:0 -map 1:0 -c:v copy -c:a libvo_aacenc -ac 1 -ab 48000 -t 120 result.mp4
avplay result.mp4

Como o intermediário sem perdas tem tamanho de gigabytes, não quero usar -c:v copy para copiar esses gigabytes toda vez que quiser verificar minhas alterações. Também não quero codificar todas as vezes porque a CPU do meu laptop (Atom N450, 1 core 2 threads) é muito lenta para codificar vídeo em tamanho real em tempo real. Mas quando tento usar uma linha de comando semelhante para reproduzir em vez de codificar:

avplay -i the_video.avi -i sound/sticks.wav -map 0:0 -map 1:0

Recebo a seguinte mensagem de erro:

avplay version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2003-2014 the Libav developers
  built on Mar 16 2015 13:20:58 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Argument 'sound/sticks.wav' provided as input filename, but 'hyf_enc.mp4' was already specified.

O Google "avplay" "was already specified" produziu apenas resultados de código-fonte, não soluções alternativas. Eu também tentei "ffplay" "was already specified" , mas a maioria das páginas com perguntas sobre isso estava relacionada à sobreposição de um PNG, não de muxing.

Como devo reproduzir o áudio de um arquivo e o vídeo de outro arquivo, procurando link entre os dois, sem ter que remodi-los para um arquivo no disco? Um jogador nos repositórios do Ubuntu além de avplay funcionaria bem para isso? Ou devo apenas encolher o intermediário sem perdas para tornar o remuxo prático?

    
por Damian Yerrick 30.08.2015 / 00:10

1 resposta

0

Meu conhecimento é baseado nas ferramentas ffmpeg e ffplay que eu entendo serem substituídas por avconv e avplay no Ubuntu, que deveriam ser funcionalmente equivalentes (não vamos discutir até que ponto essa equivalência funcional vai).

Eu não acho que as ferramentas play aceitem várias entradas. Você pode transmitir por meio de um pipe de ffmpeg (er, avconv ) para ffplay ( avplay ). Tente isto:

$ avconv -i the_video.avi -i sound/sticks.wav -map 0:0 -map 1:0 - | avplay -

O acima é um palpite baseado na sua pergunta, mas é baseado no meu próprio exemplo real que colei abaixo apenas como referência (sim, estou usando as ferramentas ffmpeg e ffplay ):

ffmpeg -f alsa -i hw:0,2 -f v4l2 -i /dev/video0 -f avi pipe:1 | ffplay -
    
por starfry 31.08.2015 / 21:37