IP 카메라 (Basler BIP-1280c)에서 비디오 스트림을 읽으려고합니다. 내가 갖고 싶은 스트림은 카메라의 버퍼에 저장되며 길이는 40 초이며 MJPEG에서 디코딩됩니다.MJPEG IP 카메라의 비디오가 너무 빠름
이제 웹 브라우저를 통해 스트림에 액세스하면 아무 문제없이 40 초가 표시됩니다. 하지만 실제로 스트림을 다운로드하고 저장할 수있는 응용 프로그램이 필요합니다.
카메라가 http를 통해 액세스되므로 libcurl
을 사용하여 액세스합니다. 이 작품을 잘 작동하고 어떤 문제없이 스트림을 다운로드 할 수 있습니다. * .avi 파일에 스트림 데이터를 저장하기로했습니다.
하지만 이제 문제가 생겼습니다 : 비디오를 열 수 있고 (Totem Video Player 및 VLC로 시도) 기록 된 모든 것을 볼 수 있지만 너무 빠릅니다. 전체 비디오는 5 초 (40 대신)로 지속됩니다. MJPEG에 전체 비디오 길이 또는 fps와 같은 정보를 넣을 수있는 헤더가 있습니까? 비디오 플레이어가 누락 된 정보가있어 빨리 재생할 수 있어야합니다.
업데이트 : 답변에서 제안한 것처럼
, 나는 hex 에디터로 파일을 열고 제가 발견 한 것은이 있었다 :
--myboundary..Content-Type: image/jpeg..Content-Length: 39050.........*Exif..II*...............V...........................2...................0210................FrameNr=000398732 6.AOI=(0800x0720)@(0240,0060)/(1280x0720).Motion=00000 (no) [00000 | 00000 | 00000 | 00000 | 00000].Alarm=0000 (no) .IO =000.RtTrigger=0...Basler..BIP2-1280c..1970:01:05 23:08:10.8 98286......JFIF.....
. ............................ ....&"((
이 헤더는 파일 전체에 반복적으로 발생하며 (이진 데이터의 많은 바이트가 뒤 따른다). 카메라 설명서에서 모든 MJPEG 그림이이 머리글을 읽으므로 실제로는 괜찮습니다.
더 흥미로운 내용은 마지막 줄에 JFIF
입니다. 제안 된 답변 에서처럼 이것은 아마도 파일 형식의 지표 일 것입니다. 하지만 afaik JFIF는 jpg와 같은 단일 그림 형식입니다. 그렇다면 전체 비디오 파일이 단순한 "브레인이없는"체인 사진 일 수도 있습니다. 그리고 내 플레이어는 프레임 속도에 대한 지식 없이도이 사진을 차례로 보여야한다고 가정합니다.
avi 파일에 대해 지정한 프레임 속도 값을 확인하십시오. avi로 작성한 프레임 수를 계산하고 40 초 동안 프레임을 재생할 프레임 수를 계산하십시오. –
'AVI' 컨테이너가 깨졌습니다 (이미지는 좋을 수도 있지만 타임 스탬프가 아닙니다). 파일 형식에 대한 다른 옵션이 있다면 아마도 대안을 시도하고 싶을 것입니다. AVI 파일 프레임 속도 당 고정 IP 카메라 스트림에 적합하지 않습니다. –
하지만 실제로 파일 형식을 선택할 수 없습니다. 방금 스트림 데이터에 액세스 할 수 있으며 파일로 덤프해야합니다. 따라서 데이터가 저장되는 방식에 영향을주지 않으며 파일 확장자를 선택할 수 있습니다. – Toby