从屏幕截图创建FLV流的最佳方式

时间:2010-01-20 23:40:29

标签: streaming directx real-time jpeg video-encoding

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

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

喜欢的东西;

  1. 在Windows机器上运行dx app,它会监听连接以将屏幕截图JPG:s发送到
  2. 在linux机器上; ./jpg_to_mjpeg_client | ffmpeg -f mjpeg -i - output.flv
  3. 我认为这个计划很好,但我现在被困住了。 ffmpeg似乎没有正确处理来自客户端的MJPEG流。我使用网上找到的一些代码来创建JPG的MJPEG流:我明白MJPEG格式没有真正的规范,所以也许他们不使用相同的MJPEG格式。

    现在我正在为dx app中的每一帧发送[JPG缓冲区的大小],[JPG缓冲区]。我想我可以在某种程度上对某些流进行编码,但另一方面我也不想在渲染机上浪费太多CPU。

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

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

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

    谢谢,

1 个答案:

答案 0 :(得分:0)

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