将原始帧转换为 webm 直播流

2024-02-14

我有一个 ASP.NET 应用程序,其设置如下:

  1. 以 656x492 分辨率捕获原始 RGB 帧的相机
  2. 这些帧在我的 C# 代码中进行处理(带有一些简单的图像 加工)
  3. 原始图像存储在字节数组中(以及包装在位图容器中)
  4. 缺少魔法:将原始图像缓冲区转换为 WebM 流
  5. 在另一端我有一个功能HttpResponseMessage将 WebM 流与PushStreamContent函数(受此启发博客文章 http://www.strathweb.com/2013/01/asynchronously-streaming-video-with-asp-net-web-api/)。此函数将视频文件的块推送到网站。
  6. 一个播放视频的网站。

我正在努力弄清楚如何实施point 4。现在我只能流式传输视频文件。但我想将原始缓冲区编码到 WebM 容器中并将其流式传输到我的网站。核心代码段point5看起来如下:

while (length > 0 && bytesRead > 0)
{
    bytesRead = video.Read(buffer, 0, Math.Min(length, buffer.Length));
    await outputStream.WriteAsync(buffer, 0, bytesRead);
    length -= bytesRead;
}

基本上我想更换video.Read通过某种方式将我的原始帧动态编码为 WebM 格式并将它们存储在buffer,因此可以将它们作为直播推送到网站。有没有直接的方法来做到这一点?如果有一些帧丢失也没关系。

如果有更好的完全不同的方法,那么我当然也愿意接受建议。


根据您可以在服务器上执行的操作(部署 Web 应用程序之外),您可能会考虑将缓冲区写入管道,然后使用ffmpeg在后台运行以使用类似的东西创建您的流-f rawvideo -pixel_format rgb24 -video_size 656x492作为输入参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将原始帧转换为 webm 直播流 的相关文章

随机推荐