OpenWrt 및 교재 Q&A

mjpg-stream으로 스냅샷 저장 방법

페이지 정보

작성자 guest 작성일18-01-24 18:50 조회4,057회 댓글3건

본문

웹브라우저에서 snapshot으로 사진찍고 stream으로 동영상 보는 것은 알겠습니다.
근데 snapshot으로 찍은 사진을 공유기에 저장할 수 는 없나요?

kamikaze는 영상이 파일로 저장되는 것 같은데
backfire는 그런 기능을 할 수없나요?

// 관리자 2018-01-24: 12-06-02 19:23 에 작성된 글입니다

댓글목록

박우재님의 댓글

박우재 작성일

kamikaze에서 되었다면 backfire에서도 될것입니다. 어떻게 안되나요?

// 관리자 2018-01-24: 12-06-07 15:09 에 작성된 글입니다

이현종님의 댓글

이현종 작성일

mjpg-streamer를 사용하여 스냅샷을 저장하는 방법에 대해 제가 알고있는 범위내에 설명드리겠습니다.

mjpg-streamer 패키지를 설치하면
/usr/lib 폴더 내에 input_file.so, input_gspcav1.so, input_uvc.so 인 입력에 관한 라이브러리가 생성되고
output_file.so, output_http.so인 출력에 관한 라이브러리가 생성됩니다.

이때, 실험을 진행하면 /?action=stream에는 현재 영상이 나오고
/?action=snapshot에는 캡쳐된 화면이 나옵니다. 하지만 두가지 방식 모두 kamikaze에서 spacat 프로그램을 사용하여 .jpg 파일을 생성후 웹에 업로드 하는 방식이 아닌 xml을 이용한 방식이라 파일생성은 하지 않습니다.
그 이유는 output_http.so 라이브러리에 이들이 포함되어 웹서버를 작동되기 때문입니다.

즉, 실험에서는 /etc/config/mjpg-streamer에서 파일을 수정후 /etc/init.d/mjpg-streamer start로 실행시
그에 해당하는 hotpulg가 작동하여
mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_http.so"가 적용되어 실행되기 때문입니다.
따라서 웹에 구동하는 방식(xml 사용됨)이라 따로 파일을 저장할수 없지만

output_file.so 라이브러리를 사용한다면 가능합니다.
mkdir /pic
mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_file.so -f /pic -d 15000" 을 입력시
/pic 폴더에 15초 간격으로 파일로 저장하게 됩니다.
하지만 공유기의 작은 메모리 용량으로는 사진을 계속 저장하다가는 일납니다...

따라서  overwriting을 하여야 하는데.
vim /usr/bin/mjpg-streamer-overwrite.sh
를 수행후 쉘 스크립트 파일을 생성합니다.

그 안에 다음과 같이 입력합니다.
------------------------------------------------------------------------------
#!/bin/bash

# comment out the following line to disable messages
VERBOSE=1

if [ $VERBOSE ]; then
  echo -e "Rename script started at:\t$(date)";
  echo -e "Parameter \$1 is:\t\t$1"
  echo -e "current directory is:\t\t$(pwd)"
  echo -e "move command is:\t\tmv -T -f \"$1\" 'moved.jpg'"
fi

# move the temporary file to a given filename
mv -T -f "$1" 'moved.jpg'

RES=$?
if [ $VERBOSE ]; then
  echo -e "move command returned:\t\t$RES"
fi
--------------------------------------------------------------------------

위 내용을 입력하였으면
mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_file.so -c /usr/bin/mjpg-streamer-move-and-overwrite.sh"를 입력하여 설정을 적용하시기 바랍니다.

위 내용을 적어주면
/tmp폴더내에 moved.jpg 파일이 생성됩니다.

참고 사이트 :
http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Output_file
http://skillfulness.blogspot.kr/2010/03/mjpg-streamer-documentation.html


저도 위 사이트들을 참고하여 진행을 하였는데 스냅샷 저장에는 실패 하였습니다. 일단 제가 알고 있는 범위내에 적어드립니다. 한번 시도해보시고 성공하시길 바랍니다..

// 관리자 2018-01-24: 12-06-10 02:40 에 작성된 글입니다

guest님의 댓글

guest 작성일

답변감사합니다 하지만 저도 같은 방법으로 해 보았으나 파일이 생성되지 않네요.. ㅜ

// 관리자 2018-01-24: 12-06-12 21:27 에 작성된 글입니다