HDMI-ro-USB Capture card (frame grabber)

재미삼아 OBS라는 프로그램을 써봤는데 아주 요긴해서 디지털 카메라에서 받은 신호를 인코딩해보려고 하나 구입했다.

그런데 내 기대가 너무 과했다 싶다. 이 물건에 대해서 쉽게 간과하는 것이 이것이 단순한 frame grabber라 HDMI에서 받은 신호를 메모리에 받아두고 그것을 USB를 통해 넘겨주는 것이겠거니 할 수 있는데, 엄밀히 말하면 HDMI를 통해 받은 영상신호를 내부 메모리에 쓰고 일정한 압축과정을 거친 후에 그것을 USB를 통해 넘기는 것이다.

더 쉽게 말하면 일반적인 webcam의 프로토콜 규약에 따라서 영상신호를 압축해서 내보내게 된다. 상식적으로 HDMI 신호를 USB 3.0을 통해서 그대로 내보낸다는 것은 말이 안된다. 분명히 lossy compression을 거쳐서 data rate를 떨궈야 가능한 것이니까.

문제는 이 과정에서 화질의 열화가 생긴다는 것이다. 이게 생각보다 크다고 보는 것이 좋을 듯 하다. 외부에서 이 압축률을 조정할 방법은 없다.

내가 경험한 것을 예로 들자면, 내 디지털 카메라에서 1080p 60Hz로 레코딩을 하면서 이 화면을 HDMI를 통해서 내보낸다고 할 때 카메라 내부에 저장되는 동영상 화질에 비해서 HDMI-to-USB를 통해서 받은 비디오의 화질이 떨어짐을 느낄 수 있었다. 이 frame grabber는 H.264로 HDMI로 받은 영상을 압축하고 있는 것으로 알 수 있는 것이 이 장치를 연결해서 OBS에서 모니터링하면 H.264 디코더 프로세스가 떠서 CPU 자원을 잡아먹게 된다.

인텔 CPU의 경우에는 H.264 표준의 영상을 CPU 처리에 덜 영향받게 하기 위해서 Quick Sync라는 내부 모듈을 가지고 있다. H.264 인코딩과 디코딩을 하드웨어로 하게 해주는 가속기라고 볼 수 있다. 요새 AMD나 NVidia의 GPU를 쓰는 경우엔 성능도 좋을 뿐더러 이 안에 있는 가속기를 이용하게 되니까 CPU의 부담은 크게 줄어든다. 그러나 화질 열화는 capture card에서 생기는 것이므로 그리팩 카드를 뭘로 쓰느냐와는 무관하다.

중요한 것은 캡쳐 카드를 쓰는 경우에 카메라에서 보내주는 화상을 최적으로 이용할 수 없다는 것이다.

화질 열화가 있어도 녹화하고 SD card에서 동영상 클립 끄집어내서 편집하고 해야하는 일이 번거롭다면 켑쳐 카드에서 받은 것을 그대로 쓰는 것이 편한 방법이다. 그런게 아니라면 클립을 동기화할 수 있게만 하면 사실 캡쳐하는 것이 더 번거로울 수 있다. OBS도 내내 돌려야 되고 말이다.

그래서 내가 생각하는 방법은 외장 오디오 단자라든가 마이크로 동기할만한 신호를 잡을 수 있는 환경이라면 그냥 동영상을 SD 카드에 녹화시키는 것이 캡쳐하는 것 보다 낫다고 본다. 모니터링 하는 게 문제라면 HDMI 출력으로 별도의 모니터를 통해서 보면 되고. 사실 카메라에 달라있는 디스플레이를 뒤로 해서 모니터링 하는 것보단 이 방법이 더 좋은 방법이다.