2010-12-02 12 views
2

격리 된 저장소에서 오디오 파일을 재생하는 코드의 작동 (테스트 된) 예제가 있습니까?Silverlight를 사용하여 사용자의 노래 재생

 MediaElement ME = new MediaElement(); 
     ME.AutoPlay = false; 
     IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
     ME.SetSource(ISF.OpenFile("foo.wav", FileMode.Open)); 
     ME.Play(); 

내가 표현을 사용하여 인코딩 다른 오디오 형식의 번호를 사용하여이 작업을 시도했습니다,하지만 난 항상 같은 있습니다 : 예외를 던지거나 소리가되지 않습니다 내가 현재 가지고있는 코드입니다 문제.

또한 파일 스트림에서 노래를로드하기 위해 파일 브라우저를 사용하는 예제가 좋겠지 만 이는 덜 중요하며 격리 저장 예제를 쉽게 변환 할 수 있습니다.

나는 파일을 응용 프로그램에 포함하면 제대로 작동하는지 확인했습니다. 문제는 사용자가 자신의 노래를 응용 프로그램에로드하여 격리 된 저장소에 저장하고 재생할 수있게하려는 것입니다.

마지막으로이 예제에서와 같이 XAML이 아니라 C# 코드에서이 작업을 수행하고 싶습니다.

+0

'CurrentState' 속성을 나중에 확인 했습니까? 'MediaFailed' 이벤트에 핸들러를 연결 시키려고 했습니까? –

+0

텍스트 또는 이미지 파일을 열어 본 적이 맞습니까? – ChrisF

+1

현재 상태가 일시 중지되었습니다. 그것은 파일이로드 된 후 (별도의 이벤트 처리기에 넣을 때까지) play 메서드가 작동하지 않는 것 같습니다. 자동 실행을 true로 설정하면 정상적으로 작동합니다. – ForbesLindesay

답변

1
  1. 파일이 비동기 적으로 열리기 때문에 SetSource 명령과 동일한 방법으로 재생 명령을 사용할 수 없습니다. AutoPlay를 true로 설정하면 (이는 기본이기도합니다). 로드되는 즉시 재생되는지 확인합니다.

    MediaElement ME = new MediaElement(); 
    ME.AutoPlay = true; 
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
    ME.SetSource(ISF.OpenFile("foo.wma", FileMode.Open)); 
    
  2. Silvelright는 기본적으로 그래서 당신은 다음 코드를 사용 http://code.msdn.microsoft.com/wavmss을 다운로드해야 wav 파일을 재생, WAV 파일을 지원하지 않습니다.

    MediaElement ME = new MediaElement(); 
    ME.AutoPlay = true; 
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
    ME.SetSource(new WaveMediaStreamSource(ISF.OpenFile("foo.wav", FileMode.Open))); 
    

    적합하지 않지만, 당신은 wav 파일이 재생 될 때 감지 만,이 경우 두 번째 코드 샘플을 사용하여 파일 확장자를 사용할 수 있습니다.

관련 문제