2009-12-19 4 views
2

저는 서버에 업로드 된 mp3 파일의 그래픽 파형을 만드는 방법을 찾고 있습니다. 약간의 연구에서 mp3가 원시 형식으로 변환해야합니다.하지만이 사운드 파일의 .gif 형식을 만드는 방법에 대해서는 잘 모릅니다.asp.net은 mp3에서 파형 이미지를 만듭니다.

사운드 파일의 90 %가 60 분이 넘습니다.

업로드 직후에이 작업을 수행 할 수 없다는 점을 이해하면 대기열에 넣고 처리해야합니다.

저는 라임과 같은 여러 도서관을 보았습니다. 그러나 나는 무엇을 찾고 있는지를 달성 할 수없는 것 같습니다.

올바른 방향으로 어떤 포인터가 크게 감사하겠습니다!

대단히 감사합니다! Paul

답변

2

당신은 FMOD 또는 BASS이 아주 쉽게, 당신을 위해이 작업을 수행 할 수 있습니다 찾을 수 있습니다. FMOD 다운로드는 시각화 예제와 함께 제공되므로 믿을 수 있습니다. 그들은 둘 다 MP3를 읽고 필요한 계산을 수행합니다.

+0

지금 BASS API를 사용하여 파형을 만들었습니다. 사용 가능한 커스터마이징 옵션이 완벽하게 완벽하게 작동합니다. 대단히 감사했습니다. 대단히 도움이되었습니다. –

+0

당신은 환영합니다 :). 상용 목적으로 사용할 경우 라이센스 사용을 살펴 보는 것을 잊지 마십시오. – keyboardP

+0

그의 목적을 위해 잔인한 소리처럼 들린다. 내 말은 - 이것들은 튼튼한 오디오 라이브러리이고 값싼 오디오 라이브러리는 아닙니다. –

11

첫 번째 단계는 mp3의 압축을 푸는 것입니다. LAME을 라이브러리로 사용하는 대신 배치 작업으로이 작업을 수행하는 동안 기존 명령 줄 프로그램을 사용하여 mp3를 임시 WAV 파일로 변환하면 훨씬 쉬울 것입니다. 그런 다음 WAV 파일을 읽는 라이브러리를 찾으십시오. 비교적 간단한 형식이므로 온라인에서 많은 샘플 코드를 찾아야하며, 오후에 직접 작성할 수도 있습니다.

노래 길이가 60 분 * 60 초/분 * 44100 샘플/초 = 158,760,000 샘플이라고 가정 해 보겠습니다. 이미지가 1000 픽셀 너비 인 경우 158,760 개의 샘플마다 하나의 샘플 만 표시하려고합니다.

(별다른 차이가 없으므로 첫 번째 5 분만의 파형을 표시하거나 사용자가 스크롤 할 수있는 더 큰 이미지를 렌더링하는 것이 더 나은 해결책 일 수 있습니다.)

어쨌든,이 예제에서 158,760 샘플의 각 블록에 대한 오디오 샘플을 읽고 해당 오디오 부분의 신호 강도를 나타내는 수직선으로 렌더링하려고합니다. 이 작업을 수행하는 방법에는 두 가지가 있습니다

  1. 그 지역에 걸친 최대
  2. 그 지역에 걸친 제곱 평균 제곱 (RMS) 값
최대을 보여줍니다

RMS는 전반적인인지 음량을 보여줍니다. 둘 다 쉽게 구현할 수 있습니다. 둘 다 시도하고 어느 것이 가장 잘 보이는지 확인하십시오.

그런 다음 결과 이미지를 gif로 변환하면됩니다. 어쨌든 이것은 배치 작업이므로 BMP 파일 (정말 쉬운 파일 형식)을 작성한 다음 ImageMagick의 "convert"와 같은 명령 줄 프로그램을 사용하여 GIF로 변환 할 것입니다.

마지막으로, 하나의 마지막 참고 사항 : 만약 당신이 이라면, MP3 프레임을 읽고 모든 것을 디코딩하지 않고도 비트 스트림에서 직접 이득을 추출 할 수 있습니다. 그게 내가 here을 한 것입니다. 사용하실 수는 있습니다. 그러나 그것은 희미한 마음을위한 것이 아닙니다. 전체 MP3를 디코딩하는 것보다 약 100 배 빠르지 만 파형은 대략적인 근사값이됩니다.

+0

상세한 답변을 주셔서 감사 드리며 간단히 설명하면 처리가 필요합니다. 나는 뒤의 이미지가 완벽 할 필요는 없지만, 60 분짜리 DJ 믹스 중에는 최고점과 최저점의 대략적인 가이드 일뿐입니다. 당신이 제공 한 코드는 유망 해 보입니다 만, 자바에 대해서는 전혀 모르지만 일부 정보는 해독 할 수 있습니다. 감사합니다. –

+2

무례하지 않아야하지만 내 대답이 마음에 든다면 그것을 받아들이거나 적어도 upvote 해 주시면 고맙겠습니다. 그것이이 사이트의 작동 방식입니다. – dmazzoni

+1

미안하지만, 나는 그렇게 할 수있는 privelages을 가지고 있다는 것을 알지 못했다 ... 나는 단지 막 참여했고 처음 시도했을 때 나는 충분한 점수를 얻지 못했다고 말했다. 고맙습니다! –

1

C# 코드 here을 사용하여 웨이브 폼 이미지를 생성 할 수 있습니다.그 다음에는 공통 System.Drawing 라이브러리를 사용하여 GIF 파일에 저장해야합니다.

+0

이 코드를 살펴보고 작동 시키려고했지만 16 비트 WAV 파일로 테스트하려고 할 때마다 응용 프로그램이 손상되었습니다. 혹시이 코드를 사용하셨습니까? –

+0

아니요,하지는 않았지만 이러한 오류를 해결하는 데 시간을 할애 할 가치가 있다고 생각합니다. –

관련 문제