자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

Delphi Delphi OpenCV 에 관하여...

2019.04.11 19:27

아크나톤 조회 수:1654

본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------

- width=2560 정도의 H.264엔코딩된 영상을 RTSP로 Open

- 카메라 15대의 영상을 하나의 모니터에 디스플레이

- 위와 같은 모니터가 약 10대 (즉, 하나의 시스템에서 rtsp영상을 최대 150개를 재생하는 셈)

 

한번 해보려고 합니다.

 

라이브러리는 Laex Delphi OpenCV 를 사용하는게 일단 가장 빠른거 같아 시도해 봄.

 

 

- Multi-Device Application 으로

- 그냥 OpenCV로 영상을 Capture하면 영상이 클 경우 다 깨져서 들어오니 TocvFFMpegIPCamSource로

  rtsp영상을 불러옴.

- 코덱도 잘 찾아 영상을 TImage 또는 TocvViewFMX에 어떤 필터링도 없이 TocvFFMPegIPCamSource의 IocvImage 원영상을 뿌려줌.

 

[테스트 해본 결과]

1. 다채널 영상 뷰어로 부적합.

   Intel(R) Core(TM) i5-7500 4Core, Ram 8Gb에서 위 조건의 영상 1개를 여는데 CPU 점유율은 10~14%.

   소스 수정해서 TocvFFMpegIPCamSource의 스레드 죽여도 봄(재생 속도 향상있음).

   Application.OnIdle 하에서 9채널정도는 부드럽게 돌아감(CPU점유율의 여유가 있으니까)

   TocvFFMpegIPCamSource.OnImage를 사용해보기도 함(Application.OnIdle때보다 영상재생 부드럽지 못함).

2. FMX에서 개발할 경우이므로 어떤 코딩 없이 GPU가속은 하는것으로 보이는데 Windows Apllication에서 테스트할때와

   퍼포먼스에 차이가 없음.

   작업관리자에서만 확인한 바 Windows Application에서는 GPU가 0%로 멍때리고 있던 것이 FMX에서는 35%~45%까지

   매우 열심히 뭔가를 하고 있다고 나오는데 왜 CPU 점유율은 영상 9개만 띄우면 점유율 100%에 육박하는지 지식이 짧아

   현상만 파악함.

3. 동일한 영상을 PasLibVLCPlayer에서 돌리면 CPU점유율 각각 1~2% 수준이라 깜놀.(곰플레이어는 6~8% 수준)

4-1. 해당 라이브러리 개발자 Leax에게 질의한 결과.

   TocvFFMpegIPCamSource는 다채널 뷰어로 적합하지 않다! 그리고 델파이 스레드는 그닥 훌륭하지 않다 bla bla bla...로 결론.

4-2. Mitov Software 역시 마찬가지...

      VideoLab 컴포넌트 겁나 많고 가지고 놀게 많다.

      RTSP 영상 9개 화면에 띄우는데 코딩 제로. 3분이면 끝나니 대단하죠.

      RTSP영상을 로딩하는 컴포넌트는 TVLIPCamera외 선택의 여지가 없으므로 테스트해본 결과 역시 문제는 CPU점유율.

      6개만 열어도 CPU점유율은 꽉 차버립니다 ㅠ.ㅠ

      하지만.... OpenCV 날코딩 안해도 되는 이점은 분명히 고무적이고 놀라운 일이긴 하나.

      그래픽 카드 갯수와 gpu가속 지정까지 가능하지만 Win32에서만 일부잘 쓰지 않는 컴퍼넌트에서만 국한된 점.

      Mitov씨가 귀찮을 정도로 질문을 해본 결과, 현재 FMX에서 Win VCL Application에서 지원하는 컴퍼넌트 포함할 계획이고 FMX에서는 굳이 GPU가속은 별도로 신경 안써도 되는 부분이라 생각한다고 하심.

(위의 두 라이브러리는 감히 폄하는거 아닙니다;; 대단하지요.  제가 목표치가 높은 데모를 계획하고 있다보니 그점에 핵심을 맞춘것이라...)

5. 오기가 생겨 TocvFFMpeg소스에서 스레드도 죽여보고 ffMpeg 헤더파일 libavcodec에서 Av_Find_Codec2도 내맘대로 코덱을 지정해서 테스트해봤는데 지식이 짧아 포기.

