2013-04-08 3 views
2

현재 Android app을 개발 중이며 오디오 파일의 Waveform을 렌더링 할 수 있어야합니다. 이미 Visualizer 클래스에 대해 읽었지만 클래스는 실시간 계산을 수행하도록 설계되었습니다. 내가하고 싶은 일은 오디오 파일을 거쳐 전체 오디오 파일의 파형을 포함하는 .PNG 파일을 생성하는 것입니다.안드로이드 라이브러리 생성 용 오디오 파일의 파형

는 기본적으로 사운드 클라우드 같은 작업을 수행합니다이 작업을 수행 할 수있는 라이브러리 http://www.djban.com.br/wp-content/uploads/soundcloud-waveform.png

이 있습니까? 아니면 오디오 파일의 진폭 어레이를 얻을 수 있는지 말해 줄 수 있습니까?

+0

헤이 @heisenbug, 당신이 그럭저럭 일할 수 있으면, 약간의 포인터를 보여줘야한다. – amalBit

답변

1

라이브러리를 모르지만 작동시키기는 쉽습니다.

먼저 웨이브 폼의 진폭을 얻으려면 PCM 형식의 오디오가 필요합니다. 임의의 오디오 파일 (특히 mp3)에 대해 파형이 필요하다고 가정하면 형식을 변환하는 방법을 찾아야합니다. 빠른 Google 검색은 this result을 제공합니다. 참고 : 마이크에서 나오는 오디오를 재생하기 만하면됩니다. PCM 형식의 오디오 데이터를 전송하므로 변환을 피할 수 있습니다.

샘플을 가져온 후에는 진폭을 어떻게 든 그릴 필요가 있습니다. 몇 가지 옵션이 있지만 Canvas을 사용해 보겠습니다. 거기에 선 (또는 일반적인 모양)을 그리고 export it to a file을 그리거나 화면에 그릴 수 있습니다.

그릴 수있는 또 다른 옵션은 OpenGL입니다. 이전에는 사용하지 않았다면 더 복잡해졌지만 아마도 더 빠를 것입니다.

+0

빠른 답변 주셔서 감사합니다.하지만 파일을 PCM 형식으로 변환해야하는 이유를 설명해 주시겠습니까? 이점은 무엇입니까? 안드로이드가 열 수있는 다른 형식으로 샘플을 가져올 수 없습니까? 드로잉 프로세스가 문제가 아니며 Android에 익숙합니다. 오디오 파일의 샘플을 읽는 방법과 이러한 샘플의 진폭을 얻을 수있는 방법입니다. 응답 시간을내어 주셔서 감사합니다! – Heisenbug

+0

mp3 파일에 진폭 정보가 없습니다 (적어도 직접). 그래서 PCM 또는 비슷한 형식 (예 : 비 압축 WAV)으로 변환해야합니다. Android의 MediaPlayer는 mp3 파일을 재생할 수 있지만 진폭 정보를 제공하지 않습니다. 나는 그것을 시도하지는 않았지만, mp3plugin에 관한 게시물에서 꽤 쉽게 보입니다. 변환 된 파일을 저장할 필요가 없으며 버퍼로 약간만 재생하면됩니다. – Esparver