我在寻找编码,这将是在HTML5视频标签可视摄像头流的最快方式。 我使用的是PANDABOARD: http://www.digikey.com/product-highlights/us/en/texas-instruments-pandaboard/686#tabs-2的硬件。 可以使用的GStreamer,CVLC,ffmpeg的。 我会用它来驱动机器人,因此需要在视频流中的滞后量最少。 质量并不一定是伟大的,它不需要音频。 而且,这仅仅是一个客户端,带宽不是问题。 最好的解决办法,到目前为止是使用了mpjpeg的ffmpeg给了我大约1秒的延迟。 更好的东西?
Answer 1:
我被问过很多次,所以我会尝试一般不回答这个有点只为MJPEG。 获得非常低的延迟的系统需要一些系统的工程工作,并且也理解组件。
一些简单的顶级调整我能想到的是:
保证编解码器被配置用于所述最低延迟。 编解码器将具有(尤其是嵌入式系统的编解码器)的低延迟配置。 启用它。 如果使用的是H.264是最有用的。 大多数人没有意识到,通过标准的要求H.264解码器需要显示它之前缓冲帧。 这可以是高达16,用于QCIF和高达5个帧720p的。 这是获得第一架出了很多的延迟。 如果你不使用H.264还是确保你没有启用B帧。 这增加了延迟获得的第一张照片了。
由于使用的是MJPEG,我不认为这多少是适用于你。
编码器也将有一个速度控制延迟。 (称作init延迟或VBV BUF大小)。 将它设置为,让你接受高质量的最小值。 这也将减少延迟。 可以将此视为编码器和解码器之间的比特流缓冲器。 如果使用的是X264,这将是VBV缓冲器容量。
一些简单的其他配置:使用尽可能少的我的图片作为可能的(大内期)。 我的照片是巨大的,增加延迟到在网络上发送。 这可能不是在系统中非常明显,其中端到端延迟在1秒或以上的范围内,但是当你正在设计一个需要端到100毫秒以下,这和其他几个方面发挥作用的端到端延迟的系统。 此外,还要确保您使用的是低延迟音频编解码器AAC-LC(而不是HEAAC)。
你的情况去较低的延迟,我建议正在从MJPEG拿走并使用无B帧至少MPEG4(简单类)或最好是H.264基本规范(X264给人以zerolatency选项)。 原因很简单,你会得到更低的延迟,你会得到较低的比特率编码后的数据发送出去,你可以去全帧率。 如果你一定要坚持MJPEG你接近,你可以没有更多先进的功能得到了什么使用开源组件是从编解码器和系统支持。
另一个方面是该内容到显示单元的传输。 如果你可以使用UDP会比TCP减少延迟了很多,虽然它可以在根据网络条件次有损。 你所提到的HTML5视频。 我很好奇,你是怎么做的流媒体直播的HTML5视频标签。
有迹象表明,也可以调整了,我会放在先进的类别和要求系统工程师尝试各种事情了其他方面
什么是操作系统的网络缓冲? 操作系统它发送了性能方面的原因之前可以缓冲的数据。 调整此获得的性能和速度之间的良好平衡。
您是否在使用CR或VBR编码? 虽然CBR是伟大的低抖动,您还可以使用加盖VBR如果编解码器提供它。
您的解码器开始解码部分帧? 所以你不必担心它提供给解码器之前帧的数据。 只要保持尽快将数据推到解码器。
你可以做实地编码? 半部从帧编码时获得的第一图像之前。
你可以做切片编码,只要片可在网络上立即发送回调?
在我在上述所有工作过子100毫秒的延迟系统的使用。 一些功能可能无法在开源组件可用,但如果你真的需要它,并很热情,你可以继续前进并加以实施。
编辑:我知道你不能为iPad的流媒体解决方案做了很多上述的和有因为HLS还可以实现延迟的限制。 但我希望,当你需要的任何低延迟系统,它会在其他情况下是有用的。
Answer 2:
我们有一个类似的问题,在我们的情况下,有必要的外部事件,并与视频流同步处理。 我们尝试了几种解决方案,但这里所描述的解决了这个问题,是非常低的延迟:
Github上链接
它使用GStreamer的转码至MJPEG然后将其发送到一个小蟒蛇流媒体服务器。 这具有使用标签来代替,因此它可以通过最现代的浏览器,包括iPhone浏览的优势。
只要你想的<video>标签,一个简单的解决方案是使用HTTP推出。 这有我们试图所以它可能为你工作的所有解决方案的最低延迟。 被警告,OGG / Theora格式将无法在Safari浏览器或IE工作,所以那些希望针对Mac或Windows将不得不修改使用MP4或WebM的管道。
另一种解决方案,看起来很有希望,GST-流媒体服务器。 我们根本无法找到足够的文档,使其价值追求。 我倒是感激,如果有人可以请教一下应该如何使用计算器的问题!