문제

이 코드를 사용하여 자원에서 WAV 파일을 재생하고 오디오가 올바르게 재생되지만 재생 한 후 정적으로 짧은 폭발을 얻습니다 (약 1/2 초) :

//System.Media.SystemSounds.Beep.Play();
SoundPlayer sndPlayer = new SoundPlayer();
sndPlayer.Stream = Resources.Notify;
sndPlayer.Play();
.

위의 System.Media.SystemSounds.Beep.Play() 행의 주석을 제거한 경우 경고음과 내 리소스에서 알림 소리가 올바르게 재생되고 정적이 아닙니다. 위의 코드의 몇 가지 다양한 변형을 시도했으며 항상 정적을 얻습니다. 나는 모든 변수를 정적으로 만드는 것을 시도했다, incase는 초기 가비지 컬렉션과 관련된 뭔가가 있지만, 그게 도움이되지 않았습니다.

WAV 파일은 c:\WINDOWS\Media\ding.wav (Windows XP에서)에서 복사 한 것입니다. Windows Media Player에서 잘 재생됩니다. 또한 새 SoundPlayer("c:\WINDOWS\Media\ding.wav")를 사용하면 파일에서 올바르게 재생됩니다.

UnmanagedMemoryStream가있는 Resources.Notify와 관련이있는 것이 무엇인지 상상해보십시오. 그리고 아마도 관리되는 스트림에 먼저로드해야 할 수도 있습니다. new Bitmap(Resource.MyPNG)를 사용하지 않고 Resource.MyPNG를 직접 사용하려고 시도하지 않으면 PNG 파일에 문제가 있으시면 PNG 파일을 사용해보십시오.

update : 나는 원래 그것이 사운드가 연주 될 때마다 일어나는 일이 일어나고 있다고 생각했지만 이제는 앱에서 소리를 처음으로 재생하는 것이 처음으로 나타납니다. 그래서 일부 초기화를 수행해야할까요?

나는 또한 이것도 동일한 문제를 시도했다 :

SoundPlayer sndPlayer = new SoundPlayer(Resources.Notify);
sndPlayer.Play(); 
.

도움이 되었습니까?

해결책 2

는 한 PC에서 문제였습니다.결코 알아 내지 않았으며 다른 앱 이이 문제가없는 것으로 보이지 않지만 지금까지 1 PC (아마 15 아마도 테스트를 거친 경우)가있는 경우 가치가 없습니다.내가 얻을 수 있다면 더 나은 대답을보고 할 것입니다.

다른 팁

이것은 MS가 my.audio.play () 을 사용하는 내부 구현입니다. SoundPlayer 클래스를 인스턴스화하는 방법을 참조하십시오. filepath를 가져가는 오버로드 된 생성자를 활용하십시오 아래 그림과 같이 또는 stream :

http://msdn.microsoft.com/ko미국 / 라이브러리 / System.Media.SoundPlayer.aspx

public void Play(string location, AudioPlayMode playMode)
{
    this.ValidateAudioPlayModeEnum(playMode, "playMode");
    SoundPlayer sound = new SoundPlayer(this.ValidateFilename(location));
    this.Play(sound, playMode);
}
.

SoundPlayer를 인스턴스화 할 때 스트림을 전달할 수 있습니까?

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