ip camera 질문 (아래 무답)

   조회 15171   추천 0    

상황은 이렇습니다. ip camera 에서 비디오를 받아서 bitmap 이미지들을 만들어야하는데요...
랭귀지는 상관없습니다만 c 또는 c++ (vc++ 도 오케이) 으로 개발하려하는데요 (자바는 퍼포먼스문제로)...  비디오 프로세싱을 너무 잘몰라서 지금 좀 원시적인 방법으로 문제를 해결해놓은 상태입니다...  하지만 좀 좋은 기술을 쓰고 싶습니다..

여기서 제질문은...

1. mpeg 또는 h264 로 비디오를 rtsp 또는 omvif(?) 같은 스텐다드 프로토콜로 받아서 디코딩하고 bitmap 프래임으로 저장 (또는 사용)하려합니다... 어떤 라이브러리를 쓰면 좋을까요? 현재 opencv 를 이용하여 rtsp 로 비디오를 받는데 좀 문제가 있어서요...

2. 가능한 화질이 좋아야하기때문에 디코딩은 딱 한번만 하고싶습니다만 어찌 해야할지 컨셉만있고 사실 방법을 모릅니다... 어디서부터 작업을해야할까요????

경험있으신분들 댓글 부탁드립니다... 대강 근처댓글이면 도움 항상됩니다.... 감사합니다!
짧은글 일수록 신중하게.
송진현 2014-12
제가 패킷 뜯어보았으때

일단 http기준으로 접속시 컴퓨터에서 수신되는 패킷 자체가 영상 데이터입니다.

스트리밍되는 데이터를 라이브러리로 연결해서 처리하면 될거같은데 잘 모르겠네요..
     
seiti쩜es 2014-12
답 감사드립니다~ 저도 어느정도 초짜라서 헤매고 있습니다...
현재 RTSP로 스트리밍 비디오를  opencv 라이브러리를 사용하여 받아 사용하고 있습니다만... opencv의 문제인지 아니면 제가 사용법을 정확하게 100프로 마스터하지 못하여서인지 해상도가 높아지거나 H264 스트림의경우 디코딩된 이미지 프레임이 작살나있는 경우들이 자주 있습니다... 이것을 좀 해결해야하는데 좀 제대로 된 어프로치를 하고 싶습니다... 하지만 너무 잘 몰라서 어디서 어떻게 시작을 해야할지... 좀 헤매고 있거든요...

혹시 어떤 라이브러리를 쓰면 적합할까요?  오픈씨브이이외의 라이브러리 아시는거 있으신가요?

그냥 브레인스토밍중이라고 생각하시고 마구 던져주시면 됩니다...  모든 핏치는 도움이 됩니다... 감사드려요~
무아 2014-12
opencv를 쓰셨다면 ffmpeg을 쓰신 것 일텐데
RTSP 라면 네트웤 상황을 좀 따질 것 같은데요. 네트웤 상태는 좋은가요?
설정을 더 세밀히 하겠다면 ffmpeg 라이브러리를 직접 사용해보세요.
그리고 가능하다면 옵션만 잘 조절하면 그냥 RTSP 스트림에서 re-encoding 없이(packet 을 demuxing 하는 수준의 parsing만으로)  mp4 같은 파일 형태의 non-streaming(맞는 표현인지는 모르겠네요) 데이터로 저장이 됩니다. 이걸 추출해서 쓰는게 좋을 것 같습니다.

요점은.. 온라인 데이터를 바로 디코딩 해서 쓸 생각은 위험하고 direct copy 저장 후 추출.
     
seiti쩜es 2014-12
아... 솔루션의 특성상 live 데이터를 바로 처리해야합니다...
 rtsp 를 ffmpeg 라이브러리로 쓰는 방식 말고 다른방식은 없을까요? 직접 카메라 sdk를 연동하는것 빼고...
          
