我使用V4l2接口作为gstreamer管道的源,将相机输入进入linux机器。我正在构建一个控制相机的界面,我想用HTML / javascript进行通信,与本地服务器进行通信。问题是从gst管道进入浏览器。这样做的选项似乎是:
以前有没有人有解决这个问题的经验?最重要的要求是饲料尽可能接近实时。如果可能的话我想避免闪光,虽然它可能不是。任何帮助将不胜感激。
答案 0 :(得分:2)
您已经考虑过多种解决方案。您也可以将ogg / vorbis / theora或vp8流式传输到icecast服务器,请参阅OLPC GStreamer wiki for examples。
既然您正在寻找python解决方案(根据您的标签),您是否考虑过使用Flumotion?它是一个使用Twisted编写在GStreamer之上的流媒体服务器,您可以将它与您自己的解决方案集成。它可以通过HTTP流式传输,因此您不需要使用icecast服务器。
根据编解码器的不同,有各种调整可以实现低延迟。通常情况下,使用Flumotion,在本地,您可以获得几秒延迟,我相信可以降低(x264enc可以调整到达不到一秒的延迟,iirc)。通常,您必须减少关键帧距离,并将运动矢量估计限制为几个附近的帧:这可能会降低质量并提高比特率。
答案 1 :(得分:1)
您定位的浏览器是什么?如果忽略Internet Explorer,您应该能够使用标记直接将OGG / Theora视频和/或WebM视频流式传输到浏览器。如果您需要支持IE,尽管您可能已经缩减为flash applet。我只是使用Flumotion和Flowplayer http://flowplayer.org/的免费版本设置了一个网络流,它运行得很好。 Flowplayer有很多高级功能,我几乎没有开始探索。