You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Media Foundation实现HTTP视频流式传输?

Media Foundation 视频流式传输问题

已实现的MP3音频流式传输

我已通过Media Foundation实现MP3音频流式传输,核心代码如下:

CComPtr<IMFAttributes> attrs;
bs; // an IMFByteStream implementation
...
attrs->SetGUID(MF_TRANSCODE_CONTAINERTYPE, MFTranscodeContainerType_MP3);
MFCreateSinkWriterFromURL(0,&bs, attrs, &pSinkWriter);
...
pMediaTypeOutAudio->SetGUID(MF_MT_SUBTYPE, MFAudioFormat_MP3);
...
// Encoding
// pAudioSample contains PCM bytes 
pSinkWriter->WriteSample(OutAudioStreamIndex, pAudioSample);

之后可将bs中的字节以Content-Type: audio/mpeg直接发送至HTTP连接,实现流式播放。

视频流式传输的尝试与问题

我希望对视频实现同样的流式传输操作,当前代码如下:

attrs->SetGUID(MF_TRANSCODE_CONTAINERTYPE, MFTranscodeContainerType_MPEG4);
...
pMediaTypeOutVideo->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_H264);
...
pSinkWriter->WriteSample(OutVideoStreamIndex, pVideoSample);
...

代码可正常运行并生成MP4流,但以Content-Type: video/mp4发送至浏览器时,页面会一直处于加载状态,似乎需要等待整个视频编码完成后才能开始播放。

疑问

  • 是否可以仅通过Media Foundation实现视频的流式传输需求?
  • 我正在了解MPEG-DASH但不知从何入手,找到libdash但它似乎只是播放库,不确定能否仅用Media Foundation实现相关功能,也不确定是否需要添加MPEG-4描述。

内容的提问来源于stack exchange,提问作者Michael Chourdakis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:20:03