【发布时间】:2010-01-20 23:40:28
【问题描述】:
我想创建一个从我的 directx 应用程序中获取的图像生成的 FLV 流,以最终显示在网页上。
我目前的计划是(已经)将屏幕截图作为 JPG:s 从 dx 应用程序发送到在 Linux 上运行的客户端。此客户端将 JPG:s 转换为 MJPEG 流。 ffmpeg 将 MJPEG 流转换为 FLV - 最终在浏览器的 Flash Player 中。
类似的东西;
- 在windows机器上运行dx app,监听连接发送截图JPG:s到
- 在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, other solutions.. 我没有太多视频编码经验,但我非常了解“通用编程”的方法。
首选 C 或 C++,但 Java 或 Python 也可以。不过我想要它很快- 它必须实时创建,dx 应用程序中的一帧应尽快在浏览器中结束:-)
哦,未来的计划是它应该是交互式的,这样我就可以从浏览器中的 web 应用程序与 DX 应用程序进行通信/控制。也可以添加这些信息。有点像基于网络的 VCR,电影是从 DX 应用程序实时渲染的。
谢谢,
【问题讨论】:
-
作为记录,我设法让 DX 应用程序通过 HTTP 将 JPG:s 作为 MJPEG 发送到这一点。 ffmpeg 接受了这一点,并能够从中吐出 MPG 视频。所以现在剩下要做的就是 FLV 流了,为此我将尝试 ffserver。
标签: streaming directx real-time jpeg video-encoding