Eu pessoalmente faria isso com o ffmpeg's
Demuxer Concat
Primeiro, crie um arquivo chamado inputs.txt
, que é assim:
file 'input1.flv'
file 'input2.flv'
Em seguida, use o ffmpeg da seguinte forma:
ffmpeg -f concat -i inputs.txt -c copy output.mp4
(Você pode usar output.flv
, embora o MP4 seja um formato geralmente mais útil). O demuxer está disponível nas versões do ffmpeg de 1.1 em diante. Se você quiser ficar com uma versão desatualizada do ffmpeg por algum motivo, você pode usar o
Protocolo Concat
Isso é um pouco complicado. O contêiner FLV não suporta a concatenação no nível do arquivo, portanto, você precisará remeter para um contêiner que faz - como um fluxo de transporte MPEG. Infelizmente, com vídeo h.264 e áudio AAC, você precisará aplicar alguns filtros de fluxo de bits.
Como você está no Linux, você pode usar pipes nomeados.
mkfifo temp0 temp1
Você precisará fazer o seguinte em três janelas teminais separadas (ou guias se o emulador de terminal as suportar - ctrl+shift+t
normalmente abre uma nova guia):
ffmpeg -i input0.flv -map 0 -c copy -f mpegts -bsf h264_mp4toannexb -y temp0
ffmpeg -i input1.flv -map 0 -c copy -f mpegts -bsf h264_mp4toannexb -y temp1
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4
Você pode, de fato, executar todos eles em uma linha de comando (bastante complicada):
ffmpeg -i input0.flv -map 0 -c copy -f mpegts -bsf h264_mp4toannexb -y temp0 2> /dev/null & \
ffmpeg -i input1.flv -map 0 -c copy -f mpegts -bsf h264_mp4toannexb -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4
Certifique-se de que output.mp4 não exista, isso não funcionará. Se alguém está lendo isso em um sistema que não suporta pipes nomeados, eles precisam usar:
ffmpeg -i input0.flv -map 0 -c copy -f mpegts -bsf h264_mp4toannexb temp0.ts
ffmpeg -i input1.flv -map 0 -c copy -f mpegts -bsf h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -absf aac_adtstoasc output.mp4
Isso criará um par de arquivos intermediários chamados temp0.ts e temp1.ts, que podem ser destruídos com segurança quando você terminar.
Observe que essas instruções funcionarão com os arquivos FLV especificados no OP e, provavelmente, com os FLVs mais modernos da Internet, já que eles quase universalmente usam vídeo h264 e áudio aac. Para outros codecs, essas instruções terão que ser ajustadas um pouco.