我使用Media Foundation在一系列过滤器之后用输入MP4创建MP4(H264 + AAC)输出文件。视频的创建工作完美,视频在本地无需再现。问题是,当远程执行时(通过网络播放器甚至是VLC),视频在完全下载之前不会启动。
我检查并确认托管该文件的http网站支持Accepts-Ranges标题字段,过了一段时间我发现问题的发生是因为文件没有使用"快速启动& #34;允许逐步下载视频的标志。
我尝试在线搜索解决方案,但我一直无法找到将这个标志应用于Media Foundation的Sinkwriter的方法。任何的想法? (我无法使用任何外部应用程序执行此操作,因为此代码将在Windows应用商店环境中运行)
答案 0 :(得分:2)
渐进式下载要求moov
框在MPEG-4文件中位于mdat
框之前,这通常在生成文件时需要额外的工作,而这不是Media Foundation的默认行为。
媒体基金会介绍了MF_MPEG4SINK_MOOV_BEFORE_MDAT
attribute来处理这个问题:
mpeg4媒体接收器的默认行为是在之后写'moov' 'mdat'框。设置此属性会导致生成的文件写入 'mdat'框之前'moov'。
为了使mpeg4接收器使用此属性,字节流 传入时一定不能慢慢寻求或远程寻找。
此功能涉及额外的文件复制/重新加载。
注意最低要求。或者,您需要对文件进行后处理以将moov
框移动到开头。
另见: