1

我想创建一个从我的 directx 应用程序获取的图像生成的 FLV 流,最终出现在网页上。

我目前的计划是(已经)将屏幕截图作为 JPG:s 从 dx 应用程序发送到在 Linux 上运行的客户端。此客户端将 JPG:s 转换为 MJPEG 流。ffmpeg 将 MJPEG 流转换为 FLV - 最终在浏览器中的 Flash Player 中。

就像是;

  1. 在 Windows 机器上运行 dx 应用程序,它会监听连接以将截图 JPG:s 发送到
  2. 在linux机器上;./jpg_to_mjpeg_client | ffmpeg -f mjpeg -i - output.flv

我认为这个计划很好,但我现在卡住了。ffmpeg 似乎无法正确处理来自客户端的 MJPEG 流。我使用我在网上找到的一些代码从 JPG:s 创建 MJPEG 流,我知道 MJPEG 格式没有真正的规范,所以也许他们不使用相同的 MJPEG 格式或其他东西。

现在我正在为 dx 应用程序的每一帧发送 [JPG 缓冲区大小]、[JPG 缓冲区]。我想我也可以在那里编码一些流,但另一方面我也不想在渲染机器上浪费太多的 CPU。

你会怎么做?任何提示都非常感谢!库/API:s to use,其他解决方案..我根本没有太多视频编码经验,但我非常了解“通用编程”的方法。

首选 C 或 C++,但 Java 或 Python 也可以。不过我希望它很快 - 它必须实时创建,来自 dx 应用程序的一帧应该尽快在浏览器中结束:-)

哦,未来的计划是它应该是交互式的,这样我就可以从浏览器中的 web 应用程序与 DX 应用程序进行通信/控制。也可以添加这些信息。有点像基于网络的 VCR,电影是从 DX 应用程序实时渲染的。

谢谢,

4

1 回答 1

0

在 Linux 上使用 gstreamer。您可以使用您喜欢的任何编解码器将几乎任何输入和输出组合拼凑在一起。学起来有点麻烦。

于 2011-04-20T01:12:59.707 回答