Como juntar arquivos de vídeo do terminal?

9

Eu tentei avidemux2_cli, mencoder, ffmpeg, cat .. Mas isso nem sempre funciona (Com a maioria das vezes, o erro é que o codec de áudio não é o mesmo) Talvez eu tenha colocado opções erradas nos comandos.

Então os comandos:

cat Sample.avi rrr.avi > complete.avi
ffmpeg -i Sample.avi -i output.avi -vcodec copy -acodec copy complete.avi
mencoder -ovc lavc -oac copy Sample.avi rrr.avi -o complete.avi
avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi -append output.avi --save video.avi

O problema com o gato é que ele não mostra erro, mas ele não funciona sempre .. Como o complete.avi será exatamente o mesmo com Sample.avi

O fmmpeg não faz nada. O complete.avi é sempre o mesmo com Sample.avi

Erro do codificador: Todos os arquivos devem ter codec de áudio e formato idênticos para a cópia -oac. Então o complete.avi é o mesmo com Sample.avi

avidemux2_cli não há erro, mas o complete.avi é novamente o mesmo com Sample.avi ..

Então, para resumir, todos os complete.avi são os mesmos com Sample.avi .. E o problema é que eles não têm o mesmo codec de áudio (i quess) .. Alguma idéia?

    
por Leon Vitanos 08.07.2012 / 18:41

6 respostas

10

Se você deseja combinar dois vídeos com segurança, é necessário alterar o codec de vídeo e o codec de áudio dos arquivos de entrada nos mesmos codecs.

Por exemplo, usando xvid (codec de vídeo) e mp3lame (codec de áudio):

sudo apt-get install mencoder libxvidcore4 libmp3lame0

você pode codificar os vídeos de entrada pelos comandos abaixo:

mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 first.avi -o video1.avi
mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 second.avi -o video2.avi

Para corresponder aos seus vídeos, você pode alterar as opções "bitrate" etc. (e também os codecs).

Se os nomes de vídeo codificados forem "video1.avi" e "video2.avi", e o nome do vídeo de saída for "joined-video.avi",

mencoder -ovc copy -oac mp3lame video1.avi video2.avi -o joined-video.avi 

Usando este comando, você pode criar o arquivo de vídeo associado.

    
por vine_user 08.07.2012 / 20:38
4

Eu tive que juntar três partes de vídeo com codecs idênticos. Lendo as respostas anteriores, consegui fazer isso:

mencoder -ovc copy -oac faac 01.mp4 02.mp4 03.mp4 -o output.mp4

Muito mais rápido e simples do que o Openshot!

Primeiro eu tentei a opção '-oac copy', mas parece que o codec de áudio em meus vídeos não permite isso. Recebi uma mensagem de erro recomendando '-oac pcm'. O codec pcm não é uma boa opção: o arquivo resultante é muito grande e 2/3 dele é um áudio não-comprimido.

Espero que isso ajude

    
por user150275 20.04.2013 / 01:01
1

Uma solução que eu encontrei aqui me ajudou a participar sem perda de dois arquivos mp4:

sudo apt-get install gpac
MP4Box -cat part1.mp4 -cat part2.mp4 -new joinedfile.mp4

Eu tentei usar o Avidemux, mas tive problemas com som no vídeo mesclado.

    
por warvariuc 23.08.2014 / 18:09
1

Seus arquivos não serão unidos corretamente porque algo não corresponde.

Como muitos outros, tive problemas com a sincronização de som em vídeos mesclados. e enquanto o MP4Box funciona bem se os clipes tiverem especificações idênticas, em alguns casos eu seria atingido pela “Nenhuma faixa de destino adequada encontrada - criando uma nova”. Nesse caso, Totem (também conhecido como Videos) não reproduziria esse segmento no arquivo juntado Depois de algumas tentativas e erros e outras pesquisas, desenvolvi o seguinte método para lidar com a participação em vídeos que até agora têm funcionado com qualidade aceitável (para mim).

Se os tamanhos dos frames não corresponderem (juntando erros referentes às faixas de vídeo):

Normalize o vídeo sem interromper o áudio (-c: uma cópia) definindo restrições (divisíveis por 8 para compatibilidade máxima do codec) para segmentos não correspondentes

Comandos de exemplo

width=856

height=480

avconv -i input.mp4 -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:a copy output.mp4

Se o áudio não corresponder (unindo erros pertencentes a faixas de áudio):

Normalizar áudio

Processe áudio sem interromper o vídeo (c: v copy) para que todos os clipes correspondam ao codec, frequência e taxa de bits desejados com c: uma frequência de codec -ar como -ar 48000 ee taxa de bits com b: a 128k para estéreo (64K por canal parece um bom alvo) ou o que quer que corresponda.

Exemplo: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4 (note que libmp3lame é um codec para áudio em mp3) Você pode obter uma lista de codificadores com suporte avconv emitindo o comando avconv -codecs ou restringir as coisas a um% codificado avconv -codecs|grep *codecname* por exemplo avconv -codecs|grep mp3

Agora que normalizamos os arquivos, podemos nos juntar a eles. Neste exemplo vou juntar os arquivos com o MP4Box. Se você não tem, você pode obtê-lo emitindo o comando sudo apt-get install gpac

Junte os arquivos com o comando MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4 (observe que não há nenhum gato antes do primeiro arquivo e cada arquivo adicional é precedido por -cat e o arquivo de destino é precedido por -out)

Se estiver usando MP4Box (recomendado para MP4) para entrar, você pode achar que tem que processar todos os clipes com avconv se as especificações aparecem ou não para evitar o erro “Nenhuma faixa de destino adequada encontrada - criando uma nova (tipo vide) "

Nota: Descobri que o Avidemux tem problemas com vídeos codificados usando arquivos H.264 / AVC (por totem) devido aos B-frames como referência. Isso parece resultar em um áudio fora de sincronia ao entrar mesmo quando você escolhe copiar áudio e vídeo sem remux. Falha ao não escolher o modo de segurança e fora de sincronia ao usar o modo de segurança

Fontes:

link

link

link

Observação: Até onde eu sei, outros formatos (contêineres) têm restrições similares para tamanho de quadro e taxas de áudio correspondentes, então isso pode funcionar também para avi se você tentar unir via cat ou mencoder após normalizar o vídeo e o áudio .

Opcional: Use o Handbrake para recodificar o arquivo associado para tamanho menor, se desejado, com uma taxa de quadros variável e uma configuração de qualidade constante de 25 (configurações sugeridas - ajuste conforme necessário para suas expectativas de material e qualidade )

    
por Elder Geek 05.11.2015 / 19:29
1

Você deve digitar assim:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output.avi --save video.avi

Se você deseja acrescentar mais arquivos:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output1.avi --append output2.avi --append output3.avi --save video.avi
    
por Grzegorz Tomczyk 01.10.2017 / 16:35
1

Consegui usar o VLC Media Player para unir / mesclar vários arquivos de vídeo. O VLC pode ser baixado do Ubuntu Software ou você pode instalá-lo a partir de um terminal pressionando Ctrl + Alt + T e digitando:

sudo apt update
sudo apt install vlc

Quando o VLC estiver instalado, abra um terminal na pasta com os arquivos de vídeo e digite:

vlc InFile1.mp4 InFile2.mp4 --sout "#gather:std{access=file,dst=OutFile.mp4}" --sout-keep

Isso abre a GUI do VLC e você pode fechá-la assim que os arquivos forem unidos / mesclados. Você pode encontrar mais informações aqui .

    
por JayDin 26.10.2016 / 02:19

Tags