2011-11-19 4 views
2

솔직히, 나는 어디에서 시작해야할지 모르겠다. 하나의 트랙에 몇 개의 mp3 트랙을 병합하는 프로그램이 있어야합니다 (연결하지 않고 실제로 병합, 한 번에 몇 개의 audiotrack을 재생하는 것과 같이). 사용 가능한 라이브러리 또는 자동으로이를 수행 할 다른 기본 프로그램이 있습니까? 또한 각 트랙의 볼륨을 변경해야하며 어디서부터 시작해야할지 모르겠습니다.하나의 트랙에 여러 개의 MP3 트랙을 병합하기.

속도와 효율성이 중요한 요소이기 때문에 게으른 것을하고 재생하고 캡처 할 수는 없습니다.

답변

2
난 당신이 따를 수있는 몇 가지 일반적인 단계를 그리는하려고합니다

:

  1. 당신은 원시 오디오로 MP3 파일을 압축 해제해야합니다. 어떤 응용 프로그램을 개발 중인지 에 따라 madlib (GPL) 또는 ffmpeg (LGPL)을 사용할 수 있습니다.

  2. 모든 트랙을 same frequency (다시 샘플링)으로 정규화하고 출력을 bit-depth으로 결정해야합니다.

  3. 이제 모든 트랙을 믹싱 할 수 있습니다. 채널이 2 개 있다고 가정하면 기본 아이디어는 트랙의 오른쪽 채널의 모든 샘플 평균을 계산 한 다음 왼쪽 채널에서도 동일하게 적용됩니다. 여기에는 많은 접근법이 있으며 여기에서 의 결과에 대한 성능/품질의 균형을 결정해야합니다. 예제의 경우 일부 개발자는 clipping (d)effects을 처리하기 위해 부동 소수점 포인트에서 혼합 작업을 선호하지만 성능에 영향을주기 때문에 은 다른 사람에게 조언 할 수 있습니다. 정수 기반 혼합에 대한 좋은 게시물이 있습니다 here (SO에서 여러 번 참조 된 되었습니다). 또한이 단계 전에 (또는 도중)이 단계에서 정규화하려는 채널의 샘플에 승수를 사용하여 일부 audio normalization 프로세스를 구현할 수 있습니다.

  4. 마지막으로 혼합 오디오를 다시 압축 할 수 있습니다. 예를 들어 lame을이 작업에 사용하거나 ffmpeg를 한 번 더 사용할 수 있습니다.

여기에 여러 단계 (또는 모두)가 적용되는 많은 DSP packages for linux이 있습니다. 내 마음에 오는 하나의 GPL 프로젝트는 VLC (VideoLan 클라이언트)입니다. VLM (VideoLan Manager)을 사용하여 외부 프로세스로 호출하거나 일정을 잡으려고 할 수 있습니다. documentation에서 :

예약 방송 :

new my_media broadcast enabled 
setup my_media input my_video.mpeg input my_other_movie.mpeg 
setup my_media output #rtp{mux=ts,dst=239.255.1.1,sdp=sap://,name="My Media"} 

은 물론, VLC에서 출력 스트림은 또한 로컬 파일이 될 수 있습니다.

편집 : 또한 accepted answer이 유용 할 수있는 곳에서 Sox을 사용하는 것이 좋습니다. 홈페이지에서 :

삭스

는 크로스 플랫폼 (윈도우, 리눅스, 맥 OS X 등) 명령 줄 다른 형식으로 컴퓨터 오디오 파일의 다양한 포맷을 변환 할 수 있습니다 유틸리티입니다. 또한이 사운드에 다양한 효과를 적용 할 수 있습니다. 파일 (...)

1

대담하게 별도의 트랙으로 믹스 할 수 있습니다. 직접 코드를 작성해야합니까?

데이터 형식이 원시 형식 인 경우 가능한 샘플 값의 중간 점을 0으로 처리 할 수 ​​있습니다. (8 비트 샘플 .. 256 값 가능 .. 127은 0입니다 .. 0 또는 255의 샘플은 최대 값입니다. 음량).

단지 각 스트림의 값을 추가 (클리핑 염두)

믹스 감소 분열을 볼륨을 증가 곱 볼륨 시프트를 조정하고, (클리핑 염두) 한 번에 하나 개의 샘플. http://www.4front-tech.com/pguide/audio.html

+0

CLI를 통해 수행해야합니다. –

+0

절름발이, ogg를보십시오. 원시 오디오 스트림 (말 그대로 샘플 당 스피커 코일이 얼마나 많은 전력을 소비하는지 나타내는 일련의 숫자입니다)이 필요합니다. 나는 더 자세한 설명을 위해 나의 대답을 업데이트하고있다. – snapfractalpop

1

이 할 수있는 실시간 충분한 프로세서 성능 제공 : 여기

너무 좋은 링크입니다. 실시간으로 N 개의 사본/스레드를 실행할 수있을 정도로 빠르며, mp3 파일, 실시간 소프트웨어 MP3 디코더 블록 (자신의 mp3 플레이어/시각화 프로그램을 만드는 데 사용되는 것과 유사)을 읽을 수 있어야합니다. 아마도 일부 DSP 샘플 레이트 변환 블록 및 DSP 믹서 블록 일 수 있습니다. 모든 소프트웨어. 모든 처리 스레드를 대기열 및 데이터 FIFO와 함께 묶습니다.

이러한 블록 (디코더, 리샘플링 기) 중 일부에는 라이브러리 코드를 사용할 수 있지만 잠재적 인 라이센스 제한 사항을 유의하십시오.

관련 문제