Andrew
Andrew

Reputation: 1030

Playing an HDHomeRun stream on a Tizen.NET Xamarin App

I'm trying to play a HDHomeRun Connect Video source from a url in the following format: http://x.x.x.x:xxxx/auto/v4.1. This video source is an MPEG2 video encoding and AC3 audio encoding.

I've tried using the Samsung Tizen.TV .NET sample with the following source but the video never plays.

_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();

The player state gets stuck in preparing, and the await _player.PrepareAsync() call never finishes. It is worth noting that I'm using the Tizen Samsung TV Emulator. Do I need to transcode the stream from the HDHomeRun to be playable? Are there any other measures I might be missing for the Video to play?

Upvotes: 1

Views: 502

Answers (2)

Swift Kim
Swift Kim

Reputation: 435

When you are to develop a Tizen .NET application, please be aware of which UI framework your project is targetted for among 3 different types: Xamarin.Forms, (pure) ElmSharp, and Tizen.NUI.

Unless your project is based on the Tizen.NUI framework, you shouldn't use Tizen.NUI.Window.Instance and types in Tizen.NUI namespace in any case. Instead, you will have to use types of ElmSharp or Xamarin.Forms.Platform.Tizen namespace for platform-specific code in your application.

Since the internal implementation of Xamarin.Forms for Tizen is based on ElmSharp, FormsApplication.MainWindow will return a ElmSharp.Window instance which can be used to instantiate a Tizen.Multimedia.Display object. That's why the code in your answer worked.

Upvotes: 1

Andrew
Andrew

Reputation: 1030

Ultimately, the Display property of the player wasn't being set correctly. The property that worked for me (found from investigating the JuvoPlayer code was this:

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

        _player.Display = display;

Upvotes: 1

Related Questions