我有一个 IP 摄像机流式传输 mjpeg。我最初是这样流式传输的:
//JQUERY
setInterval(function(){
$("#overView").attr("src", "http://74.105.102.4:9999/cgi-bin/view/image?pro_3?"+new Date().getTime());
},1000);
//HTML
<img id="overView" class="overView" width="710" height="400" style="" src="http://74.105.102.4:9999/cgi-bin/view/image?pro_3">
这工作正常,但每秒只给我 1 帧,如果我尝试再挤出,它会停止,因为我需要创建一个缓冲区。相机设置的最大速率为 30fps。所以为了获得更多的 FPS,我尝试使用 jQuery 创建一个缓冲区,如下所示:
//JQUERY
var mjpegImg = 'http://74.105.102.4:9999/cgi-bin/view/image?pro_3';
$('#start').attr('disabled', false).toggle(function() {
$(this).text('Stop');
$('#buffer').load(function() {
$('#video').attr('src', this.src);
this.src = mjpegImg + '?cache=' + new Date().getTime();
}).trigger('load');
}, function() {
$(this).text('Start');
$('#buffer').unbind();
});
//HTML
<img id="buffer" alt="" />
<img id="video" alt="" />
<button id="start" disabled="disabled">Start</button>
这种作品,虽然仍然有问题。这是上面脚本的小提琴 http://jsfiddle.net/XgAWJ/2/在流的右上角有一个时间戳,所以你可以知道它是如何移动的。
无论如何我可以使用这种方法挤出更多的FPS吗?15-20fps 将是理想的。摄像头由 15mbs 上传线路托管,对于 mjpeg 来说应该足够了。如果有使用 PHP 的方法,我也不害怕使用 PHP ob_start()
,我在这里看到了一个使用它的解决方案http://ben-collins.blogspot.com/2010/06/php-sending-motion-jpeg.html不确定如果这样可以正常工作,我看不到任何地方可以设置时间间隔。
谢谢一群人!