2010-04-16 7 views
6

나는 몇 개의 wav 파일과 하나의 wav 또는 mp3 파일로 믹스하고 싶은 mp3 파일을 가지고 있습니다. C/C++/Obj-C (iPhone)를 사용하고 있습니다. 나는 이런 종류의 일에 정말로 경험이 없다. 누군가가 나에게 몇 가지 조언을 해줄 수 있다면, 나는 매우 감사 할 것입니다.iPhone에서 사운드 파일 믹싱

기본적으로 내가하고 싶은 일은 예를 들어 Audacity와 같은 유사한 작업이지만 프로그래밍 방식으로 수행합니다. 오디오 파일을 쉽게 열고 정의 된 위치에 새로운 파일에 붙여 넣을 수있는 사운드 라이브러리가 있습니까? 믹싱은 걱정할 필요가없는 부분입니까?

감사합니다.

+0

파일을 동시에 재생하거나 섞어서 결과를 파일에 쓸지를 명확히 할 수 있습니까? 후자의 경우 미리 파일을 하나씩 작성하기 위해 사전 처리 할 수없는 이유가 있습니까? 전자 메일의 경우 Audio Queue Services 또는 OpenAL을 읽으려는 경향이 있습니다. 둘 다 꽤 심오한 주제입니다. – warrenm

+0

수정 된 질문이 더 명확합니다. 예, 소리가 동시에 나올 수 있습니다. – quano

+0

@quano hv u 그 해결책을 찾으세요 ??? – Aadil

답변

0

Multimedia support을 시작으로 많은 정보가 포함되어 있습니다. "단일 스트림에 다중 오디오 스트림을 혼합 할 수 있습니다"-

  • 오디오 유닛 프레임 워크
    • 멀티 채널 믹서 :

      아이폰의 오디오를 혼합하는 3 가지 방법이 있습니다 : 여기 추출물이다

    • 3D 믹서 장치는 -
  • 를 OpenAL이 사용하는 "당신은, 다중 오디오 스트림을 혼합 스테레오 출력 패닝을 지정, 샘플 속도를 조작 할 수 있습니다" iPhoneMultichannelMixerTest을 : 게임 개발에

은 또한 다음과 같은 샘플을 확인

2 개의 입력 버스는 입력 볼륨 컨트롤이 각각 생성됩니다. 전체적인 믹서 출력 볼륨 컨트롤도 제공되며 각 버스는 활성화 또는 비활성화 될 수 있습니다.

+0

나는 (iPhone에서) 파일을 재생하고 싶지 않고, 그냥 파일을 가지고 새 파일에 저장하고 싶다. :) 링크를 확인하겠습니다. – quano

3

리니어 PCM의 두 사운드 버퍼를 함께 사용하면 각 샘플 값을 함께 추가 할 수 있으며 물론 오버플로. 일반적으로 버퍼에 부동 소수점 값을 사용하므로 파일로 돌아갈 때 문제가 발생합니다. iPhone에서 CoreAudio를 사용할 수 있어야합니다. 다양한 형식의 사운드 파일을 열고 읽거나 쓸 수있는 모든 수단이 있습니다. Mac에없는 iPhone에 더 높은 수준의 API를 사용할 수 있다고 생각합니다. Apple 문서를 찾아보십시오.

+0

그래, 나는 이것을 잘 이해했다. 그렇게하는 것은 어렵지 않지만 약간의 작업이 필요합니다. 나는 누군가가 이것을하기 전에해야한다고 생각했다. 아마도 그것을위한 간단한 라이브러리를 만들었을지도 모른다. 그러면 시간이 절약됩니다. 파일을 읽고, 가치를 추가하고, 글을 쓰는 것이 내가 생각할 수있는 가장 흥미로운 것은 아닙니다.:) 그냥 사소한 기능처럼 보인다. 나는 이것을 실제로하는 이미 존재하는 lib를 찾는 것이 얼마나 어려운지에 정말로 놀랐다. 지금까지 필자는 여러 파일을 열어 특정 위치에 배치하고 단일 파일로 혼합하는 방법을 설명하는 문서에서 아무 것도 발견하지 못했습니다. – quano

+0

좋아,하지만 API에 대한 지원이 있다면, 올바르게 기억한다면 파일 형식의 일부 속성으로 구조체를 채워야하고 라이브러리 함수 중 일부로 보내야합니다. 이 작업을 수행한지 얼마되지 않았지만 여러 가지 오디오 형식의 형식 변환이 중요하지는 않습니다. API로 지원되고 완료되었습니다. 타임 라인과 같은 것 실시간 재생을하지 않는 한 자신을 발명해야한다고 생각합니다. API에서도 지원됩니다. 그러나 bufferindex를 얻기 위해 (시간 * 샘플 requency)까지 얻을 수 있기 때문에 그렇게하기가 너무 어렵지 않아야합니다. – Fred

2

특히 Audacity의 기능을 찾고있는 경우에는 PortAudio을 사용합니다 (MIT 라이선스처럼 보입니다). 아마 당신은 그것을 사용하려고 할 수 있습니까?