Нулевое воспроизведение мультимедиа при воспроизведении видео из плагина в Windows media center

StackOverflow https://stackoverflow.com/questions/1927782

  •  20-09-2019
  •  | 
  •  

Вопрос

В нашем плагине Windows media Center мы используем PlayMedia api для воспроизведения видео.Это документированный MS API для воспроизведения видео, который задокументирован в SDK.

Например.

AddInHost.Current.MediaCenterEnvironment.PlayMedia(Microsoft.MediaCenter.MediaType.Video, path, false) 

В Vista, последовательно, после этого вызова у нас есть медиа-интерфейс, готовый для нас в:Добавить хост.Текущий.Среда медиацентра.Опыт работы со СМИ

Однако в Window 7 все немного сложнее неустойчивый и кажется, что медиаэксперимент переходит в la-la land через определенное количество времени или определенных случайных действий.

Как мне последовательно воспроизводить видео и переходить на весь экран в окне 7?

Существуют ли какие-либо обходные пути для обеспечения стабильной работы этого API в 100% случаев.

Кажется, удаленный канал просто умирает или что-то в этом роде.

Это было полезно?

Решение

В случае, если другой бедная душа есть эта проблема, вот обходной путь для win 7, MS работает очень медленно, когда дело доходит до исправления этого.

        var mce = AddInHost.Current.MediaCenterEnvironment.MediaExperience;

        // great window 7 has bugs, lets see if we can work around them 
        if (mce == null) {
            System.Threading.Thread.Sleep(200);
            mce = AddInHost.Current.MediaCenterEnvironment.MediaExperience;
            if (mce == null) {
                try {
                    var fi = AddInHost.Current.MediaCenterEnvironment.GetType()
                        .GetField("_checkedMediaExperience", BindingFlags.NonPublic | BindingFlags.Instance);
                    if (fi != null) {
                        fi.SetValue(AddInHost.Current.MediaCenterEnvironment, false);
                        mce = AddInHost.Current.MediaCenterEnvironment.MediaExperience;
                    }

                } catch (Exception e) { 
                    // give up ... I do not know what to do 
                    Logger.ReportException("AddInHost.Current.MediaCenterEnvironment.MediaExperience is null", e);
                }

            }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top