Mediafoundation 媒体源(字节数组)

Mediafoundation Media Source (Byte Array)

提问人:Linus 提问时间:7/4/2022 最后编辑:Linus 更新时间:7/4/2022 访问量:308

问:

我正在编写一个应用程序,用于将视频从一个源流式传输到目的地

  1. PC 1
    1.1 通过相机拍摄视频;
    1.2 通过变换将其编码为H.264字节数组;
    1.3 还通过 EVR 在 PC 1 上显示视频

然后将阵列传输到另一台 PC

  1. PC 2
    2.1 接收字节数组;
    2.2 将数组解码为普通视频流(RGB或YUV);
    2.3 将其显示到 EVR

我可以通过在 1.1 中创建媒体源、在 1.2 中创建转换和在 1.3 中创建媒体接收器来成功实现 1.1 到 1.3。
但是,互联网上几乎没有资源描述如何创建字节数组作为媒体源(如步骤 2.1 所示)。我找到的所有资源都使用摄像机或文件(MP4 文件等)作为媒体源。
我尝试自己创建自定义媒体源,但它总是返回E_ATTRIBUTENOTFOUND。
有没有我可以参考的资源/示例?它有一些来自 Sourceforge 或 Microsoft 的示例,但都仅使用摄像机或文件作为源。

我通过 C# 编写应用程序,并在 http://mfnet.sourceforge.net/ 使用 Media Foundation 包装器。但是,我也可以参考 C++ 源代码,我可以将其“翻译”为 C#。

多谢!

C# C++ 视频处理 ms-media-foundation

评论

0赞 Dai 7/4/2022
一般来说,你不会用 a 来表示整个媒体源 - 究竟是什么让你如此专注于使用 ?(人们不使用的原因是媒体文件的大小可能达到数十 GB,但 .NET(甚至 x64)的字节数组不能大于 2GB——更不用说编组一个巨大的缓冲区有多慢......Byte[]Byte[]Byte[]
1赞 Linus 7/4/2022
我的应用程序“流式传输”视频,而不是对视频文件进行编码/解码。因此,每个帧(样本)的“数据包”大小很小,我发现在用 H.264 编码后,每个数据包的字节数不到 20000 字节,每秒只有 30 帧(即 30 个数据包)。.Net(和 Media Foundation)应该易于处理这种大小的数据。
0赞 Dai 7/4/2022
啊,好吧——我以为你的意思是你有一首代表整个 8 小时电影的单曲或其他东西。不好意思。Byte[]
0赞 Linus 7/4/2022
还行。有人知道该怎么做吗,请帮忙。谢谢。
0赞 mofo77 9/22/2022
我建议你应该使用谷歌:流媒体协议

答: 暂无答案