Talk2Camera
메뉴
ko-KR
video editing

영상 내보내기는 왜 이렇게 오래 걸리는가

문서 저장은 즉시 끝납니다. 영상 저장은 많은 경우 전화기 안에서 프레임 하나하나를 다시 찍는 일입니다 — 정말로 그럴 필요가 없을 때만 빼고.

텍스트 문서를 저장하는 데는 잴 수 있는 시간이 걸리지 않습니다. 스프레드시트도, 사진 보정도, 발표 자료도 — 모두 즉시, 혹은 거의 즉시 끝납니다. 그런데 10분짜리 영상을 마치고 내보내기를 누르면, 진행 바가 자리를 잡고 커피가 식는 것보다 오래 머물기도 합니다. 자연스러운 결론은 이렇습니다. 뭔가 잘못됐다. 앱이 느리거나, 전화기가 낡았거나, 어딘가의 누군가가 최적화를 안 했다. 대개는 어느 것도 사실이 아닙니다. 그 기다림은 진짜 일이고, 그 일이 실제로 무엇인지 이해하고 나면 진행 바는 짜증의 대상에서 영수증에 가까운 것으로 바뀝니다. 출발점은 대부분의 사람이 배울 이유가 없었던 사실입니다. 영상 파일은 그림 뭉치가 아닙니다. 초당 30프레임으로 10분이면 1만 8천 장의 이미지이고, 순진하게 저장하면 그 이미지들만으로 전화기를 통째로 삼킵니다. 기기에 실제로 놓여 있는 것은 압축된 스트림 — 거의 아무것도 곧이곧대로 기록되어 있지 않은, 촘촘히 맞물린 기술입니다.

압축의 요령은 반복을 거부하는 데 있습니다. 완전한 그림으로 저장되는 것은 이따금 나오는 프레임뿐입니다. 나머지 거의 모든 프레임은 차이의 묶음으로 저장됩니다. 이 픽셀 블록은 왼쪽으로 조금 움직였고, 저 영역은 전혀 변하지 않았고, 이 모서리는 색이 이만큼 바뀌었다. 각 프레임은 이웃에 기대고, 그 이웃은 또 자기 이웃에 기대며, 긴 사슬을 이룹니다. 플립북이라기보다는 “앞 단계를 한 번 더, 다만 조금 따뜻하게”라고 계속 말하는 요리법에 가깝습니다. 그래서 영상 파일은 존재할 수 있을 만큼 작고, 그래서 편집이 비쌉니다. 어느 프레임이든 모습을 바꾸는 순간, 그 프레임이 속한 차이의 사슬은 더 이상 현실을 설명하지 못합니다. 편집을 저장하려면 기기는 사슬을 실제 이미지로 풀어내고, 한 장 한 장에 변경을 적용한 뒤, 맞물린 구조 전체를 처음부터 다시 지어야 합니다. 이 재건축이 인코딩이고, 정말로 무거운 일입니다. 인코더는 프레임 사이의 움직임을 추적하고, 싸게 기술할 수 있는 것과 낱낱이 적어야 하는 것을 가려내며, 영상 1초마다 수백만 개의 작은 판정을 내립니다.

그러니 내보내기가 몇 분씩 걸릴 때, 전화기는 아주 실제적인 의미에서 영상을 안쪽에서 다시 찍고 있는 것입니다. 1만 8천 프레임을 해독하고, 다시 그리고, 또 1만 8천 프레임을 압축합니다. 시간이 길이와 해상도에 비례해 늘어나는 것은 더 큰 벽을 칠할수록 오래 걸리는 것과 같은 이치입니다. 게다가 대가는 시간만이 아닙니다. 압축은 손실 압축입니다. 인코딩할 때마다 당신이 눈치채지 못하도록 신중히 고른 정보가 조금씩 버려집니다. 한 번이면 손실은 보이지 않습니다. 그러나 이미 인코딩된 파일을 다시 인코딩하면 손실이 쌓입니다. 복사본을 다시 복사하는 것과 같습니다. 한 세대는 괜찮습니다. 여러 세대 — 여기를 자르고 저장하고, 저기를 고치고 또 저장하고 — 를 거치면, 뭉개짐은 시청자가 가장 많이 보는 곳부터 드러나기 시작합니다. 얼굴, 글자, 하늘의 느린 그러데이션. 당신이 보지 않는 동안 내보내기 파이프라인이 무엇을 하는지에 마음을 써야 할 조용한 이유가 이것입니다.