하나의 시스템에서 rtsp영상 150개를 재생하는데 끊김이 없어야하면서 이 것을 만족하려면 PasLibVlcPlayer가 답인가...

그렇다면 영상 ROI는 어떻게든 VLC 라이브러리에서 한다 치더라도 영상 ROI한 4개의 영상(이미지)을 것을 하나의 영상으로 Merge한다거나 OpenCV에서 할 수 있는 장난질을 전혀 못하게 된다는 뜻인데....

가능성 여부만 타진하기 위해 데모 프로젝트 하나 만드는데 이런 델파이 라이브러리는 정말 대단한 것 같습니다.

지식이 짧아 아직 다른 델파이 FFMpeg 라이브러리로 영상 출력을 VLC 수준의 디코딩도 못해봤고 GPU 디코딩 테스트도 못해봤지만 요즘 영상관련 프로젝트 개발자들도 아주 편하게 안되면 VLC 라이브러리! 라고 조언을 하는지라;;

VLC에서 RTSP 영상을 열었을때 CPU 점유율 0.5%라는 숫자만 쳐다보면서 침만 꿀꺽 삼키고 있습니다;;

그냥 간단히 VLC는 0.5%이고 곰플레이어는 6%이고 델파이에서 FFMpeg 라이브러리를 사용하면 10%가 넘을까요?라고 질문하면 되는데 너무 성의 없을거 같아 경험담을 적다 보니 길어졌네요.

vlc는 사람이 만든거 맞나 하는 재미난 생각도 한번 해봤습니다^^

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 15765
공지 유용한 관련 사이트 관리자2 2014.03.20 54579
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97982
3079 Getit Package Manager에서 Fast Report VCL 설치하려는데 에러납니다 도와주세요 [2] file 왕초보 2020.10.12 214
3078 GetIt Package Manager에 등록된 컴포넌트 설치 [3] sihwan 2020.10.05 227
3077 갑자기 발생한 There is a problem with the site's security certoficate 에러 [4] file 노력하는삶 2020.10.12 286
3076 builder 10.4.1 버젼에서 생성자 함수에 fastcall 에러 sihwan 2020.10.09 259
3075 datasnap 서버프로그램에서 특정클라이언트에게만 내용을 전달할수가 있을까요 [1] 라빌레나 2020.10.02 369
3074 10.4 시드니에서 푸시가 (Android, IOS) 가 되는지요? [1] delphiman 2020.10.05 162
3073 RAD Server 라이센스 문제 [1] 옥돌 2020.10.05 155
3072 [백신관련] XE10.3 리오 백신(알약) 오탐지 관련... 크림슨킹 2020.10.01 165
3071 64bit 서비스 프로그램 개발시 빌드 불가한 현상 file SC 2020.09.29 310
3070 델파이 STMP 개발문의 [1] 동네옹 2020.09.27 229
3069 MDI프로그램에서 마우스 휠 동작시 Stack Overflow 발생 [1] nuribit 2020.09.24 301
3068 Run(F9) 실행시 XE10 툴이 메인모니터 쪽으로 이동하는 현상 [3] 지오 2015.12.24 550
3067 웹브라우저로 네이버 웨일을 사용할 수 있는 방법을 알려주세요. [1] 미스터리 2020.09.21 285
3066 [REST 웨비나] TXMLDocument를 이용해 DataSet에 넣는 작업을 코딩 없이 단순 프로퍼티 수정만으로 될 때가 올까요? 험프리 2020.09.17 207
3065 [REST 웨비나] REST API 동시 처리에 따른 DB Connection 및 트렌젝션 관리? 험프리 2020.09.17 393
3064 [REST 웨비나] REST API와 기존 SOAP와 차이점이 뭔가요? 험프리 2020.09.17 231
3063 [REST 웨비나] JWT(JSON Web Token) 을 통한 인증 방법 험프리 2020.09.17 773
3062 [REST 웨비나] Linux OS에서 RAD Server 구현 험프리 2020.09.17 178
3061 [REST 웨비나] http와 https 호출시 주의 할것은? 험프리 2020.09.17 236
3060 Class TfrxDBCrossView not found [2] 가나다 2020.09.08 157