我正在尝试从 PHP 中的 Mjpeg 流中获取帧。我尝试过文件读取来读取文件,然后根据标头获取帧。但我做不到。我可以看到文件中存在标头,但是当使用 exif_read_data 查找标头是否存在时,它显示没有标头。我获取帧的代码是:
function grab_frame($url) {
$f = fopen($url, 'r'); //6,168
if($f) {
$r = null;
while(substr_count($r, "Content-Length")!= 5){
$r.= fread($f,40000000);
$start = strpos($img,'F1');
$end = strpos($img,'F2');
$frame = substr($r, $start, $end);
}
fclose($f);
return $frame;
}
}
Run Code Online (Sandbox Code Playgroud)
我想使用内容长度标头来查找帧长度,然后获取整个帧数据,然后再次循环以查找下一帧。
小智 5
读取 mjpeg raw 直至完成。
<?php
$camurl="http://admin:pazz@192.168.137.252:80/getimage"; // Mjpeg URL
$f = fopen($camurl, "r");
$r = "";
if($f) {
// unless 1 frame raw read.
while (substr_count($r, "\xFF\xD8")<2) $r.=fread($f, 8192);
}
// clip frame out raw
$start = strpos($r, "\xFF\xD8");
$end = strpos($r, "\xFF\xD9", $start)+2;
$frame = substr($r, $start, $end-$start);
Header("Content-type: image/jpeg");
echo $frame;
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3708 次 |
| 最近记录: |