FFMPEG h264 hevc 테스트

스마트폰으로 경기를 촬영한 결과,

스마트폰 별로 설정이 달라서

Left(Galaxy S21)는 hevc, Right(Galaxy Note 10)는 h264 codec으로 촬영 되었다.

이 동영상을 ffmpeg를 이용해 변환하고 그 결과를 hstack을 이용해 옆으로 붙였을 시,

아래와 같은 결과물을 얻었다.



좌우 색이 다르다.


그리고 플레이어가 동작되기 전, 아래와 같은 팝업이 뜬다.


https://support.apple.com/ko-kr/HT209029

위 링크에 따르면 H.264와 HEVC(==H265) 둘 다 지원한다.


위 팝업의 범인을 찾아보자.

right(h264) 를 hevc로 encoding 

일단, 테스트를 위해 동영상을 trim.

ffmpeg -i 6q_left.mp4 -ss 00:02:32 -to 00:03:02 -c copy 6q_left_trim_30sec.mp4
ffmpeg -i 6q_right.mp4 -ss 00:02:29 -to 00:02:59 -c copy 6q_right_trim_30sec.mp4


libx265를 이용한 encoding
ffmpeg -i 6q_right_trim_30sec.mp4 -c:v libx265 -vtag hvc1 -c:a copy 6q_right_trim_30sec_h265.mp4

73.5M 크기의 6q_right_trim_30sec.mp4  파일이 8.7M의  6q_right_trim_30sec_h265.mp4가 되었다. 
encoding 후 화질은 그대로였지만,  encoding speed는 0.49로 매우 느렸다.


videotoolbox를 이용한 encoding
ffmpeg -i 6q_right_trim_30sec.mp4 -c:v hevc_videotoolbox -vtag hvc1 -c:a copy 6q_right_trim_30sec_h265_videotoolbox.mp4
6.2M의 6q_right_trim_30sec_h265_videotoolbox.mp4이 생겼지만, 화질은 떨어졌다.

구글링 결과, -b:v 옵션으로 용량은 두배(16.2M)지만 화질은 유지할 수 있었다.
ffmpeg -i 6q_right_trim_30sec.mp4 -c:v hevc_videotoolbox -b:v 4000k -vtag hvc1 -c:a copy 6q_right_trim_30sec_h265_videotoolbox.mp4


이제 6q_left.mp4 와 6q_right_trim_30sec_h265.mp4를 hstack으로 쌓아보자.

음...
왼쪽이 문제인 듯하다.

왼쪽을 encoding 해보자.
ffmpeg -i 6q_left_trim_30sec.mp4 -c:v libx265 -vtag hvc1 -c:a copy 6q_left_trim_30sec_libx265.mp4

libx265 사용 시, 위와 같이 회색 빛이 도는 문제는 보이지 않는다. 스피드는 0.447

videotoolbox로 변환해보자.
ffmpeg -i 6q_left_trim_30sec.mp4 -c:v hevc_videotoolbox -b:v 4000k -vtag hvc1 -c:a copy 6q_left_trim_30sec_hevc_videotoolbox.mp4

성공!



이제 다시 merge 시도.


음...
왼쪽을 h264로 해도 마찬가지...

댓글