Como mesclar dois arquivos mp4 sem perder a qualidade?

51

Eu tenho dois arquivos mp4 de alta qualidade, que são de duas partes do mesmo programa.

Quero mesclá-los em um arquivo e geralmente uso o VirtualDub para mesclar meus arquivos ... Mas parece que não é compatível com mp4.

Quais alternativas estão disponíveis (especialmente aquelas que não exigem recodificação)?

Paolo Bergantino
fonte
Veja também stackoverflow.com/questions/7333232/…
rogerdpack

Respostas:

41

Eu normalmente uso o VirtualDub para mesclar meus arquivos, mas ele não parece suportar mp4. Então, quais alternativas existem?

Avidemux . É como o VirtualDub, apenas com mais formatos suportados e codecs e filtros embutidos. Eu sempre o uso preferencialmente; junta arquivos AVC + AAC.MP4 (sem recodificação) para mim.

Para se juntar a eles no AviDemux:

  1. Arquivo -> Abrir -> Selecionar arquivo
  2. Arquivo -> Anexar -> Selecionar arquivo
  3. Defina tudo para Copiar
  4. Arquivo -> Salvar -> FileName
  5. Esperar..

De acordo com os fóruns do AViDemux, esse processo de associação é sem perdas ( http://www.avidemux.org/smf/index.php?topic=9467.0 )

bobince
fonte
Sim, parece excelente em manter o áudio sincronizado com o vídeo, enquanto as outras pessoas respondem a essa pergunta no questionário IMHO.
djangofan
11
Tentei usar o Avidemux para juntar dois arquivos, mas o áudio ficou fora de sincronia.
GiddyUpHorsey
Você pode obter problemas de sincronização quando a quantidade de material de áudio disponível não corresponde à duração dos quadros de vídeo ou ocorre qualquer dano ao fluxo. Você pode consertar isso com os recursos de 'correção de fluxo' do VideoRedo ou do ProjectX.
22912
11
Mas esse método funcionou: superuser.com/a/255566/1780 Hooray!
Christopher Galpin
4
Se você usa o AviDemux para unir dois arquivos Mp4, não se esqueça de selecionar a opção Mp4 Demux no canto inferior esquerdo. Caso contrário, ele pode tentar convertê-lo em um avi!
28

Você pode fazer isso com o ffmpeg:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4

Isso não recodifica nada, coloca-os em um novo contêiner de fluxo de transporte, o que os torna mais fáceis de concatenar e depois os concatenam novamente em um MP4. Se o output.mp4 já existir, o comando falhará. A versão acima usa pipes nomeados, se você estiver em um sistema que não suporta aqueles, você precisará usar arquivos intermediários (como o Windows):

ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -bsf:a aac_adtstoasc output.mp4
evilsoup
fonte
alguém pode explicar como isso é feito em avconvvez de ffmpeg? Eu era capaz de completar as duas primeiras etapas, mas a última não reconhece a opção-absf
Becko
@becko Veja minha edição. Agora você deve usar um especificador de fluxo (veja aqui libav.org/avconv.html#Advanced-options ).
slhck
2
+1 apenas para referência futura, você pode substituir avconvpara ffmpegnos comandos acima e ele vai trabalhar.
becko
15

Concat desmuxer

O desmuxador concat foi adicionado ao ffmpeg 1.1. Se sua versão do ffmpeg for antiga, obtenha o binário estático mais recente aqui: http://www.ffmpeg.org/download.html

Instruções

Crie um arquivo mylist.txtcom todos os arquivos que você deseja concatenar no seguinte formulário (as linhas que começam com um traço são ignoradas):

# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

Observe que esses podem ser caminhos relativos ou absolutos. Então você pode codificar seus arquivos com:

ffmpeg -f concat -i mylist.txt -c copy output

É possível gerar esse arquivo de lista com um loop bash para, ou usando printf. Qualquer um dos seguintes itens geraria um arquivo de lista contendo todos os * .wav no diretório de trabalho:

for f in ./*.wav; do echo "file '$f'" >> mylist.txt; done
printf "file '%s'\n" ./*.wav > mylist.txt

Fonte: wiki ffmpeg

erik
fonte
8

YAMB junto com MP4BOX é uma boa opção.
Faça o download dos dois e descompacte-os (não é necessária instalação e, juntos, são cerca de 5 MB). No YAMB, escolha Configurações e defina o caminho da pasta do MP4box.
Para ingressar nos arquivos mp4, escolha Edição> Clique para ingressar com suporte ...

Eran
fonte
11
Parece ser a melhor solução, mantendo o formato do recipiente .mp4 que parece a opção mais atraente para o autor ^^
Oskar Duveborn
11
Após dificuldade, usei esta configuração: MP4Box_path = E: \ Software \ Edição de Vídeo \ Yamb-2.1.0.0_beta2 \ MP4Box \ MP4Box.exe na tentativa de mesclar 4 arquivos MP4 de 500 MB gerados a partir do AVIDemux. Não deu certo. O programa ficou lá por 45 minutos, sem fazer nada até que finalmente desisti.
22411 djangofan
11
tive problemas ao usar esse método devido a problemas de sincronização de áudio. foi um pesadelo ... não tentar novamente.
djangofan
6

O SUPER © (Codificador e Renderizador Universal Player Simplificado) fornece o seguinte Processo de Saída adicional:

Qualquer arquivo multimídia de entrada suportado pode ser processado:

      o Join Format-Identical Files.
      o Mux Video & Audio Streams.
      o DeMux Extract Streams. 

é claro, MP4 é um formato suportado.

SUPER © é um freeware.


fonte
5
Sua interface de usuário é a mais horrível que já vi na minha vida. Não estou brincando, é simplesmente horrível. Eu enfatizo mais uma vez: não posso citar uma interface pior, estou falando sério, nunca vi nada abaixo do "limite SUPER".
Camilo Martin
5

Tente usar o contêiner de vídeo Matroska.

Em primeiro lugar, você precisa do mkvtoolnix . Faça o download e instale-o e, em seguida, é necessário ativar a GUI do mkvmerge (a menos que você goste de ferramentas de linha de comando, o que é bom para mim - embora você possa querer olhar para a seção de vinculação de arquivos da documentação do mkvmerge ).

Adicione seu primeiro arquivo clicando em "adicionar". Em seguida, clique em "anexar" e abra seu segundo arquivo. Defina o arquivo de saída, clique em "Iniciar muxing" na parte inferior e pronto!

Se o contêiner não for adequado às suas necessidades, você poderá recodificá-lo ou tentar convertê-lo para outro formato ... Embora o MKV seja um contêiner muito adorável!

Avanço
fonte
tem que ser muxed? não posso me juntar sem muxing?
22630 djangofan
Bem, se você estiver usando um contêiner MKV, tecnicamente estará remuxando-o. Experimente, não há nenhuma penalidade em tempo real ...
Breakthrough
1

Se você pode reproduzi-los em seu sistema / ter um codec instalado, o Windows Movie Maker pode ser a maneira mais rápida (e gratuita) de ingressar nos dois arquivos. Você pode usar o Virtualdub para converter para um formato diferente.

William Hilsum
fonte
O Audacity parece ser para arquivos de áudio. Este é um arquivo de vídeo.
Paolo Bergantino
Sinto muito, eu li mal, só vi a parte do MP e meu cérebro apesar de audácia.
William Hilsum 18/09/09
Editando resposta ...
William Hilsum 18/09/09
AFAIK, Movie Maker não suporta mp4 e converter para um formato diferente significa perda de qualidade que a pergunta especifica como indesejada.
Erã
Tentei o MovieMaker no windows7 e o áudio fica fora de sincronia ao ingressar arquivos MP4 em um WMV. Esta opção não funcionará.
22411 djangofan
1

Outra solução é o Open Video Joiner . Também produz efeitos de transição.

insira a descrição da imagem aqui

harrymc
fonte
É um shareware embora. e para 30 $ não é barato apenas para arquivos de vídeo de mesclagem
Eran
Foi dito ser freeware. Desculpe se fui enganado.
harrymc 19/09/09