무아 2014-12
ffmpeg 꽤 좋습니다. 라이브러리도 잘되어있구요.
아래 링크 참고 해보세요.
http://superuser.com/questions/663928/ffmpeg-to-capture-stills-from-h-264-stream

ffmpeg이 어짜피 소스코드 공개되어 있고 라이브러리도 잘 되어있으니까 적용하는덴 문제 없을 겁니다.
파일로 저장하는 것이 걸리면 조금 손봐서 filestream 형태로 메모리에 넣어 버리고 opencv에서 불러 쓰는 방법도...
배상0원 2014-12
원하시는 댓글이 아니어서 죄송합니다만,
대부분의 ip camera는 jpeg 등을 바로 전송하는데, 별도로 video를 decoding하셔야 하는 이유가 있나요?
     
seiti쩜es 2014-12
jpeg으로 처리를 하게되면 초당 프레임수가 굉장히 낮더라고요. 제가 테스트용으로 가지고 있는 카메라의 경우 초당 2프레임의 jpeg을 보내주는것 같습니다만. 비디오로 하게 되면 초당 30프레임도 거뜬하거든요... 실시간 영상을 감지해야하는거라서 최소 초당 10프레임은 프로세싱해야합니다...

만약에 초당 10프레임을 jpeg 또는 bitmap 또는 raw로 준다면... 비디오를 쓸필요가 없어지기때문에 많은 문제가 해결이 되는데요... 혹시 그런 카메라를아시나요?

감사합니다~
          
무아 2014-12
실시간 영상 감지, 초당 10프레임. 라는 내용을 봐서는
연속된 2영상 같은 것을 이용해 (opencv의 mog2 같은 걸로  레퍼런스 영상 생성 후 입력 영상과 비교 등등등등) 뭔가를 하는 것 같은데
영상이 압축 되었고 그것을 복원해서 복원된 영상을 가지고 영상 처리를 하는 것이라면 압축과 복원과정, 전송과정의 손실, 에러, 등등등의 사유로 머리가 또 한웅큼 빠지실 수 있습니다 ^^


위에 댓글로 단 것에 http://superuser.com/questions/663928/ffmpeg-to-capture-stills-from-h-264-stream  를 보시면 뽑는 방법이 나와있는데 테스트 해보세요.
               
seiti쩜es 2014-12
지금 바로 그 상태입니다...
               
seiti쩜es 2014-12
지금은 opencv를 이용하여 rtsp카메라에 연결을 하면 cv::Mat 에 프레임을 받을수 있습니다... rtsp로 오는것은 mpeg이나 h264인데 opencv가 ffmpeg을 써서 알아서 풀어 주고 있습니다만 가끔 프레임이 개판으로 나옵니다... 특히 깜깜해지면 더더욱 현상이 심합니다...

sdk를 사용하라고 다들 그러시는데요... sdk를 쓸만큼 여유로움이 지금 없어서... 그리고 sdk를 써본적이 없어서 무서워서 걱정중입니다...

많이 아시는것 같은데요... 방향만 좀 알려주세요~~
                    
무아 2014-12
가끔 프레임이 개판이 된다는 것이 어떻게 나온다는 것인지 (영상 쪽은 말로 설명이 잘 안되니 이미지 자료가 있으면 빠른 이해가 될 것 같습니다)

깜깜해지면 더더욱 현상이 심하다면...

vlc 나 다른 rtsp 를 플레이 할 수 있는 플레이어로 실시간 모니터링 해보면서 깜깜해지는 경우 실제로 다른 문제가 없는지 모니터링이 필요할 것 같습니다.
                         
seiti쩜es 2014-12
http://workingwithcomputervision.blogspot.kr/2012/06/issues-with-opencv-and-rtsp.html

이런식으로 어떤부분 아래는 그냥 줄로 나옵니다...

그리고 한 줄씩 빼먹는경우도 경험했습니다...
ZSNET5 2014-12
범용 카메라를 써야 되는게 아니라면, 사용 목적에 맞는 기종을 선정하는게 더 확실합니다.
예를 들어, 움직이는 물체 추적 / 없어진 물체 감지 / 새로 생긴 물체 감지 등등의 기능이 있는 카메라들이 있습니다.

