【问题标题】:UWP live sound streaming projectUWP 现场声音流项目
【发布时间】:2018-04-15 10:03:16
【问题描述】:

我正在尝试在两台机器之间创建一个实时通信项目,仅使用基于 Windows 示例的声音。 https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/SimpleCommunication 。我在VB中做。示例中发生的情况是有一个主页,用户调用他想要执行的场景,但在主页(在一个名为 SampleConfiguration 的类中)被声明为 MediaExtensionManager(第 22 行),之后有一个名为 EnsureMediaExtensionManager 的无效注册具有自定义“stsp:”格式的方案。 这是我做不到的。到目前为止,我已经成功翻译了示例,并且可以从我的树莓派中流式传输声音(我可以使用用 C 编写的原始示例听到它,仅针对声音进行修改)但是我无法注册 StspSchemeHandler 以与我的 MediaElement 一起使用,我总是得到一个在我的 MediaElement 的 MediaFailed 事件上调试错误 MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED:HRESULT - 0xC00D36C3。如果有人查看示例的代码,请在第 42 行的 Scenario2_VideoChat 上说 EnsureMediaExtensionManager() 被调用。

public void EnsureMediaExtensionManager()
{
     if (mediaExtensionMgr == null)
     {
         mediaExtensionMgr = new Windows.Media.MediaExtensionManager();
         mediaExtensionMgr.RegisterSchemeHandler("Microsoft.Samples.SimpleCommunication.StspSchemeHandler", "stsp:");
     }
 }

但据我所知,这是在其他所有内容之前调用的 .. 我怎么能调用相同但只使用一页... MainPage 非常感谢

【问题讨论】:

  • 似乎 registerSchemeHandler 中的引用“Microsoft.Samples.SimpleCommunication.StspSchemeHandler”不起作用

标签: audio uwp live


【解决方案1】:

我怎样才能调用相同但只使用一页... MainPage

我不知道你为什么说做不到,但是对于这个问题,你可以将方法实现放在MainPage 中,而不是在另一个页面中调用该方法。为确保它在其他人之前被调用,应该将它放在构造函数中,方法可能如下:

Public NotInheritable Class MainPage
    Inherits Page
    Private mediaExtensionMgr As Windows.Media.MediaExtensionManager
    Public Sub New()
        Me.InitializeComponent()
        If (mediaExtensionMgr Is Nothing) Then
            mediaExtensionMgr = New Windows.Media.MediaExtensionManager()
            mediaExtensionMgr.RegisterSchemeHandler("Microsoft.Samples.SimpleCommunication.StspSchemeHandler", "stsp:")
        End If
    End Sub
End Class

【讨论】:

    【解决方案2】:

    找到它...经过一个痛苦的下午搜索! 1)右键Package.appxmanifest -> 查看代码 2)添加这一行

        <Extensions>
        <Extension Category="windows.activatableClass.inProcessServer">
          <InProcessServer>
            <Path>Microsoft.Samples.SimpleCommunication.dll</Path>
            <ActivatableClass ActivatableClassId="Microsoft.Samples.SimpleCommunication.StspSchemeHandler" ThreadingModel="both"/>
          </InProcessServer>
        </Extension>
      </Extensions>
    

    然后无论你在哪里调用它都可以工作......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-08
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      相关资源
      最近更新 更多