2011-05-01 07:45:34 +0000 2011-05-01 07:45:34 +0000
178
178

Jak połączyć plik audio i wideo w ffmpeg

Chcę połączyć plik audio (format .wav lub .au) z plikiem wideo (format .mp4).

Proszę mi zasugerować jak to zrobić. Chcę połączyć ten plik z nowym plikiem wideo w formacie .mp4. Polecenie ffmpeg byłoby bardzo mile widziane.

Odpowiedzi (5)

286
286
286
2011-05-01 09:53:57 +0000

Łączenie wideo i audio, z ponownym kodowaniem audio

Zobacz ten przykład, wzięty z ten wpis na blogu ale zaktualizowany dla nowszej składni. Powinno to być coś w efekcie:

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

Tutaj zakładamy, że plik wideo nie zawiera jeszcze żadnego strumienia audio, i że chcemy mieć ten sam format wyjściowy (tutaj, MP4) co format wejściowy.

Powyższa komenda transkoduje audio, ponieważ MP4 nie mogą przenosić strumieni audio PCM. Możesz użyć dowolnego innego pożądanego kodeka audio, jeśli chcesz. Więcej informacji można znaleźć w AAC Encoding Guide .

Jeśli Twój strumień audio lub wideo jest dłuższy, możesz dodać opcję -shortest, aby ffmpeg przestał kodować po zakończeniu jednego pliku.

Kopiowanie audio bez ponownego kodowania

Jeśli Twój kontener wyjściowy może obsługiwać (prawie) dowolny kodek - jak MKV - wówczas możesz po prostu skopiować zarówno strumień audio jak i wideo:

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

Zastępowanie strumienia audio

Jeśli Twój sygnał wejściowy zawiera już audio i chcesz go zastąpić, musisz powiedzieć ffmpeg, który strumień audio ma zostać pobrany:

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

Opcja map sprawia, że ffmpeg używa tylko pierwszego strumienia wideo z pierwszego wejścia i pierwszego strumienia audio z drugiego wejścia dla pliku wyjściowego.

16
16
16
2015-01-10 01:11:26 +0000

Ponieważ nie wolno mi pisać komentarzy do pierwszej odpowiedzi z moją reputacją, uzupełnienie tutaj, ponieważ miałem ten problem podczas kodowania webmsów. Jeśli Twój strumień audio jest na przykład dłuższy niż strumień wideo , musisz go wyciąć lub w przeciwnym razie będziesz miał ostatnią klatkę wideo jako nieruchomy obraz i dźwięk uruchomiony.

Aby wyciąć każdy z tych strumieni, można użyć -ss [hh:mm:ss] -t [ss] przed każdym z -i “file.ext”. -ss […] zdefiniuje punkt wyjścia do wycięcia -t […] zdefiniuje długość segmentu w sekundach

Przykład:

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
8
8
8
2015-04-16 07:18:25 +0000

-open command promt (windows+r ->cmd-\>enter)

-then go to inside the folder where you have audio and video file

apply this cmd

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

Enter…you will get a new file named outPutFime.mp4 (a merged file of audio and video)

5
5
5
2015-03-05 15:29:32 +0000

To zadziałało dla mnie:

ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
1
1
1
2013-03-12 22:47:37 +0000

Spróbuj użyć mencodera (Tak, jest on oparty na ffmpeg, ale nigdy nie wiadomo). Używam argumentu -audiofile. Generalnie jednak używam ffmpeg, więc skorzystaj z tej rady z odrobiną soli.

A jeśli używasz Windows, Mediacoder (niestety już nie open source) działa… to w zasadzie frontend dla wielu koderów gnu i kilku nie wolnych.