Come unire file video dal terminale?


9

Ho provato avidemux2_cli, mencoder, ffmpeg, cat .. Ma questo non funziona sempre (con il più delle volte l'errore è che il codec audio non è lo stesso) Forse ho messo opzioni sbagliate nei comandi.

Quindi i comandi:

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

Il problema del gatto è che non mostra errori ma non funziona sempre ... Come il complete.avi sarà esattamente lo stesso con Sample.avi

Fmmpeg non fa nulla. Complete.avi è sempre lo stesso con Sample.avi

Errore Mencoder: tutti i file devono avere un codec audio e un formato identici per la copia -oac. Quindi complete.avi è lo stesso con Sample.avi

avidemux2_cli non c'è errore ma complete.avi è di nuovo lo stesso con Sample.avi ..

Quindi, per riassumere, tutti i complete.avi sono gli stessi con Sample.avi .. E il problema è che non hanno lo stesso codec audio (credo) .. Qualche idea?


1
Penso che sia necessario modificare il codec video e il codec audio dei file di input negli stessi codec, se si desidera combinare due video in modo sicuro,
vine_user

E come posso farlo?
Leon Vitanos,

È possibile utilizzare mencodercon l'opzione -ovc e l'opzione -oac. Vedi: mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html
vine_user

Risposte:


10

Se si desidera combinare due video in modo sicuro, è necessario modificare il codec video e il codec audio dei file di input negli stessi codec.

Ad esempio, usando xvid (codec video) e mp3lame (codec audio):

sudo apt-get install mencoder libxvidcore4 libmp3lame0

puoi codificare i video di input con i comandi seguenti:

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

Per abbinare i tuoi video, puoi cambiare le opzioni "bitrate" ecc. (E anche i codec).

Se i nomi dei video codificati sono "video1.avi" e "video2.avi" e il nome del video di output è "join-video.avi",

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

Usando questo comando, puoi creare il file video unito.


2
Ho solo pensato di rinforzare il nome di questo util mencoder(ad es. Media ENcoder). Molte persone rimangono bloccate digitando accidentalmente memcoder.
Val

anche le dimensioni del telaio non devono corrispondere?
Elder Geek,

4

Ho dovuto unire tre pezzi di video con codec identici. Leggendo le risposte precedenti sono riuscito a fare questo:

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

Molto più veloce e più semplice di Openshot!

Per prima cosa ho provato l'opzione '-oac copy', ma sembra che il codec audio nei miei video non lo permetta. Ho ricevuto un messaggio di errore che consigliava '-oac pcm'. Il codec pcm non è una buona opzione: il file risultante è molto grande e 2/3 di esso è audio non compresso.

Spero che sia di aiuto


2
MEncoder svn r34540 (Ubuntu), costruito con gcc-4.7 (C) 2000-2012 MPlayer Team MPlayer è stato compilato senza libfaac. Vedi README o DOCS.
Philippe Gachoud,

1

Una soluzione che ho trovato qui mi ha aiutato a unire senza perdita due file mp4:

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

Ho provato ad usare Avidemux, ma ho avuto problemi con l'audio nel video unito.


1

I tuoi file non si uniranno correttamente perché qualcosa non corrisponde.

Come molti altri ho avuto problemi con la sincronizzazione del suono correttamente nei video uniti. e mentre MP4Box funziona bene se le clip hanno specifiche identiche, in alcuni casi verrei colpito dal "Nessun binario di destinazione adatto trovato - creandone uno nuovo", nel qual caso Totem (aka Video) non riprodurrebbe quel segmento nel file unito Dopo alcune prove, errori e ulteriori ricerche ho sviluppato il seguente metodo per gestire i video che finora ha funzionato ogni volta con una qualità accettabile (per me).

Se le dimensioni dei fotogrammi non corrispondono (errori di unione relativi alle tracce video):

Normalizza il video senza interrompere l'audio (-c: una copia) impostando i vincoli (divisibile per 8 per la massima compatibilità del codec) per segmenti senza pari

Comandi di esempio

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 l'audio non corrisponde (errori di unione relativi alle tracce audio):

Normalizza audio

Elabora l'audio senza interrompere il video (copia c: v) in modo che tutte le clip corrispondano al codec, alla frequenza e al bitrate desiderati con c: una frequenza -ar del codec come -ar 48000 e la velocità in bit con b: a 128k per stereo (64K per canale sembra un buon obiettivo) o qualunque corrispondenza.

Esempio: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4(nota che libmp3lame è un codec per l'audio mp3) Puoi ottenere un elenco di codificatori supportati da avconv emettendo il comando avconv -codecso restringere le cose a un codice specifico avconv -codecs|grep *codecname*per esempioavconv -codecs|grep mp3

Ora che abbiamo normalizzato i file, possiamo unirli. In questo esempio, unirò i file con MP4Box. Se non lo hai, puoi ottenerlo emettendo il comandosudo apt-get install gpac

Unisci i file con il comando MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4(nota che non esiste un gatto prima del primo file e che ogni file aggiuntivo è preceduto da -cat e il file di destinazione è preceduto da -out)

Se si utilizza MP4Box (consigliato per MP4) per unirsi, è possibile che sia necessario elaborare tutte le clip con avconv se le specifiche sembrano corrispondere o meno per evitare l'errore "Nessuna traccia di destinazione adatta trovata - crearne una nuova (tipo vide)"

Nota: ho riscontrato che Avidemux ha problemi con i video codificati utilizzando i file H.264 / AVC (per totem) a causa dei fotogrammi B come riferimento. Ciò sembra comportare l'audio non sincronizzato quando ci si unisce anche quando si sceglie di copiare sia l'audio che il video senza remux. Si arresta in modo anomalo quando non si sceglie la modalità provvisoria e non è sincronizzato quando si utilizza la modalità provvisoria

fonti:

/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: per quanto ne so altri formati (contenitori) hanno vincoli simili per la corrispondenza delle dimensioni dei fotogrammi e delle frequenze audio, quindi questo può funzionare anche per avi se si tenta di unirsi tramite cat o mencoder dopo aver normalizzato video e audio .

Opzionale: utilizzare il freno a mano per ricodificare il file unito per dimensioni inferiori, se lo si desidera con un framerate variabile e un'impostazione di qualità costante di 25 (impostazioni suggerite - regolare secondo le esigenze del materiale e le aspettative di qualità)


1

Dovresti digitare così:

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

Se si desidera aggiungere più file:

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

Sono stato in grado di utilizzare VLC Media Player per unire / unire più file video. VLC può essere scaricato dal software Ubuntu oppure è possibile installarlo da un terminale premendo Ctrl+ Alt+ Te digitando:

sudo apt update
sudo apt install vlc

Una volta installato VLC, apri un terminale nella cartella con i file video e quindi digita:

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

Questo apre la GUI VLC e puoi chiuderla una volta che i file sono uniti / uniti. Puoi trovare maggiori informazioni qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.