如何使基于Media Foundation的播放打开并快速查找moov结尾的MP4 HTTP文件?

Posted

技术标签:

【中文标题】如何使基于Media Foundation的播放打开并快速查找moov结尾的MP4 HTTP文件?【英文标题】:How to make the Media Foundation-based playback open and fast seek MP4 HTTP file that moov is at end? 【发布时间】:2020-05-05 14:49:55 【问题描述】: 由于历史原因,我们有很多自然生成的MP4本地或远程文件,也就是MOOV在最后。目前,为了提高硬件加速性能,我们已经从 ffmpeg/ffplay 迁移到了 Media Foundation。 参考Media Session Playback Example和ofxWMFVideoPlayer:远程播放MP4(HTTP)文件时,首帧显示慢,seek好慢(15s-90s);我们测试过:如果 MOOV 在前面,那么这些操作非常快。 那么这里需要什么特殊设置吗?

【问题讨论】:

【参考方案1】:

如果发货的库存 MPEG-4 媒体源不符合预期,您将没有太多选择来让事情变得更好。除了用custom built media source primitive 替换它之外,您还可以在HTTP 连接之上提供自己的实现字节流(IMFByteStream)。通过这样做,您将能够从您的字节流创建MFCreateSourceReaderFromByteStream MP4 源阅读器,并且在您的字节流中,您将能够捕获从文件末尾读取的请求并提供在正文之前读取它的数据媒体和缓存分别已经读取的块。

【讨论】:

以上是关于如何使基于Media Foundation的播放打开并快速查找moov结尾的MP4 HTTP文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 Media Foundation 是不是可以实际播放文件而不仅仅是加载它

使用 Microsoft Media Foundation 从文件播放视频

Media Foundation 播放列表仅播放播放列表中的第一个文件

使用 Media Foundation 将音频从文件播放到扬声器

Media Foundation 网络摄像头视频 H264 编码/解码在播放时会产生伪影

Android NuPlayer要点详解