在 Tizen.NET Xamarin 应用程序上播放 HDHomeRun 流

Playing an HDHomeRun stream on a Tizen.NET Xamarin App

我正在尝试从 url 以下列格式播放 HDHomeRun Connect 视频源:http://x.x.x.x:xxxx/auto/v4.1。此视频源是MPEG2视频编码和AC3音频编码。

我试过将三星 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 的流进行转码才能播放?为了播放视频,我可能还缺少任何其他措施吗?

最终,播放器的显示 属性 设置不正确。对我有用的 属性(通过调查 JuvoPlayer code 发现是这样的:

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

        _player.Display = display;

当您要开发 Tizen .NET 应用程序时,请注意您的项目针对 3 种不同类型中的哪个 UI 框架:Xamarin.Forms(纯)ElmSharpTizen.NUI.

除非您的项目基于 Tizen.NUI 框架,否则您不应在任何情况下使用 Tizen.NUI.Window.InstanceTizen.NUI 命名空间中的类型。相反,您必须在应用程序中为 platform-specific 代码使用 ElmSharpXamarin.Forms.Platform.Tizen 命名空间类型。

由于 Xamarin.Forms for Tizen 的内部实现基于 ElmSharp,FormsApplication.MainWindow 将 return 一个 ElmSharp.Window 实例,可用于实例化 Tizen.Multimedia.Display 对象。这就是您答案中的代码起作用的原因。