Como juntar arquivos de vídeo do terminal?


9

Eu tentei avidemux2_cli, mencoder, ffmpeg, cat .. Mas isso nem sempre funciona (na maioria das vezes o erro é que o codec de áudio não é o mesmo) Talvez eu coloque 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 do gato é que ele não mostra erro, mas nem sempre funciona. Assim como o complete.avi será exatamente o mesmo com o Sample.avi

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

Erro no Mencoder: Todos os arquivos devem ter codec de áudio e formato idênticos para a cópia -oac. Portanto, o complete.avi é o mesmo com o Sample.avi

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

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


1
Eu acho que você precisa para mudar o codec de vídeo e codec de áudio de arquivos de entrada para os mesmos codecs, se você quiser combinar dois vídeos com segurança,
vine_user

E como posso fazer isso?
11556 Leon Stanos

Você pode usar mencodercom as opções -ovc e -oac. Veja: mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html
vine_user

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 "taxa de bits" 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 "join-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.


2
Apenas pensei em reforçar que o nome deste utilitário é mencoder(ou seja, Media ENcoder). Muitas pessoas ficam presas ao digitar acidentalmente memcoder.
Val

os tamanhos dos quadros também não precisam corresponder?
Elder Geek

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 que o Openshot!

Primeiro, tentei a opção '-oac copy', mas parece que o codec de áudio nos meus vídeos não permite. 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 é de áudio não compactado.

Espero que isto ajude


2
MEncoder svn r34540 (Ubuntu), construído com a equipe MPlayer do gcc-4.7 (C) 2000-2012 O MPlayer foi compilado sem o libfaac. Consulte README ou DOCS.
Philippe Gachoud 22/03

1

Uma solução que encontrei aqui me ajudou a juntar, sem perda, dois arquivos mp4:

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

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


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 corretamente em vídeos mesclados. e embora o MP4Box funcione bem se os clipes tiverem especificações idênticas, em alguns casos eu seria atingido pela mensagem "Nenhuma trilha de destino adequada encontrada - criando uma nova"; nesse caso, o Totem (também conhecido como Vídeos) não reproduziria esse segmento no arquivo associado Após algumas tentativas e erros e pesquisas adicionais, desenvolvi o método a seguir para lidar com a junção de vídeos que até agora funcionavam sempre com qualidade aceitável (para mim).

Se os tamanhos dos quadros não corresponderem (erros de associação pertencentes à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 máxima compatibilidade de codec) para segmentos incomparáveis

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 (erros de associação pertencentes às faixas de áudio):

Normalizar áudio

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

Exemplo: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4(observe que libmp3lame é um codec para áudio mp3) Você pode obter uma lista de codificadores suportados pelo avconv emitindo o comando avconv -codecsou restringir as coisas a um código específico, avconv -codecs|grep *codecname*por exemploavconv -codecs|grep mp3

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

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

Se você usar o MP4Box (recomendado para o MP4) para participar, poderá achar que precisa processar todos os clipes com avconv, se as especificações parecem coincidir 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 quadros B como referência. Isso parece resultar em áudio fora de sincronia ao ingressar, mesmo ao optar por 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:

/superuser/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player

/programming/20703160/problems-with-setting-constant-bitrate-by-using-avconv

https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr

Nota: Até onde eu sei, outros formatos (contêineres) têm restrições semelhantes para combinar o tamanho do quadro e as taxas de áudio; portanto, isso também funcionará para avi se você tentar ingressar via cat ou mencoder depois de normalizar o vídeo e o áudio .

Opcional: Use o Handbrake para recodificar o arquivo unido para um 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)


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

1

Consegui usar o VLC Media Player para juntar / 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+ Te digitando:

sudo apt update
sudo apt install vlc

Depois que 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 quando os arquivos forem ingressados ​​/ mesclados. Você pode encontrar mais informações aqui .

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.