ⓟrogramming/유틸리티
MP3 파일의 정보를 보여주고 재생하는 유틸 (소스포함)
가이브
2025. 3. 15. 13:44
AI에게 시켰고요.
C# (호환성을 위해 Framework v2.0)으로 만들어달라고 했어요.
비주얼 추가해달랬는데 이 부분은 잘 작동을 안하는 것 같으니 참고만 하면 되겠습니다.
<최종 설명 첨부합니다>
주요 수정 내용
- 프레임 길이 및 볼륨 계산 개선:
- bitrate와 sampleRate가 0이 아닌지 확인(bitrateTable[bitrateIndex] > 0, sampleRateTable[sampleRateIndex] > 0).
- frameLength가 4보다 작거나 파일 끝을 넘지 않도록 강력한 검증.
- fs.Read가 실패할 경우 return으로 종료.
- 볼륨 스케일링 강화:
- scaledVolume = (avgVolume * 50) / 255: 스케일링 배수를 50으로 늘려 변화가 더 두드러지게.
- validSamples > 0로 나누기 전 유효성 체크.
- 변동성 증가:
- variation 범위를 -50 ~ 50으로 넓혀 각 바의 움직임 차이를 키움.
- 디버깅 용이성:
- 주석 처리된 textBox.Text += $"Avg Volume: {avgVolume}, Scaled: {scaledVolume}\r\n";를 필요 시 활성화해 값 확인 가능.
테스트 방법
- 코드를 붙여넣고 빌드(F5).
- MP3 파일을 드롭하고 "재생" 버튼을 누르세요.
- 바가 움직이지 않으면 주석 해제된 디버깅 코드를 활성화해 avgVolume과 scaledVolume 값을 확인하세요.
- 값이 너무 작으면 스케일링 배수(현재 50)를 더 높여보세요(예: 100).
- "정지" 버튼으로 멈춤.
예상 결과
- 오류가 해결되고, 바가 프레임 데이터에 따라 더 활발히 움직여야 합니다.
- 창 크기가 400x400으로 고정돼 사용자가 조정할 수 없음.
추가 조치
만약 여전히 바가 움직이지 않으면:
- 사용 중인 MP3 파일을 다른 파일로 바꿔 테스트(손상된 파일일 가능성).
- 디버깅 로그를 보고 avgVolume이 거의 변하지 않으면, MP3 압축 데이터가 현재 방식으로 분석 불가능할 수 있어요. 이 경우 .NET 2.0 한계로 인해 더 정교한 오디오 분석(예: NAudio 라이브러리)이 필요할 수 있습니다.
테스트 결과와 로그를 공유해 주시면 더 구체적으로 도울게요! 오류가 사라지고 바가 잘 움직이길 바랍니다! ^^
반응형