【问题标题】:Video Capturing + Uploading + Processing + Streaming back - .NET & C#视频捕获 + 上传 + 处理 + 流回 - .NET & C#
【发布时间】:2011-03-22 13:08:52
【问题描述】:

我们正在尝试找出 .NET 堆栈中可用的任何技术/库(甚至是 3rd 方 dll 之上的包装器),这将帮助我们构建一个可以帮助我们构建的应用程序

  • 1 - 从用户的视频设备捕获图像
  • 2 - 实时上传到服务器
  • 3 - 处理视频(在服务器中) - 例如:为视频添加水印
  • 4 - 将其流式传输回用户/其他用户

最好,步骤 2 和 4 之间的时间延迟/延迟应该是最小的

第一个要求(捕获)似乎很简单。挑战在于确定一种合适的方式来进行上传、处理和流式传输。任何有效的建议或想法?

最近来到了 FFmpeg 库,它有一个 C# 包装器。 FFmpeg可以用来做处理端吗?

【问题讨论】:

    标签: c# .net video-streaming video-capture video-processing


    【解决方案1】:

    您可以如上所述使用 Silverlight 进行捕获,然后使用 Expression Encoder 将其推送到流服务器或直接从那里流。

    它应该有你需要的一切:

    智能编码/智能重新压缩 WMV 如果源也是 WMV 并且没有 执行帧操作[4], 剪辑编辑,串行批量编码, 来自网络摄像头和 DV 的实时编码 摄像机

    解码/导入格式支持,因为 DirectShow的

    流畅的流式传输(720p+ 视频使用 HTTP) 与优化客户端 (Silverlight) 和服务器 (IIS 与 流畅的流媒体)

    WebDAV发布、发布插件 用于 Silverlight 流媒体、Amazon S3

    导入在 表情设计和定制 它们的时间、动画、不透明度、 放置和循环

    JavaScript 触发事件

    Windows Media 11 SDK 和 VC-1 SDK 集成,原生 MPEG-2 解码器

    使用 SAMI 为视频添加字幕 或 W3C 定时文本格式

    预览和比较编码 实时设置

    截屏

    编码引擎的对象模型, SDK 可单独下载

    【讨论】:

      【解决方案2】:

      看看Video.Show by Vertigo。这是一个用于用户生成视频内容的开源网站。它使用表达式编码器来处理压缩/视频编辑。这不完全是您所需要的,但它是一个好的开始!

      【讨论】:

        【解决方案3】:

        我会这样做:

        1. 使用 silverlight 或闪光灯来捕捉摄像机输入,例如作为detailed here
        2. 您可以通过您的服务器正在侦听的a socket 发送字节流。
        3. 在接收端,只需将socket-accepting 程序用作连接了多个监听worker 的路由器程序。在工作人员和路由器程序之间,例如AMQP 与 RabbitMQ。发送异步消息(例如带有响应式扩展),例如stream encoding 到rabbit-node,然后它可以将所有消息作为对话/用户会话的一部分进一步发送到一台计算机,或者在可用工作人员之间交错。这是the manual。随着视频的编码,它通过消息总线异步流回。根据英特尔测试,总线本身应该在高吞吐量下运行良好,但他们必须使用交错 tcp 通道模式(他们在千兆位局域网上进行测试)。这里的其他用户建议FFlib。您可能还会考虑让工作人员转换为 webM,但如果 FFlib 有效,那可能会容易得多。每个工作人员通过 AMQP 发布下一个编码的视频片段。服务器运行程序,例如我之前谈到的路由器程序,开始发送到客户端(见第 4 条)
        4. 有一个客户端程序,例如silverlight/flash 连接(例如通过您为客户端->服务器数据打开的同一个套接字,或通过 HTTP),并使用解码器读取字节流。渲染输出。

        【讨论】:

        • 更新:流编码 => 消息中的 URI,带有您接收视频数据的 ZeroMQ 套接字。
        【解决方案4】:

        这个问题有点缺乏细节(这是一个网络服务器,服务器是什么操作系统?等等),但我会根据我认为你正在尝试做的事情来进行测试。

        您可能会考虑的一件事是同时进行捕获和处理。如果用户正在运行您的客户端应用程序,请让它通过 DirectShow 进行捕获和处理。然后你需要做的就是上传视频,你可以跳过整个服务器过程。这是假设“用户”在您的控制之下——这不是某个随机上传视频的人,而是员工或其他受信任的人。

        如果不是这样,那么 ffmpeg 肯定可以用于在您的服务器上为视频添加水印。你真的不需要'包装器'。您可以从您的服务器应用程序中将其作为命令行应用程序调用,然后等待它完成。

        过程真的并没有那么复杂......它的细节很重要(例如 - '流'对你意味着什么?你真的是指'流',还是这是通过 http 吗?那是一个很大的话题)

        【讨论】:

          【解决方案5】:

          Mitov 的 VideoLab 可以完成所有这些工作,并且免费供个人使用(商业用途不是那么免费,但定价也不算太高)。

          我已经购买并使用了 Delphi 版本,并且知道它运行良好,所以我很确定 .NET 版本可以满足您的需求。

          这种任务不是微不足道的(从这里缺乏响应可以看出),所以预计 DirectX/Microsoft Media Encoder 会遇到很大的困难 - 但是有了这个工具包和作者的一些帮助,你会 最终成功。

          http://www.mitov.com/html/videolab.html

          【讨论】:

            【解决方案6】:

            Splicer 似乎可以处理静态视频并对其进行转换-我不确定是否可以处理实时上传的视频-http://splicer.codeplex.com/

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-10-14
              • 1970-01-01
              • 2013-07-26
              • 2013-01-22
              • 2012-10-05
              相关资源
              最近更新 更多