【发布时间】:2016-12-24 21:15:54
【问题描述】:
老板给了我一个有点超出我通常范围的挑战,我无法确定我应该使用哪些技术/项目。 (我不介意,我要了一些“新”的东西:)
工作:构建一个 .NET 服务器端进程,该进程可以每秒 10 次从缓冲区中获取位图,并生成/提供 10fps 视频流,以便在支持 HTML5 的现代浏览器中显示。
我应该在这里寻找哪些乐高积木?
戴夫
【问题讨论】:
标签: html5-video live-streaming webm
老板给了我一个有点超出我通常范围的挑战,我无法确定我应该使用哪些技术/项目。 (我不介意,我要了一些“新”的东西:)
工作:构建一个 .NET 服务器端进程,该进程可以每秒 10 次从缓冲区中获取位图,并生成/提供 10fps 视频流,以便在支持 HTML5 的现代浏览器中显示。
我应该在这里寻找哪些乐高积木?
戴夫
【问题讨论】:
标签: html5-video live-streaming webm
你会想要使用 FFmpeg。这是基本流程:
Your App -> FFmpeg STDIN -> VP8 or VP9 video wrapped in WebM
如果您在这些图像中进行流式传输,可能最简单的做法是将位图解码为原始 RGB 或 RGBA 位图,然后将每一帧写入 FFmpeg 的 STDIN。您必须先读取第一个位图以确定大小和颜色信息,然后使用正确的参数执行 FFmpeg 子进程。完成后,关闭管道,FFmpeg 将完成您的输出文件。如果你愿意,你甚至可以将 FFmpeg 的 STDOUT 重定向到 S3 上的 blob 存储之类的地方。
如果一次上传所有图片,然后然后您创建视频,那就更容易了。只需按顺序列出文件并执行 FFmpeg。 FFmpeg 完成后,您应该有一个视频。
另外一点信息将帮助您了解如何构建 FFmpeg 命令行:WebM 是一种容器格式。除了跟踪有多少视频流、多少音频流、用于这些流的编解码器、字幕流、元数据(如缩略图)等之外,它什么也不做。WebM 基本上是 Matroska (.mkv),但禁用了一些功能,使浏览器制造商更容易采用 WebM 标准。在 WebM 中,您至少需要一个视频流。 VP8 和 VP9 是非常兼容的编解码器。如果您想添加音频,Opus 是您可以使用的标准编解码器。
一些帮助您入门的资源:
【讨论】: