Воспроизведение потока HDHomeRun в приложении Tizen.NET Xamarin - PullRequest
1 голос
/ 21 июня 2019

Я пытаюсь воспроизвести источник видео HDHomeRun Connect с URL-адреса в следующем формате: http://x.x.x.x:xxxx/auto/v4.1. Этот источник видео представляет собой кодирование видео MPEG2 и кодирование звука AC3.

Я пытался использовать образец Samsung Tizen.TV .NET со следующим источником, но видео никогда не воспроизводится.

_player = new Tizen.Multimedia.Player();

var mediaSource = new Multimedia.MediaUriSource(uri);
_player.SetSource(mediaSource);

var display = new Multimedia.Display(Window.Instance);   
_player.Display = display;
await _player.PrepareAsync();

Состояние игрока застревает при подготовке, и вызов await _player.PrepareAsync() никогда не заканчивается. Стоит отметить, что я использую Tizen Samsung TV Emulator. Нужно ли перекодировать поток из HDHomeRun для возможности воспроизведения? Могу ли я пропустить какие-либо другие меры для воспроизведения видео?

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Когда вы разрабатываете приложение Tizen .NET, обратите внимание на то, на какой фреймворк пользовательского интерфейса нацелен ваш проект, среди 3 различных типов: Xamarin.Forms , (чистый) ElmSharp и Tizen.NUI .

Если ваш проект не основан на инфраструктуре Tizen.NUI, вы не должны использовать Tizen.NUI.Window.Instance и вводить пространство имен Tizen.NUI в любом случае. Вместо этого вам придется использовать типы имен ElmSharp или Xamarin.Forms.Platform.Tizen для кода платформы в вашем приложении.

Поскольку внутренняя реализация Xamarin.Forms для Tizen основана на ElmSharp, FormsApplication.MainWindow вернет экземпляр ElmSharp.Window, который можно использовать для создания экземпляра объекта Tizen.Multimedia.Display. Вот почему код в вашем ответе работал.

1 голос
/ 21 июня 2019

В конечном счете, свойство Display проигрывателя было установлено неправильно.Свойство, которое работало для меня (было обнаружено при расследовании кода JuvoPlayer , было следующим:

        var display = new Multimedia.Display(((FormsApplication)Forms.Context).MainWindow);

        _player.Display = display;
...