바로 이것이 Talk2Camera에 특정한 동작이 존재하는 이유이기도 합니다. 모든 편집이 프레임의 모습을 바꾸는 것은 아닙니다. 단순한 트림 — 버벅댄 도입부를 자르고 끝의 죽은 공기를 덜어 내는 일 — 은 남는 프레임을 정확히 원래 그대로 둡니다. 클립이 이미 내보내기 프리셋과 일치한다면, 다시 그릴 것이 없고 따라서 다시 인코딩할 것도 없습니다. 그래서 Talk2Camera는 정직한 선택을 합니다. 다시 압축하는 대신 프레임을 그대로 복사하는 것입니다. 복사는 싸고 인코딩은 비싸므로 내보내기는 극적으로 빨리 끝납니다. 더 좋은 점은, 복사본이 비트 단위로 동일하다는 것입니다. 픽셀 하나 건드리지 않은 편집을 위해 품질의 세대가 하나도 소모되지 않습니다. 이런 식으로 기다림을 건너뛸 수 있을 때, 그 기다림은 애초에 내보내기의 값이 아니었습니다. 픽셀을 바꾸는 값이었고, 당신은 아무것도 바꾸지 않았던 것입니다.

정직한 단서는 반대 방향으로 달립니다. 편집이 정말로 렌더링을 요구하는 순간 — 프레임이 실제로 보여 주는 것을 바꾸는 작업이라면 무엇이든 — 내보내기는 다시 인코딩하고, 기다림은 돌아옵니다. 이제는 진짜 할 일이 있기 때문입니다. 다시 그릴 프레임, 다시 지을 사슬, 내려야 할 판정. 어떤 파이프라인도 복사로 그 일을 비켜 갈 수 없고, 그럴 수 있다고 주장하는 도구는 거짓말을 하는 것입니다. 좋은 소프트웨어에 합리적으로 기대할 수 있는 것은 더 좁고 더 값진 일입니다. 다시 인코딩해야 할 때 다시 인코딩하고, 복사할 수 있을 때 복사하고, 그 차이를 아는 것. 그러니 다음에 진행 바가 자리를 잡거든, 지금 두 가지 기다림 중 어느 쪽에 있는지 물어볼 가치가 있습니다. 영상의 모습을 바꿨다면, 그 바는 당신을 위해 1만 8천 프레임의 정직한 노동을 해내는 기계입니다. 그저 양 끝만 잘라 냈다면, 바는 나타날 틈도 거의 없어야 합니다 — 그리고 Talk2Camera에서는 대개 나타나지 않습니다. 시간이 걸리지 않는 내보내기는 속임수가 아닙니다. 할 일이 없던 내보내기가 마침내 그렇게 대접받는 것뿐입니다.

이 글에서 언급된 기능

필요 없을 때는 재인코딩하지 않습니다

프리셋에 이미 맞는 단순 트림이라면 프레임을 다시 압축하지 않고 그대로 복사합니다. 더 빠르고, 화질을 한 세대도 헛되이 잃지 않습니다.

내보내기 취소

오래 걸리는 내보내기를 도중에 멈출 수 있습니다. 끝나면 실제로 무슨 일이 있었는지 알려줍니다. 재인코딩인지 복사인지, 어떤 크기인지, 프레임이 잘렸는지까지요.