• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

동영상 저장시 저장시간과 재생시간 상이함

22.04.09 20:15 작성 조회수 1.5k

0

동영상 저장시 재생시간과 동일시 할려면 어떻게 해야하나요 ?
FPS를 맞춘다고 하셨는데..
지금해주신 예제로 다시한번 설명 부탁드립니다.

답변 2

·

답변을 작성해보세요.

0

ukyo1003님의 프로필

ukyo1003

질문자

2022.04.12

답변 감사합니다.

많은걸 배우네요.

0

안녕하세요. ukyo1003님 윤대희입니다.

비디오 저장 클래스는 CvVideoWriter("경로 및 이름", "FourCC", FPS, 영상 크기) 입니다.

CvVideoWriter OpenCV_video = new CvVideoWriter("../../Record.avi", "XVID", 15, Cv.Size(640, 480));

의 형태로 인스턴스를 생성했다면, FPS는 15가 됩니다.

- FPS는 영상이 바뀌는 속도를 의미합니다.

그러므로, 초당 15개의 프레임(이미지)를 저장해야합니다.

초당 15개의 프레임을 저장하기 위해서는 timer2의 Interval 간격이 초당 15개의 프레임을 저장할 수 있으면 됩니다.

Timer에서 Interval = 1000 = 1초 를 의미합니다. 그러므로 15개의 프레임을 1초에 저장하면 되므로, 1000 / 15 = 66.66666666666667입니다. Interval을 66.6666.. 으로 설정한다면 FPS 15의 처리와 동일하게 설정할 수 있습니다.

만약, 비디오 파일과 동일한 속도의 파일로 저장하려면, 불러온 동영상 파일의 프레임 속도를 확인하면 재생시간과 동일한 속도로 저장할 수 있습니다.

 

특정 동영상 파일의 프레임 속도가 29.97 프레임/초라면, 1000ms동안 약 30개를 처리합니다. 

그러므로, Timer의 Interval을  1000/30 = 33.333333으로 설정하면 동일한 시간으로 설정될 수 있습니다.

단, Timer 내부에 이미지 프로세싱 등을 처리하는 코드가 존재한다면, Interval 동안 연산시간이 포함되므로, 연산을 모두 완료한 후에 프레임을 저장하는 코드를 구현하거나 연산 시간을 고려해서 Interval을 조정합니다.

감사합니다.

- 윤대희 드림