2010-04-11 1 views
0

4 MediaElement를 재생 소리 : 다음,는 실버 라이트는 내 XAML이 구축 리소스에 로컬 사운드 파일을 변환

<UserControl.Resources> 
    <my:Uri x:Key="SoundFiles">file:///c:/Audio/HebrewDemo/Shalom.wav</my:Uri> 
</UserControl.Resources> 

나는 소스로 로컬 디스크의 MP3 파일 이름을 붙여 이런 짓을에 클릭 한 " 점 "을 선택하고"자원에 값 추출 "을 선택하십시오.

실행하면 "Uri"가 유효하지 않으며 Intellisense에서 "uri"로 시작하는 다른 요소가 보이지만 그 자체로는 URI가 아니라는 것을 알 수 있습니다.

현실 세계에서 동적 mp3 파일 이름을 지정하고 싶습니다. 예를 들어, 플래시 카드에 사용 된 외국어 데이터베이스가있을 수 있습니다. URL에서 사운드 파일을 재생하고 싶습니다. 하지만 내가 지금이 노력하고있어 ...

실행하기 전에 도보로 시도 것이라고 생각 :

mediaElement1.Source = new Uri(
        "http://HebrewResources.com/SoundFiles/Shalom.mp3", 
         UriKind.Absolute); 
    mediaElement1.Play(); 

파이어 폭스 브라우저의 상태 표시 줄에 일부 데이터가 웹 사이트에서 전송되는 나타냅니다. 그러나 나는 어떤 소리도 들어 본 적이 없다. 인코딩 문제 일 수 있습니까? 제대로 인코딩되지 않은 경우 오류가 발생합니까?

또한 Uri 문을로드에 넣거나 백그라운드에서 실행할 수있어 사용자가 사운드 파일을 다운로드하는 동시에 화면을 읽을 수 있습니까? 즉, 사운드 파일을 듣기 위해 버튼을 클릭하면 이상적으로 이미 미리로드되어있을 것입니다. 이 언어 학습 앱에서 사용자는 외국어 단어를보고 자신의 발음을 시도한 다음 '재생'버튼을 클릭하여 결과를 확인하는 소리를 듣게됩니다.

답변

2

Silverlight "sanboxed"보안 모델로 인해 로컬 파일을 가리키는 첫 번째 코드가 일반 Silverlight 응용 프로그램에서 작동하지 않습니다. 브라우저에서 일반 Silverlight 응용 프로그램을 실행하면 설치된 winforms/WPF 응용 프로그램을 실행하고있는 것처럼 가능한 로컬 리소스에 액세스 할 수 없습니다. Silverlight를 사용하여 로컬 파일에 액세스하는 방법에 대해 자세히 알아 보려면이 비디오 자습서 http://www.silverlight.net/learn/videos/all/local-file-access/을 살펴보십시오.

두 번째 코드 조각과 관련하여 작동해야하므로 코드화 문제 일 가능성이 높습니다. 불행히도 그런 경우에는 오류가 발생하지 않습니다.

샘플 앱을 만들었고 mp3 파일로 가리키면 작동하지 않지만 샘플 mp3를 빠르게 검색하면 무료로 사용할 수있는 첫 번째 히트 곡으로 연결됩니다. 아래 코드/URL을 사용하여, 그것은 잘 작동합니다.

myMediaelement.Source = new Uri("http://www.robtowns.com/music/blind_willie.mp3", UriKind.Absolute); 

로딩과 관련하여 미디어 요소의 소스를 설정하는 코드에 도달하면 파일 다운로드가 시작됩니다. 따라서 생성자 또는로드 된 이벤트에서 미디어 요소의 소스를 설정하면 백그라운드에서 자동으로 다운로드가 시작됩니다. 그런 다음 myMediaElement.Play()를 호출하면됩니다. 버튼 클릭 이벤트.

외부 파일이나 웹 서비스가로드되는시기와시기를 결정할 때 Firefox를 약간 제한적으로 사용할 수 있습니다. 그 (것)들을 아주 쉽게 감시하게 할 Fiddler (http://www.fiddlertool.com/fiddler/version.asp)에게 불린 중대한 자유로운 공구가있다.

행운을 빌어 요.

+0

감사합니다. 여기서 스레드를 시작하고 많은 토론을했습니다. http://forums.silverlight.net/forums/p/174934/397840.aspx. MediaFailed 이벤트를 추가하고 Expression Encoder를 사용하여 파일을 인코딩했습니다 (Expression Encoder가 있는지조차 알지 못함).슬프게도, 3000 mp3 파일에 대한 인코딩을 두려워합니다. – NealWalters

+0

파일을 인코딩하는 것과 관련하여 엔코더 SDK와 Powershell을 사용하여 파일을 정렬하는 것이 좋다는 사실을 잘 알고 있다면이 프로세스를 상당히 쉽게 자동화 할 수 있습니다. http://www.clarkezone.net/default를보십시오. aspx? id = adc33486-4a60-4f3f-9ee0-bb8d81c5c6bf 및 "Expression Encator Automation"또는 그와 유사한 것을 검색 할 수 있습니다. –

관련 문제