2012-01-31 3 views
1

나는이 프로그램을 Java로 작성하여 X 개의 오디오 파일을 가져 와서 하나의 오디오 파일로 섞습니다.Java에서 오디오 파일 섞기

예 :

가져 오기 : "Audio1.wav", "Audio2.wav".
그들을 섞는다.
Export : "Result.wav"

지금까지 가져 오기 및 내보내기 방법이 있지만 내 문제는 파일을 1 개의 파일로 혼합하는 것입니다.

편집 :일부 코드입니다. 내가 파일을 가져 와서 결과를 저장하는 방법

private static File openDialog(){ 
    JFileChooser open = new JFileChooser(); 
    int returnVal = open.showOpenDialog(open); 
    if (returnVal == JFileChooser.APPROVE_OPTION){ 
     return open.getSelectedFile(); 
    } 
    return open.getSelectedFile(); 
} 
private static File saveDialog(){ 
    JFileChooser save = new JFileChooser(); 
    FileFilter filter = new FileNameExtensionFilter("Audio files", ".wav"); 
    save.setFileFilter(filter); 
    //save.addChoosableFileFilter(new AudioFilter()); 
    int returnVal = save.showSaveDialog(save); 
    if (returnVal == JFileChooser.APPROVE_OPTION){ 
     return save.getSelectedFile(); 
    } 
    return save.getSelectedFile(); 
} 

private static List<File> importFile(File file){ 
    files.add(file); 
    audioElements(); 
    return files; 
} 

이입니다. 이 오디오는 동일한 샘플 크기와 주파수 LPCM으로 인코딩되었다고 가정한다

result[i] = audio1[i] + audio2[i]; 

+0

차가움. 질문 있니? .. 당신이 시도한 것을 보여주는 모든 코드? –

+0

제 질문은'AudioInputStream' 파일을 어떻게 혼합할까요? – rec

답변

2

개의 오디오 스트림을 믹싱 샘플들의 합을 복용 한 쉬울 수 있다는 것이다. 오디오가 μ-law 또는 A-law와 같은 LPCM이 아닌 경우 비선형 인코딩을 고려한 수식이 필요합니다. 샘플 크기가 다른 경우 동일한 크기로 변환해야합니다. 샘플 주파수가 다른 경우 재 샘플링해야합니다.

+0

+1 @Joni Salonen 더 많은 제안은 곱셈과 나눗셈을 사용하여 믹스의 비율을 제어합니다. 당신의 예제에서 이것은 50-50이 될 것이고 결과가 아니라면 결과를 위해 헤드 룸이 필요할 것입니다. 2 – therobyouknow

+0

나는 이것이 어떻게 작동하는지 미안합니다. 예를 들면 다음과 같이 혼합하고 싶습니다. AudioInputStream clip1 = AudioSystem.getAudioInputStream (files.get (0)); AudioInputStream clip2 = AudioSystem.getAudioInputStream (files.get (1)); ' – rec

+0

나는 또한 같은 문제에 직면 해있다. http://stackoverflow.com/questions/9908724/how-to-mix-two-pcm-streams-into-single-mp4-file –