문제

소켓을 통해 데이터를 보내는 서버가 있는데 데이터는 wav '파일'입니다.데이터를 디스크에 쉽게 쓴 다음 WMP에서 재생할 수 있지만 소켓에서 읽을 때 어떻게 재생할 수 있는지 모르겠습니다.가능합니까?

보너스 질문:스트림이 mp3나 다른 형식인 경우 어떻게 해야 합니까?

이것은 네이티브 C++의 창용입니다.

도움이 되었습니까?

해결책

WMP라고 말했기 때문에 질문이 Windows 컴퓨터에서 WAV 파일을 재생하려고 시도한다고 가정합니다. 그렇지 않다면이 답변은 관련이 없습니다.

당신이하고 싶은 것은 사소하지 않습니다. 좋은 기사가 있습니다 여기 Windows 오디오 모델을 설명하는 코드 프로젝트에서 오디오 장치를 설정하는 방법과 재생을 위해 데이터로 데이터를 스트리밍하는 방법에 대해 설명합니다. 소켓에서 나오는 데이터를 재생 버퍼의 데이터로 공급해야합니다. 그러나 그것은 모든 까다로운 작업이있는 곳입니다. 당신은 그것을 확신해야합니다

  • 재생을 시작하기에 충분한 데이터가 있습니다
  • 소켓이 데이터를 위해 굶주리고 재생 버퍼로 보낼 것이 없을 때 케이스를 처리합니다.
  • 재생 버퍼를 가득 채울 수있는 충분한 속도로 소켓에서 데이터를 읽을 수 있습니다.

흥미로운 운동입니다. 하지만 까다 롭습니다.

다른 팁

Mark는 이것이 까다로운 문제라는 점에서 옳습니다.waveOut 대신 DirectSound를 사용하면 덜 까다로울 수 있습니다. 여기에 기사가 있습니다. 디스크에서 웨이브 파일 스트리밍 시:네트워크에서 스트리밍하는 것은 본질적으로 동일한 프로세스입니다.시작하기 전에 네트워크에서 충분한 데이터를 수집했는지 확인하십시오. 기사에서 언급한 2개 이상의 버퍼가 필요할 것입니다.

덜 까다로울 것입니다. FMOD.로부터 자주하는 질문:

향상된 인터넷 기능

  • 인터넷 오디오 스트리밍.원활한 SHOUTcast, Icecast 및 http 스트리밍 지원을 가능하게 하는 맞춤형 인터넷 스트리밍 코드가 포함되어 있습니다.
  • 다운로드 기능.네트워크 파일을 지원하는 FMOD 모듈식 파일 시스템의 부작용으로 정적 샘플도 인터넷에서 로드할 수 있습니다.

파일 형식 지원:FMOD는 현재 다양한 오디오 파일 형식을 지원합니다.부분 목록:

  • MP3 - (VBR 지원을 포함한 MPEG I/II 레이어 3)
  • OGG - (Ogg Vorbis 형식)
  • WAV - (압축된 wav를 포함한 Microsoft Wave 파일.PCM, MP3 및 IMA ADPCM 압축 wav

마크는 이것이 까다로운 문제라는 것에 대해 옳습니다. WaveOutXXXX API는 고대 (Windows 95를 앞두고) 생각하는 것보다 더 많은 오류가 발생하기 쉬운 코딩이 필요합니다. C#보다 C ++의 API와 상호 작용하는 시간이 더 쉬워집니다. 이것이 당신이 정말로하고 싶은 일인지 확인하십시오.

스트림이 WAV 파일 데이터 (MP3 또는 WMA와 같은) 이외의 다른 형식 인 경우 데이터를 WAV 형식으로 디코딩하고 WaveOutXXXX API로 재생하는 추가 단계를 수행해야합니다. MP3 디코딩을 수행 할 좋은 구성 요소를 찾는 것은 예상보다 까다 롭습니다. 이것은 Fraunhofer 라이센스 상황과 관련이 있다고 생각합니다 (MP3 코드를 사용하면 지불해야합니다).

학습 경험을 원하지 않는 한, 이렇게 할 수있는 상용 제품을 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top