나는 다음과 같은 명령을 사용했다 :
ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio
비디오에 새로운 오디오 트랙을 추가하기위한 최신 버전 (믹스 아님).
그러나 ffmpeg를 최신 버전 ( ffmpeg 버전 git-2012-06-16-809d71d )으로 업데이트했지만 이 버전에서는 매개 변수 -newaudio
가 작동하지 않습니다.
을 사용하여 비디오에 새로운 오디오를 추가하는 방법 (믹스 아님)을 알려주십시오 ffmpeg
.
답변
비디오에 오디오 추가 : 스트림 복사
ffmpeg -i video.avi -i audio.mp3 -codec copy -shortest output.avi
-map
옵션을 생략하면 기본 스트림 선택 이 사용됩니다 . 비디오 입력에 오디오가없는 경우 작동합니다.- 이 예는 복사
-codec copy
를 스트리밍 하는 데 사용 됩니다 (재 인코딩 없음, 품질이 유지되고 빠름). - 이
-shortest
옵션은output.avi
가장 짧은 입력과 동일한 지속 시간을 만듭니다 .
비디오에 오디오 추가 : 다시 인코딩
출력이 원래 형식을 좋아하지 않거나 형식을 변경하려는 경우 인코더를 지정할 수 있습니다.
ffmpeg -i video.avi -i audio.mp3 -c:v libx264 -c:a libvorbis -shortest output.mkv
특정 스트림을 수동으로 선택하려면
때로는 기본 스트림 선택으로 원하는 결과를 얻지 못할 수 있습니다. 이 예 video.mp4
에는 비디오 및 오디오 audio.m4a
가 있으며 오디오 만 있습니다. -map
에서 비디오 video.mp4
및 오디오 를 선택하는 데 사용하십시오 audio.m4a
.
ffmpeg -i video.mp4 -i audio.m4a -map 0:v -map 1:a -c copy -shortest output.mp4
-map 0:v
– 입력0
(첫 번째 입력, 즉video.mp4
)에서v
이데 오 스트림을 선택하십시오 .-map 1:a
– 입력1
(두 번째 입력 인audio.m4a
)에서a
udio 스트림을 선택하십시오 .
두 개의 오디오 입력을 하나로 믹싱 / 결합
에서 비디오를 촬영 video.webm
하고, 사용 amerge 필터 에서 오디오를 결합 video.webm
하고 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
조용한 오디오 생성
anullsrc 필터 를 사용하여 자동 오디오 스트림을 만들 수 있습니다 . 필터를 사용하면 원하는 채널 레이아웃 (모노, 스테레오, 5.1 등)과 샘플 속도를 선택할 수 있습니다.
ffmpeg -i video.mp4 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-c:v copy -shortest output.mp4
참조
답변
wav로 mp3 음악
ffmpeg -i music.mp3 music.wav
비디오에 맞게 자르기
ffmpeg -i music.wav -ss 0 -t 37 musicshort.wav
음악과 비디오 믹스
ffmpeg -i musicshort.wav -i movie.avi final_video.avi
답변
입력 비디오에 여러 개의 오디오 트랙이 있고 하나 더 추가해야하는 경우 다음 명령을 사용하십시오.
ffmpeg -i input_video_with_audio.avi -i new_audio.ac3 -map 0 -map 1 -codec copy output_video.avi
-map 0
는 첫 번째 입력 파일 ( input_video_with_audio.avi
) 에서 모든 스트림을 복사 (포함)하고 두 번째 입력 파일 ( ) -map 1
에서 모든 스트림 (이 경우 하나)을 포함하는 것을 의미합니다 new_audio.ac3
.
답변
이 솔루션 중 어느 것도 나를 위해 일한 적이 없습니다. 원래 오디오를 덮어 쓰거나 더 복잡한 ‘암호’예제와 함께 “메모리를 매핑하지 못했습니다”와 같은 오류가 발생했습니다. -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
답변
아무것도 나를 위해 전혀 효과가 없었습니다 (내 입력 .mp4 비디오에 오디오가 없었기 때문이라고 생각합니다).
ffmpeg -i input_video.mp4 -i balipraiavid.wav -map 0:v:0 -map 1:a:0 output.mp4
답변
이전 버전의 FFMPEG를 사용하고 있고 업그레이드 할 수없는 경우 다음을 수행 할 수 있습니다.
ffmpeg -i PATH/VIDEO_FILE_NAME.mp4 -i PATH/AUDIO_FILE_NAME.mp3 -vcodec copy -shortest DESTINATION_PATH/NEW_VIDEO_FILE_NAME.mp4
-vcodec를 사용 했습니다.
답변
ffmpeg를 사용하여 비디오에 오디오를 추가하는 코드입니다.
오디오 길이가 비디오 길이보다 길면 오디오를 비디오 길이로 자릅니다. 비디오에서 전체 오디오를 원하면 cmd에서 -shortest를 제거하십시오.
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());
}
}