첫 번째 단계는 mp3의 압축을 푸는 것입니다. LAME을 라이브러리로 사용하는 대신 배치 작업으로이 작업을 수행하는 동안 기존 명령 줄 프로그램을 사용하여 mp3를 임시 WAV 파일로 변환하면 훨씬 쉬울 것입니다. 그런 다음 WAV 파일을 읽는 라이브러리를 찾으십시오. 비교적 간단한 형식이므로 온라인에서 많은 샘플 코드를 찾아야하며, 오후에 직접 작성할 수도 있습니다.
노래 길이가 60 분 * 60 초/분 * 44100 샘플/초 = 158,760,000 샘플이라고 가정 해 보겠습니다. 이미지가 1000 픽셀 너비 인 경우 158,760 개의 샘플마다 하나의 샘플 만 표시하려고합니다.
(별다른 차이가 없으므로 첫 번째 5 분만의 파형을 표시하거나 사용자가 스크롤 할 수있는 더 큰 이미지를 렌더링하는 것이 더 나은 해결책 일 수 있습니다.)
어쨌든,이 예제에서 158,760 샘플의 각 블록에 대한 오디오 샘플을 읽고 해당 오디오 부분의 신호 강도를 나타내는 수직선으로 렌더링하려고합니다. 이 작업을 수행하는 방법에는 두 가지가 있습니다
- 그 지역에 걸친 최대 값
- 그 지역에 걸친 제곱 평균 제곱 (RMS) 값
최대을 보여줍니다
RMS는 전반적인인지 음량을 보여줍니다. 둘 다 쉽게 구현할 수 있습니다. 둘 다 시도하고 어느 것이 가장 잘 보이는지 확인하십시오.
그런 다음 결과 이미지를 gif로 변환하면됩니다. 어쨌든 이것은 배치 작업이므로 BMP 파일 (정말 쉬운 파일 형식)을 작성한 다음 ImageMagick의 "convert"와 같은 명령 줄 프로그램을 사용하여 GIF로 변환 할 것입니다.
마지막으로, 하나의 마지막 참고 사항 : 만약 당신이 이라면, MP3 프레임을 읽고 모든 것을 디코딩하지 않고도 비트 스트림에서 직접 이득을 추출 할 수 있습니다. 그게 내가 here을 한 것입니다. 사용하실 수는 있습니다. 그러나 그것은 희미한 마음을위한 것이 아닙니다. 전체 MP3를 디코딩하는 것보다 약 100 배 빠르지 만 파형은 대략적인 근사값이됩니다.
지금 BASS API를 사용하여 파형을 만들었습니다. 사용 가능한 커스터마이징 옵션이 완벽하게 완벽하게 작동합니다. 대단히 감사했습니다. 대단히 도움이되었습니다. –
당신은 환영합니다 :). 상용 목적으로 사용할 경우 라이센스 사용을 살펴 보는 것을 잊지 마십시오. – keyboardP
그의 목적을 위해 잔인한 소리처럼 들린다. 내 말은 - 이것들은 튼튼한 오디오 라이브러리이고 값싼 오디오 라이브러리는 아닙니다. –