Jak dodać nowy dźwięk (nie miksowanie) do wideo za pomocą ffmpeg?
Użyłem komendy typu:
ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio
W najnowszej wersji do dodawania nowej ścieżki audio do wideo (nie mix).
Ale zaktualizowałem ffmpeg do najnowszej wersji ( FFmpeg wersja git-2012-06-16-809d71d) i teraz w tej wersji parametr -newaudio
nie działa.
Powiedz mi proszę, jak Mogę dodać nowy dźwięk do mojego wideo (nie mix) za pomocą ffmpeg
.
6 answers
Dodaj audio Do Wideo: stream copy
ffmpeg -i video.avi -i audio.mp3 -codec copy -shortest output.avi
- pominięcie opcji
-map
użyje domyślnego wyboru strumienia . Będzie to działać, jeśli wejście wideo nie ma dźwięku. - ten przykład używa
-codec copy
do stream copy (bez ponownego kodowania; jakość jest zachowana i jest szybka). - opcja
-shortest
daoutput.avi
taki sam czas trwania jak najkrótsze wejście.
Dodaj audio do wideo: re-encode
Jeśli twoje wyjście nie podoba się formaty oryginalne, lub jeśli chcesz zmienić formaty, możesz podać kodery:
ffmpeg -i video.avi -i audio.mp3 -c:v libx264 -c:a libvorbis -shortest output.mkv
Aby ręcznie wybierać określone strumienie
Czasami wybór domyślnego strumienia nie daje pożądanego wyniku. W tym przykładzie video.mp4
ma wideo i audio, a audio.m4a
ma tylko dźwięk. Użyj -map
, aby wybrać wideo z video.mp4
i audio z audio.m4a
:
ffmpeg -i video.mp4 -i audio.m4a -map 0:v -map 1:a -c copy -shortest output.mp4
-
-map 0:v
- z wejścia0
(pierwsze wejście, czylivideo.mp4
) wybierzv
ideo stream(s). -
-map 1:a
- Z Wejścia1
(drugie wejście, którym jestaudio.m4a
) wybierz strumień(y)a
udio.
Miksowanie / łączenie dwóch wejść audio w jedno
Weź wideo z video.webm
i użyj filtr amerge, Aby połączyć dźwięk z video.webm
i audio.oga
:
ffmpeg -i video.webm -i audio.oga -filter_complex \
"[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a libvorbis -ac 2 -shortest out.webm
Generowanie cichego dźwięku
Możesz użyć filtra anullsrc , Aby utworzyć cichy strumień audio. Filtr pozwala wybrać żądany układ kanałów (mono, stereo, 5.1, itp.) oraz częstotliwość próbkowania.
ffmpeg -i video.mp4 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-c:v copy -shortest output.mp4
Zobacz też
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:35
Muzyka Mp3 do wav
ffmpeg -i music.mp3 music.wav
Truncate, aby dopasować wideo
ffmpeg -i music.wav -ss 0 -t 37 musicshort.wav
Mix muzyki i wideo
ffmpeg -i musicshort.wav -i movie.avi final_video.avi
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-24 05:55:19
Jeśli wejściowe wideo ma wiele ścieżek audio i musisz dodać jeszcze jedną, użyj następującego polecenia:
ffmpeg -i input_video_with_audio.avi -i new_audio.ac3 -map 0 -map 1 -codec copy output_video.avi
-map 0
oznacza kopiowanie (dołączanie) wszystkich strumieni z pierwszego pliku wejściowego (input_video_with_audio.avi
) i -map 1
oznacza dołączanie wszystkich strumieni (w tym przypadku jeden) z drugiego pliku wejściowego (new_audio.ac3
).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 13:21:01
Żadne z tych rozwiązań nie zadziałało. Mój oryginalny dźwięk był nadpisywany lub otrzymywałem błąd w stylu "nie udało się zmapować pamięci" z bardziej złożonym przykładem "amerge". Wygląda na to, że potrzebowałem-filter_complex amix.
ffmpeg -i videowithaudioyouwanttokeep.mp4 -i audiotooverlay.mp3 -vcodec copy -filter_complex amix -map 0:v -map 0:a -map 1:a -shortest -b:a 144k out.mkv
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-13 20:42:34
Jeśli używasz starej wersji FFMPEG i nie możesz uaktualnić, możesz wykonać następujące czynności:
ffmpeg -i PATH/VIDEO_FILE_NAME.mp4 -i PATH/AUDIO_FILE_NAME.mp3 -vcodec copy -shortest DESTINATION_PATH/NEW_VIDEO_FILE_NAME.mp4
Zauważ, że użyłem - vcodec
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-15 11:06:36
Kod do dodawania audio do wideo za pomocą ffmpeg.
Jeśli długość dźwięku jest większa niż długość wideo, spowoduje to przecięcie audio na długość wideo. Jeśli chcesz full audio in video Usuń-najkrótszy z cmd.
String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy", ,outputFile.getPath()};
private void execFFmpegBinaryShortest(final String[] command) {
final File outputFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/videoaudiomerger/"+"Vid"+"output"+i1+".mp4");
String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy","-shortest",outputFile.getPath()};
try {
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
@Override
public void onFailure(String s) {
System.out.println("on failure----"+s);
}
@Override
public void onSuccess(String s) {
System.out.println("on success-----"+s);
}
@Override
public void onProgress(String s) {
//Log.d(TAG, "Started command : ffmpeg "+command);
System.out.println("Started---"+s);
}
@Override
public void onStart() {
//Log.d(TAG, "Started command : ffmpeg " + command);
System.out.println("Start----");
}
@Override
public void onFinish() {
System.out.println("Finish-----");
}
});
} catch (FFmpegCommandAlreadyRunningException e) {
// do nothing for now
System.out.println("exceptio :::"+e.getMessage());
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-31 05:23:28