【问题标题】:Real-time video encoding for mobile移动端实时视频编码
【发布时间】:2009-12-02 06:48:27
【问题描述】:

有谁知道进行实时视频重新编码的好方法(目标格式是 3GP s263 AMR 窄带和 MP4 mp4v mp4a,但当然不能同时使用。输入文件将是 WMV,但输入越多格式支持更好)?

目前我们使用调用 ffmpeg 命令行的 C# 服务进行异步处理,但是对于同步请求执行此操作的想法有点次优,因为用户最终在播放开始之前等待了很长时间(虽然如果这是最好的情况,请告诉我,我想我会接受的)。

如果我们能够同时提供文件并保存它(这样我们就可以存储它以供将来的请求),那就太棒了,但如果我们不能这样做,那也不会是一场灾难。

作为旁注,我宁愿避免使用流媒体解决方案,因为支持它的设备较少,但如果没有什么好方法可以做我想做的事,我很乐意听到替代方案,即使它们涉及流媒体。

更新

只是为了让你们了解我的最新情况能够以这种方式获得我所追求的功能(逐步捕获数据而不是一旦完成就可以让我足够接近实时就足够了)。

仍在研究这是否可行,并试图找到如何做到这一点的好示例(即使是那些用 c 而不是 c# 编写的,因为它会显示如何与 DLL 交互)。

【问题讨论】:

标签: c# video mobile video-encoding


【解决方案1】:

至于流媒体解决方案,我们使用了StreamCoders' MediaSuite.net。将任何基于 MPG 的视频流式传输到 3GP/H263 对我们来说效果很好。但是,您应该确切地知道您在规格、格式、编码等方面所做的工作。这是一个巨大的领域,他们的产品并没有“解释”一些基本术语,他们假设您已经知道自己在做什么。此外,据我记忆,您必须手动同步音频和视频通道。他们的演示应用程序展示了如何做到这一点(但话又说回来,它只是一个演示应用程序,因此您最终可能会进行优化)。

我认为您可以将它用于重新编码以及流式传输,我最近自己没有尝试过。你打算如何输出结果?作为System.IO.MemoryStream?

另一种流媒体解决方案是拥有一个众所周知的流媒体服务器,例如Xenon,并使用它执行“背靠背”技术:您的处理程序获取请求并创建对流媒体服务器的请求。流式传输服务器的响应流式传输到客户端。这是一种 hack,但在一段时间内对我们很有用。

您的 ffmpeg 解决方案很好,您可能会发现它更易于实现,而不是较低级别的几乎实时转换。如果你能“容忍”这一点,也许最好保持原样。

更新:如果您最终使用 .Net 库包装 ffmpeg,这似乎是一个很好的解决方案,因为 ffmpeg 是一个很棒的图书馆,如果您能分享您的解决方案,那就太好了。我们试着玩它,但我们没有足够的时间。

【讨论】:

  • 这些第三方工具的价格相当高。绝对看起来很有用,但可能有点超出我们希望的花费。就输出而言,Ideal-word 我希望得到某种解决方案,我可以将 System.IO.Stream 对象传递给(可能是一个将其发送到文件和响应流的自定义对象),我怀疑我' d 必须在一些代码中包装任何解决方案,以便在 .NET 对象中处理它,以使其易于使用,但这基本上是我想从我写到主应用程序的库中公开的一点。
  • 我接受这个答案,因为它是最好的,而且赏金快用完了。如果我写一个 FFmpeg 包装器,我稍后会在这个问题上写一个注释(我可以提供的确切工作量取决于我是为我工作的公司还是在我自己的时间做这件事 - 如果我这样做在他们的时间我不能真正开源它,但我可以向其他可能尝试的人提供一些提示)。
【解决方案2】:

我一直在为演示和用户组会议使用实时编码。我找到的最佳解决方案是 Microsoft Expression Encoder。随附的 SDK 使用起来相当简单,应该可以提供您需要的大部分功能。

【讨论】:

  • 我只是浏览了一下,但除非我弄错了,否则它不支持我需要的任何输出格式?
猜你喜欢
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
相关资源
最近更新 更多