저희 회사 개발부서에서 하는 주 업무(제가 하는건 아니예요)가 지금 말씀하신 내용들인데, 방법을 알려드릴 수 있는 상황은 아닙니다.
     
seiti쩜es 2014-12
ㅎㅎㅎ
제가 하는것도 비슷한것입니다...
물체추적보다 조금더 복잡한거에요...
이걸 하려면 비디오 소스가 좋아야 하잖아요... ㅠㅠ
          
무아 2014-12
물체 추적보다 복잡한거라면... recognition? 인가요?
이지영 2014-12
http://www.hikvision.com/en/us/Products_show.asp?id=9118&showid=1
 
2048 해상도에서 초당 15프레임 / 1920 또는 1280에서 초당 30프레임의 모션 JPEG를 지원합니다.

원하시는 카메라가 아닐까싶네요.
     
ZSNET5 2014-12
MJPEG카메라는 정지화상 변화시 선명한 영상을 제공하기는 하지만, 대역폭의 소비가 많고, 멀티커넥션에 제한이 있다는 점을 주의하셔야 합니다.
배상0원 2014-12
지금 몇개 사용중인 ip cam의 예전 firmware에서는 jpeg으로 web preview를 구현했었는데, 말씀처럼 부하가 커서인지 최근에는 mpeg으로 변경된 것 같습니다.
목표로 하시는 해상도가 얼마인가요? Raspberry Pi camera로 ip cam을 하나 만들었다가 설치를 미루고 있는데, 해상도를 낮추면 10 fps는 버틸것 같습니다. 여차하면 raspberry pi 자체에서 일부 영상처리를 해서 불필요한 이미지를 버릴 수도 있을 것 같구요.
     
seiti쩜es 2014-12
IP CAM 에서 지원해주는 FPS 를 제 프로그램이 못따라가요...
          
무아 2014-12
프로그램이 못따라 간다면 (영상 처리 알고리즘들은 cpu 소모를 많이 하는 편이죠) ZSNET5 님 말씀처럼 카메라 단에서 지원되는 것을 알아보는 것이 여러모로 좋습니다.

프로그램에서 반드시 지원해야 한다면 우선 문제를 단순화 시키는게 선행되어야 할 겁니다.

검출률 100%(불가능이란건 아실거고) -> 80% 이런식으로.

영상 크기를 팍팍 줄여서 사용한다. (효과가 매우 좋죠. 가끔 보면 쓸데없이 고해상도를 고집하는 경우가 많습니다)

frame rate를 줄인다. (실제로 줄여보면 1fps 으로도 충분히 구현되는 경우가 많습니다.)

복잡한 알고리즘은 피한다. (복잡해서 성능 5% 오르는 것 보다 5%를 버리더라도 단순한 것이 더 좋습니다. 복잡한 알고리즘은 논문 쓸때나 유용하지 실제로 사용하는데는 단순한 것이 갑입니다.)
               
seiti쩜es 2014-12
하드웨어의 도움을 받을수는 없는 구조입니다... 제가 정리하여 다시 글 올리겠습니다...


QnA
제목Page 1569/5730
2014-05   5266255   정은준1
2015-12   1791184   백메가
2018-02   3285   황진우
2020-06   3335   호박고구마
2016-01   4809   송진현
2013-03   5922   힘내자
2016-12   8004   AplPEC
2016-01   6124   미수맨
2023-06   2045   pumkin
2010-02   8785   블루모션
2016-12   5264   TheLoon
2013-04   5342   박문형
2013-04   5082   회로쟁이
2013-04   14192   회원K
2016-01   5482   깜박깜박가
2021-12   3824   프랑
2017-01   15439   케리스
2019-05   3088   일론머스크
2010-04   10783   블루모션
2013-05   12296   임종균
2017-01   5266   kgmnam
2021-12   3320   찌록