Come unire file audio e video in ffmpeg


Risposte:


260

Unione di video e audio, con ricodifica audio

Vedi questo esempio, tratto da questo post di blog ma aggiornato per la sintassi più recente. Dovrebbe essere qualcosa per l'effetto di:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4

Qui, supponiamo che il file video non contenga ancora alcun flusso audio e che tu voglia avere lo stesso formato di output (qui, MP4) del formato di input.

Il comando precedente transcodifica l'audio, poiché gli MP4 non possono trasportare flussi audio PCM. Se lo desideri, puoi utilizzare qualsiasi altro codec audio desiderato. Consulta la Guida alla codifica AAC per maggiori informazioni.

Se il tuo flusso audio o video è più lungo, puoi aggiungere l' -shortestopzione in modo che ffmpeg interromperà la codifica al termine di un file.

Copia dell'audio senza ricodifica

Se il tuo contenitore di output è in grado di gestire (quasi) qualsiasi codec, come MKV, puoi semplicemente copiare sia i flussi audio che video:

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

Sostituzione del flusso audio

Se il video di input contiene già audio e si desidera sostituirlo, è necessario indicare a ffmpeg quale flusso audio prendere:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental \
-map 0:v:0 -map 1:a:0 output.mp4

L' mapopzione fa in modo che ffmpeg utilizzi solo il primo flusso video dal primo input e il primo flusso audio dal secondo input per il file di output.


L'ho provato, ma ffmpeg si blocca durante la fusione
Sandy,

4
non penso che i contenitori mp4 possano avere flussi audio wav. Provaffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
Luca

1
Sto usando questo e sta sostituendo l'audio originale dall'audio in ingresso. Cosa succede se desidero unire l'audio in ingresso con l'audio del video in ingresso?
Iqbal Malik,

Linee di comando molto dolci ...
Chandra Nakka,

Ottimo, ho usato ffmpeg -i video.mp4 -i audio.wav \ -c: v copy -c: un output sperimentale rigoroso.mp4 per unire MP3 con file Wav ... => mp4 5 minuti, rendering 30 secondi ..Grazie
Sonida,

12

Dal momento che non mi è permesso scrivere commenti sulla prima risposta con la mia reputazione, un addendum qui, perché ho avuto questo problema durante la codifica dei web.
Se il tuo flusso audio è ad esempio più lungo del flusso video , devi tagliarlo o altrimenti avrai l'ultimo fotogramma video come fermo immagine e audio in esecuzione.

Per tagliare uno dei due stream, puoi usare -ss [hh: mm: ss] -t [ss] prima di ciascuno dei -i "file.ext".
-ss [...] definirà il punto iniziale da tagliare
-t [...] definirà la lunghezza del segmento in secondi

Esempio:

ffmpeg.exe -ss 00:00:10  -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4

4
Puoi anche usare solo -shortestper tagliare la fine.
nyuszika7h

5

-open comando promt (windows + r -> cmd-> invio)

-quindi vai nella cartella in cui hai i file audio e video

applica questo cmd

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

Inserisci .... otterrai un nuovo file chiamato outPutFime.mp4 (un file unito di audio e video)


2
Non è davvero necessario descrivere come utilizzare la riga di comando qui. È praticamente implicito che gli utenti saranno in grado di capirlo. Soprattutto da quando il richiedente ha specificato FFmpeg. Tuttavia, il -shortesttag è molto elegante. Molto più semplice rispetto alla risposta di @ user136036.
Kat,

3
Ciò ricodificherà tutto, il che probabilmente non è ciò che si desidera.
lunedì


'ffmpeg' non viene riconosciuto come comando interno o esterno,
UniCoder

Devi aggiungere ffmpeg a PATH wikihow.com/Install-FFmpeg-on-Windows
Arete


1

Prova a usare mencoder (Sì, è basato su ffmpeg, ma non lo sai mai). Uso l' -audiofileargomento. In genere uso ffmpeg, quindi segui questo consiglio con un pizzico di sale.

E, se usi Windows, Mediacoder (non più open source purtroppo) funziona ... è fondamentalmente un frontend per molti codificatori gnu e alcuni non liberi.

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.