首页 文章

将非同步流复用到Haali

提问于
浏览
2

我有2个输入数据流传递给Haali Muxer(mp4格式) .

目前我直接在没有时钟的DirectShow图表中将这些流式传输到Haali . 我想知道我是否应该尝试将这些写入同步的多路复用器,或者它是否乐意接受在视频数据流停止之前停止的音频数据流 . (我在搜索后输出文件没有播放音频时出现问题,我不知道为什么会出现这种情况)

我找不到与Haali muxer多路复用的文档方式,有没有人知道在这个过滤器上查找信息的最佳位置?

1 回答

  • 2

    要将流复用到单个MP4文件中,您需要单个多路复用器实例(Haali,GDCL,商用,通过mp4v2库封装,通过Media Foundation接收器等),其上有两个(或更多)输入引脚连接到各自的源,其中转弯将被写成曲目 .

    过滤器图形时钟无关紧要 . 时钟用于演示,文件编写者接受传入的数据并尽快写入 . 正如您似乎已经在做的那样,移除时钟更准确,但标准时钟不会有所不同 .

    使用各个媒体样本(媒体流的一部分)上的时间戳来同步数据 . 多路复用器为每个流构建内部队列,然后使用流中的数据构建单个文件,其方式与原始流数据交错 . 如果一个流提供太多数据,也就是说,如果数据过早可用而另一个流缓慢提供数据,则多路复用器通过不从相应的处理调用( IPin::Receive )返回来阻止此特定流上的进一步数据接收,期望在此等待期间缓慢流提供额外的输入 . 最终,当匹配来自不同流的数据时,多路复用器查看的是数据时间戳 .

    因此,要在生成的MP4文件中获取同步数据,需要确保有效负载数据已正确加盖时间戳 . 多路复用器将负责其余部分 .

    这还包括时间戳应该在流内单调增加,并且分别指示关键帧/拼接点 . 否则一些多路复用器可能会立即发出故障,其他多路复用器会产生输出文件,但它可能有播放问题(尤其是搜索) .

相关问题