개발일지

ffmpeg video resizing and screenshot err

jjikky 2021. 6. 15. 13:38
반응형

                                                         증상

 

비디오의 업로드가 이루어지면 비디오를 일정비율에 맞춰서 resizing하는 작업을 거치고 있으며 업로드한 파일 중 첫번째가 이미지가 아닌 비디오인경우 썸네일을 따로 만들어주고 있다.

 

 

업로드 영상

위 영상의 경우 프레임 width: 852 , height: 480의 영상이고 너비는 아래 사진의 일부 검은 여백 공간까지 포함된 값이다.

업로드 영상

 

이 영상은 비디오처리 프로세스를 따라 600*388의 크기로 resizing되고 screenshot 또한 같은 크기로 생성된다.

하지만 확인 결과, 비디오는 의도한바와 같이 비율에 맞춰 resizing 되었지만 스크린샷은 아니었다.

아래와 같이 검은 여백을 제외한 컨텐츠 공간만을 600*388의 사이즈로 resizing 하여서 비율이 바뀐 것을 확인할 수 있다.

 

비디오 스크린샷 (썸네일) , 가공 전, 여백 까지 계산되었던 width값이 가공 하는과정에서는 여백을 제외하고 가공을 하여, 위와같이 비율이 변경 되었음을 알 수있다.

 

 

또한, 비디오의 경우는 정상적으로 resizing 되었음에도 불구하고 앱을 통해 볼 시  비율이 바뀐다.

s3에 저장된 가공된 영상. 정상적으로 가공되어있음을 확인

 

 

앱에서 보이는 영상, 비율이 이상함

 

 

 


 

 

                                                   해결

 

1. Thumbnail error

스크린샷을 할 때 일정비율로 줄인 사이즈를 할당해줬었다.

에러를 해결하기 위해 size를 파일의 metadata를 이용해서 원래의 너비와 높이 값만을 할당한 뒤에 넣어주었는데, 결과는 똑같이 의도한 비율이 나오지 않았다.  

.screenshots() 메서드는 size를 지정할시 우선 여백을 제외한 컨텐츠만을 스크린샷하는 것으로 판단을 했고, size를 지정하지 않을시(이것 또한 원본 사이즈) 의도한 대로 여백을 포함해 프레임 자체 크기의 스크린샷을 찍을 것이라 판단. 

그래서 size를 지정하지 않고 풀었더니(원본 사이즈) 바로 해결이 되었다.

 

원본사이즈로 screenshots, 여백을 미포함
원본사이즈로 screenshots, 여백을 포함

 

 

 

 

2. 비디오 비율 err

프론트에서 문제 원인을 탐색 하던 중 프론트 개발자 님이 파일 uri를 보내주는 api에 해당 파일의 width값과 height값을  같이 넘겨주면 해결 가능할 것 같다고 요청하셨다. 

 

 

 

게시물을 업로드 하는 부분에서 Image DB에 파일 정보(S3 uri, 위치 정보 값)를 저장하는 api에 해당 파일의 width, height 값을 추가하여 저장켰다.

추가로 게시물의 정보를 보내주는 api에서 기존 uri만 보내주던 것을 width와 height와 함께 위의 요청과 같이 응답하도록 하였다.

반응형