Silverlight MediaElement отказывается проигрывать аудио - PullRequest
0 голосов
/ 15 декабря 2010

Мне тяжело разобраться с этой проблемой.У меня есть приложение 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 никогда не инициируются.

Я в растерянности!

1 Ответ

0 голосов
/ 17 декабря 2010

Попробуйте установить для параметра ScrubbingEnabled элемента MediaElement значение false, были проблемы с версией Framework 3.5 и звуком, а для обходного пути было установлено значение false.Возможно, стоит попробовать.

Также попробуйте захватить BufferingStarted, BufferingEnded, MediaEnded вместе с вашими событиями MediaFailed и MediaOpened.Мне любопытно, если это проблема буферизации.

...