video - 如何使基于Media Foundation的播放打开并快速查找moov结尾的MP4 HTTP文件?
问题描述
- 由于历史原因,我们有很多MP4本地或远程文件是自然生成的,也就是MOOV在最后。目前,为了硬件加速提升性能,我们已经从 ffmpeg/ffplay 迁移到了 Media Foundation。
- 参考Media Session Playback Example和ofxWMFVideoPlayer:远程MP4(HTTP)文件播放时,第一帧显示慢,seek好慢(15s-90s);我们测试了一下:如果MOOV在前面,那么这些操作是非常快的。
- 那么这里需要什么特殊设置吗?
解决方案
如果发货的库存 MPEG-4 媒体源不符合预期,您就没有太多选择来让事情变得更好。除了用自定义构建的媒体源原语替换它之外,您还可以IMFByteStream
在 HTTP 连接之上提供自己的实现字节流 ( )。通过这样做,您将能够MFCreateSourceReaderFromByteStream
从您的字节流创建 MP4 源阅读器,并且在您的字节流中,您将能够捕获从文件末尾读取的请求,并在媒体正文之前提供读取它的数据并分别缓存已经读取的块。
推荐阅读
- linq-to-sql - 在具有多个选择语句的 vb.net 中使用 LINQ-to-SQL
- amazon-web-services - AWS lambda 通过私有网络调用 dynamo db 或绕过互联网流量
- sql - 将包含各种格式的 varchar 转换为 DATETIME
- java - 如何在 Java 中查看随机生成的数字?
- c# - 将具有空值的参数添加到 sqldatasource 控件的更好方法
- java - 将 GUID 插入 sql 表 uniqueidentifier 字段 - Groovy
- javascript - 此代码如何在幕后工作?
- visual-studio - 如何更改 MFC 应用程序向导中的默认英语(美国)资源语言?
- python-3.x - 抓取图像并存储在多个文件夹中
- python - 结果相等时 Python unittest assertEqual 失败(Python v3.6)