【发布时间】:2015-08-21 12:14:16
【问题描述】:
我有一个具有以下设置的 ASP.NET 应用程序:
- 以 656x492 分辨率捕捉原始 RGB 帧的相机
- 这些帧在我的 C# 代码中处理(带有一些简单的图像 处理)
- 原始图像存储在字节数组中(以及包装在位图容器中)
- MISSING MAGIC:将原始图像缓冲区转换为 WebM 流
- 在另一端,我有一个函数
HttpResponseMessage函数,该函数将 WebM 流与PushStreamContent函数挂钩(受此 blog post 启发)。此函数将视频文件的块推送到网站。 - 播放视频的网站。
我正在努力弄清楚如何实施第 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;
}
基本上,我想通过以某种方式将我的原始帧动态编码为 WebM 格式并将它们存储在 buffer 中来替换 video.Read 函数,这样它们就可以作为实时流推送到网站上。有没有直接的方法来做到这一点?如果一些帧被丢弃,那很好。
如果有更好的完全不同的方法,那么我当然也愿意接受建议。
【问题讨论】:
-
您需要直播还是录制后再流式传输文件?
-
@aergistal:我必须直播。我已经能够录制然后流式传输文件了。
-
如果您使用管道解决方案,请确保您使用单个连续过程进行编码。否则,您将导致输出流不连续,因为每个新生成的进程都会重置时间戳(接近零的值)。
标签: c# asp.net video-streaming html5-video webm