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)?


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 )


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

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


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 ...


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.


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!


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.


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


É 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.