使用媒体会话从麦克风捕获会产生错误的时间戳

时间:2016-12-07 15:21:42

标签: sharpdx ms-media-foundation

在我的设置中,我使用以下API调用:

  • MFEnumDeviceSources 以获取麦克风的媒体资源
  • 使用 MFAudioFormat_AAC
  • MFTranscodeGetAudioOutputAvailableTypes 以获取兼容的AAC媒体类型
  • MFCreateTranscodeProfile MFCreateTranscodeTopologyFromByteStream 以获取拓扑以将麦克风的实时音频捕获到内存缓冲区

运行媒体会话后,可以播放缓冲区,但媒体的持续时间不正确。插入T形节点和样本采集器会显示实时媒体源提供接近系统时间的采样时间,这些是到达接收器的采样时间。

我尝试在拓扑的所有三个节点上设置 MF_TOPONODE_MARKIN_HERE MF_TOPONODE_MARKOUT_HERE ,但没有成功。我也检查过,默认情况下没有任何节点设置它(虽然拓扑结构将被拓扑加载器修改,但我没有尝试检查该步骤。)

我知道我可以创建一个自定义转换并在那里操作示例时间(虽然我不是100%确定如何),但由于我的代码是在C#中,我试图将自定义代码保留在主管道之外。 / p>

有人能给我一些想法如何强制会话向接收器提供正确的采样时间吗?

0 个答案:

没有答案