2010-12-15 3 views
0

이 문제를 해결하는 데 가장 힘든 시간을 보내고 있습니다. URL에서 오디오 및 비디오 파일을로드하는 Silverlight 4 응용 프로그램이 있습니다. URL은 애플리케이션이 호스팅되는 도메인과 동일하며 동영상에 적합합니다.Silverlight MediaElement 오디오 재생 거부

URL은 실제로 서버의 공유 위치에서 파일을 읽고 파일 스트림을 다시 제공하는 asp.net mvc 컨트롤러입니다. 나는 경우

http://localhost:31479/CourseMedia?path= \ omnisandbox1 \ ILMSShare2 데모 - 화재 + 행동 \ 미디어 \ Disclaim.wma \ & 암호화 = 거짓 & ID = 00000000-0000-0000-0000-000000000000

: URL은 다음과 같을 URL을 브라우저에 직접 입력하고 파일을로드하고 Windows Media Player에서 재생하면됩니다. URL을로드하기 위해 별도의 테스트 Silverlight 프로젝트를 사용하면 작동하지만 나에게 제대로 작동하지는 않습니다. 내 주요 프로젝트에서.

protected void SetPlayerURL(MediaElement player, string url) 
{ 
     if (player != null && url.Length > 0) 
     { 
      player.ClearValue(MediaElement.SourceProperty); 
      player.Source = new Uri(this.Packet.GetMediaUrl(url, false, Guid.Empty));     
     } 
} 

과 GetMediaURL 기능이 단순히 URL 형식은 위에서 본 빌드 :

public string GetMediaUrl(
     string path, 
     bool encrypted, 
     Guid key) 
    { 
     StringBuilder builder = new StringBuilder(); 

     builder.AppendFormat("http://{0}/CourseMedia?path={1}&encrypted={2}&id={3}", 
      this.Host, 
      System.Windows.Browser.HttpUtility.UrlEncode(path), 
      encrypted, 
      key); 

     return builder.ToString(); 
    } 

컨트롤러에 요청이 결코

이것은 내가하는 데 사용하는 루틴이 실제로 소스 설정을 할 수 있습니다 오디오 인 경우 미디어 용으로 제작되었습니다. 이 정확한 코드가 동영상에서 제대로 작동하므로 이상하게 보입니다. MediaElement 상태가 "Closed"상태가되지 않고 CurrentStateChanged, MediaOpened 및 MediaFailed 이벤트가 트리거되지 않습니다.

나는 분실했습니다!

+0

당신은 이것을 확인 했습니까? Host and path는 유효합니까? – thomasmartinsen

답변

0

MediaElement의 ScrubbingEnabled를 false로 설정해보십시오. Framework 버전 3.5 및 오디오에 몇 가지 문제가 있으며 해결 방법이 false로 설정되어 있습니다. 노력할 가치가 있습니다.

또한 MediaFailed 및 MediaOpened 이벤트와 함께 BufferingStarted, BufferingEnded, MediaEnded를 캡처 해보십시오. 버퍼링 문제인지 궁금합니다.

+0

우리는 마침내 그것을 알아 냈다. Response.BufferingEnabled를 false로 설정해야 미디어가 정상적으로 재생되기 시작했습니다. – moshjeier