ffmpeg를 사용하여 비디오에 새 오디오 (믹싱하지 않음)를 추가하는 방법은 무엇입니까?
나는 다음과 같은 명령을 사용했다 :
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)에서audio 스트림을 선택하십시오 .
두 개의 오디오 입력을 하나로 믹싱 / 결합
에서 비디오를 촬영 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
이전 버전의 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를 사용하십시오 .
아무것도 나를 위해 전혀 효과가 없었습니다 (내 입력 .mp4 비디오에 오디오가 없었습니다이라고 생각합니다).
ffmpeg -i input_video.mp4 -i balipraiavid.wav -map 0:v:0 -map 1:a:0 output.mp4
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());
}
}
'IT' 카테고리의 다른 글
| 두 속성과 일치하도록 XPath 쿼리를 작성하는 방법은 무엇입니까? (0) | 2020.07.17 |
|---|---|
| 이미지 아래에 캡션을 작성하는 방법은 무엇입니까? (0) | 2020.07.17 |
| 방랑자가 시작하지 않습니다. (0) | 2020.07.17 |
| .bash_profile, .bashrc에 대한 정보와 메시지는 어디에 작성해야합니까? (0) | 2020.07.17 |
| 전자 메일 주소를 사용자 이름으로 사용할 수 있습니다 Microsoft.AspNet.Identity를 구성하십시오. (0) | 2020.07.16 |