2013-08-25 2 views
4

http 라이브 스트리밍 및 mjpeg 압축을 통해 Tenvis IP 카메라의 라이브 스트림이 있습니다.IP 카메라에서 라이브 스트림 녹화 (MJPEG 압축)

나는 그것을 파일에 저장하려고하는데, 나는 이것을 사용하여 PHP를 시도했다. 내 코드는 다음과 같습니다 :

<?php 
$input = fopen("http://xxx.xxx.xxx.xxx:81/videostream.cgi?user=user&pwd=admin&resolution=8"); 
$output = fopen("video.mpg", "c+"); 
$end = time() + 60; 
do { 
    fwrite($output, (fread($input, 30000)), 30000); 
} while (time() <= $end); 
fclose($output); 
fclose($input); 
echo "<h1>Recording</h1>"; 
?> 

코드를 만들었지 만 파일을 작성하지 않았습니다. 모든 제안은 인정 될 것입니다

답변

1

MJPEG (http://en.wikipedia.org/wiki/Motion_JPEG#M-JPEG_over_HTTP)에 대한 위키피디아 페이지에 따르면, HTTP를 통한 MJPEG 스트림은 기본적으로 특수한 MIME 형식과 함께 JPEG 프레임 시퀀스입니다. 이를 캡처하여 비디오 파일에 저장하려면 들어오는 데이터를 .mpg 파일에 쓰고 비디오를 볼 수 있는지 확신 할 수 없습니다.

솔직히 말해서 스크립트가 아무 것도 쓰지 않는 이유는 모르겠지만 다음 페이지를 보았습니다. 특정 소프트웨어 용으로 작성되었지만 MJPEG 스트림을 캡처하는 방법에 대한 예제를 제공합니다 브라우저로 전달하십시오. http://www.lavrsen.dk/foswiki/bin/view/Motion/MjpegFrameGrabPHP

예제 중 하나를 시도해보고 브라우저에 전달하는 대신 파일에 저장하십시오. 당신은 그들이 한 번에 하나 개의 이미지를 읽어 볼 수 있습니다 :이 부분을 캡처하지만 비디오로 저장하지 스트림을 해결 않을 경우

while (substr_count($r,"Content-Length") != 2) $r.=fread($input,512); 
$start = strpos($r,'ÿ'); 
$end = strpos($r,$boundary,$start)-1; 
$frame = substr("$r",$start,$end - $start); 

, 또 다른 옵션은 나중에 후, JPEG 파일로 개별적으로 모든 프레임을 저장하는 것 그들이 함께 비디오를 만드는 등의는 FFmpeg 같은 도구를 사용하여 스티치 : Image sequence to video quality

업데이트 을 당신이는 FFmpeg의 길을하기로 결정하는 경우, 단지는 FFmpeg를 사용하여 스트림을 캡처 할 수있다. 예를 들어 this 질문을 참조하십시오.

희망이 도움이됩니다.

0

대부분의 경우 카메라가 mjpeg를 지원할 때 rtsp도 지원하므로 달성하고자하는 것을 해결할 수 있습니다. 이를 통해 VLC와 같은 앱을 사용하여 기록하는 것이 매우 간단합니다.

관련 문제