代码之家  ›  专栏  ›  技术社区  ›  amazedsaint

视频捕获+上传+处理+流式传输-.NET&C#

  •  12
  • amazedsaint  · 技术社区  · 14 年前

    我们正在尝试找出.NET堆栈中可用的任何技术/库(甚至是第三方DLL上的包装器),它们将帮助我们构建一个可以

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

    优选地,步骤2和步骤4之间的时间延迟/延迟应该最小

    最近出现了acrsoss FFmpeg库,它有一个C#包装器。FFmpeg是否可以用于处理端?

    6 回复  |  直到 14 年前
        1
  •  13
  •   Henrik    14 年前

    我会这样说:

    1. 使用silverlight或flash捕捉摄像机输入,例如 detailed here .
    2. 你可以发送字节流 a socket 服务器正在侦听的。
    3. 在接收端,只需将socket接受程序用作路由器程序,并连接多个侦听工人。在工人和路由器程序之间,例如AMQP RabbitMQ . 使用例如 stream encoding 到rabbit节点,作为会话/用户会话的一部分,rabbit节点可以将所有消息进一步发送到一台计算机,或者在可用的worker之间进行交织。这里是 the manual . 当视频被编码时,它会通过消息总线异步传输回来。根据英特尔的测试,总线本身应该可以在高吞吐量下正常工作,但他们必须使用交错tcp通道模式(他们在千兆局域网上进行了测试)。这里的其他用户建议 FFlib webM
        2
  •  3
  •   Keith Blows    14 年前

    来自Mitov的VideoLab可以完成所有这些,并且个人使用是免费的(商业使用不是那么免费,但是价格也不太贵)。

    我已经购买并使用了Delphi版本,并且知道它非常好用,所以我非常确定.NET版本可以满足您的需要。

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

        3
  •  2
  •   Web2    14 年前

    似乎拼接器可以处理静态视频和转换它-我不知道如何处理实时上传的视频- http://splicer.codeplex.com/

        4
  •  2
  •   Igal Tabachnik    14 年前

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

        5
  •  2
  •   Rei Miyasaka    14 年前

    Expression Encoder 将其直接推送到流服务器或流服务器。

    它应该有你需要的一切:

    智能编码/智能再压缩 WMV如果源也是WMV并且不是 剪切编辑,串行批量编码, 网络摄像头和DV的实时编码 摄像机

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

    平滑流媒体(720p+视频使用 HTTP)和优化的客户端 (Silverlight)和服务器(IIS,带 平滑流)

    WebDAV发布,发布插件 对于Silverlight流媒体,Amazon S3

    导入在中创建的XAML覆盖 表情设计与定制 放置和循环

    JavaScript触发事件

    集成,本机MPEG-2解码器

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

    预览和比较编码 实时设置

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

        6
  •  1
  •   GrandmasterB    14 年前

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

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

    过程 不是很复杂。。。重要的是细节(例如,“流”对你意味着什么?你的意思是“流”,还是通过http?这是一个巨大的话题)