【问题标题】:Writing h264 stream into Mpeg Container using directshow使用 directshow 将 h264 流写入 Mpeg 容器
【发布时间】:2011-06-27 07:47:10
【问题描述】:

我有一个源过滤器正在推送“h264”流。我想将此流写入 MPEG4(或可能是 AVI)容器。

SourceFilter[output = H264]  ---> X--->Y ....--->FileWriter[record.mpeg4]

如何使用 DirectShow 做到这一点? (也打开不使用 DirectShow 的替代解决方案)

最好的祝福

P.S:顺便说一句,什么是最好的 H264 流的容器格式?

MPEG-4 Mux 更新

好吧,我只是尝试 MPEG-4 Mux (www.gdcl.co.uk/mpeg4)。我的 rtsp 源过滤器和 MUX 无法连接。 Intelligent Connect 尝试将 FFdshow 解码器放在源过滤器和复用器之间。

graphEdt 不会出错,但记录的流是“O”BYTE。没有记录。 我错过了做某事......但它是什么?

【问题讨论】:

  • 这个媒体类型是mpeg-4视频,当然不是你期待的H264。如果您已将输出的媒体类型设置为这种 mpeg-4 类型并且实际上是在提供 H264,那么它当然不会工作。
  • 你是绝对正确的戴维斯。但是我将 rtsp 源过滤器设置的设置从属性页(到 h264)更改,它似乎没有刷新。对不起我的错误。但是当我再次添加我的 rtsp 源过滤器(它刷新到 h264)时,它无法重新连接到 MPEG 4 muxer。 Intelligent Connect 放了一个默认的 ffdshow(解码器)。现在记录“0”字节,尽管图形编辑不会出错。
  • @Geraint Davies。我用 Muxer 更新了我的实验。 Mux 的子类型和格式似乎 Guid_null...我做错了什么但无法弄清楚。感谢您警告我的错误。
  • fourcc VSSH 不是用于 H-264 的标准fourcc 之一。如果它与标准的 H264 Fourcc 相同或相似,您应该能够非常快速地将其添加到多路复用器中。
  • @Geraint Davies Thansk。这是一个开源过滤器。所以我可以添加它。将尝试它

标签: video directshow video-processing


【解决方案1】:

在 www.gdcl.co.uk/mpeg4 上有一个 mpeg-4 多路复用器过滤器以源代码形式提供。这通常用于 H264。

您需要检查您提供的格式。有两种选择:字节流格式(每个 NALU 前有 00 00 01 起始码)和长度前缀(每个 NALU 前有一个长度字段,存储在 MP4 文件中)。多路复用器应该同时接受这两者,但您可能需要检查您使用的fourcc/subtype guid 对多路复用器的含义是否与您的源相同。

G

【讨论】:

  • 这不是产品;它是源形式的免费样本。如果它不想要你想要的,请随时要求退款。如果您需要帮助调试问题,则需要更明确地说明您采取了哪些步骤以及发生了什么。既然你有多路复用器的源代码,你可以调试它。
猜你喜欢
  • 2017-07-23
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 2011-11-07
  • 1970-01-01
相关资源
最近更新 更多