簡體   English   中英

Silverlight MediaElement拒絕播放音頻

[英]Silverlight MediaElement refusing to play audio

我很難解決這個問題。 我有一個Silverlight 4應用程序,可從URL加載音頻和視頻文件。 這些URL與應用程序所在的域相同,並且非常適合視頻使用。

這些URL實際上是asp.net mvc控制器,負責從服務器和服務器上的共享位置讀取文件並向文件流提供服務。 URL看起來像這樣:

http:// localhost:31479 / CourseMedia?path = \\ omnisandbox1 \\ ILMSShare2 \\ Demo-Fire + Behavior \\ media \\ Disclaim.wma&encrypted = False&id = 00000000-0000-0000-0000-000000000000

如果我將URL直接放到瀏覽器中,則文件可以很好地加載並在Windows Media Player中播放,並且如果我使用單獨的測試silverlight項目來加載url,它也可以正常工作,但是對我而言,我無法獲得它在我的主要項目中正常工作。

這是我用來實際進行源設置的例程:

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狀態永遠不會離開“關閉”狀態,並且永遠不會觸發CurrentStateChanged,MediaOpened和MediaFailed事件。

我很茫然!

嘗試將MediaElement的ScrubbingEnabled設置為false,Framework 3.5和音頻版本存在一些問題,解決方法是將其設置為false。 可能值得嘗試。

還嘗試捕獲BufferingStarted,BufferingEnded,MediaEnded以及MediaFailed和MediaOpened事件。 我很好奇這是否是一個緩沖問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM