DirectSound를 통해 간단한 wav 파일을 재생하는 C# 응용 프로그램이 있습니다. 테스트 데이터를 사용하여 코드가 정상적으로 작동했습니다. 그러나 실제 데이터를 사용하면 보조 버퍼 생성시 매우 도움이되지 않는 오류가 발생합니다. "ArgumentException : 값이 예상 범위 내에 들지 않습니다."일부 wav 파일은 내 C# directsound 앱에서 재생되지만 일부는 재생되지 않는 이유는 무엇입니까?
테스트 wav에는 512kbps 비트 전송률, 16 비트 오디오 샘플 크기 및 32kHz 오디오 샘플 속도가 있습니다. 새로운 웨이브는 각각 1152kbps, 24bit 및 48kHz입니다. 이러한 큰 값을 처리하기 위해 directsound를 얻으려면 어떻게해야합니까? 그렇지 않으면 파일을 재생하기 전에 프로그래밍 방식으로 이러한 값을 검색 할 수 있습니까?
그것은 내가 사용의 DirectX v9.00.1126 관리, 그리고 나는 다음과 같은 몇 가지 샘플 코드를 포함 시켰습니다 :
using DS = Microsoft.DirectX.DirectSound;
...
DS.Device device = new DS.Device();
device.SetCooperativeLevel(this, CooperativeLevel.Normal);
...
BufferDescription bufferDesc = new BufferDescription();
bufferDesc.ControlEffects = false;
...
try
{
SecondaryBuffer sound = new SecondaryBuffer(path, bufferDesc, device);
sound.Play(0, BufferPlayFlags.Default);
}
...
추가 정보 : 실제의 wav 파일 중 하나를 윈도우 미디어 플레이어에서 재생되지 않습니다 , 그들은 코덱이 winamp에서 정상적으로 플레이하는 동안 파일 재생에 필요하다는 것을 알려줍니다.
추가 정보 2 : 실제 테스트 데이터의 바이트와 실제 데이터가 나쁜 것을 비교하면 RIFF 청크가 지나간 후에 잘못된 데이터가 "bext"덩어리로 표시되어 인터넷에서 메타 데이터라는 것을 알 수 있습니다 브로드 캐스트 오디오 확장과 관련된 테스트 데이터는 곧바로 fmt 청크로 이동합니다. 나쁜 데이터에 fmt 청크가 있기 때문에 나쁘게 형성되었는지 또는 로더가 fmt 데이터를 더 자세히 조사해야하는지는 알 수 없습니다. 나는이 루즈베예요 청크에 대한 정보를 나에게 공급하는 사람들로부터 정보를 얻을 수 있는지를 알 수 있습니다. 데이터를 제거 할 수 있다면 코드가 여전히 작동 할 수 있습니다.
추가 정보 : WAV 파일에 대한 정보는 해당 파일이 모노 파일임을 나타냅니다. – tzot