작년 말, yaPlayer는 돌비 코덱을 제외했다. 트위터와 일부 커뮤니티에는 그 이유를 설명했지만 정작 내 블로그에는 제대로 된 설명을 하지 않아 늘 마음에 걸렸었는데 하루 이틀 지나니 그냥 까맣게 잊어버리게 되더라; 최근 돌비에 이어 DTS가 라이센스 문제를 제기하기 시작했다는 소식을 접하고는 까맣게 잊고 있던 책임감이 다시 생겨 이 글을 시작한다.








동영상이란?


돌비 코덱과 관련된 이야기를 시작하기에 앞서 우선 코덱(codec)이 무엇인지, 아니, 그보다 먼저 동영상이라는 매체를 설명할 필요가 있다.


동영상은 음성과 영상, 그리고 그것의 설명 및 자막 등과 같은 메타 정보가 한 데 섞인 디지털 정보다. 음성의 경우 연속된 물리적 진동을 잘게 쪼게서 숫자로 기록하고, 영상의 경우 매 순간의 장면을 이미지로 기록한다. 1시간 분량의 영화를 예로 들어보자. 음성을 기록하기 위해 1초를 44100 번 쪼게서 각 순간 진동의 크기를 16비트 내 범위의 숫자로 표현하면 1시간 x 60분 x 60초 x 44100 x 2바이트(1바이트는 16비트다) 만큼의 저장 공간이 필요하다. 그리고 영상을 1초당 30장, 1280x720 크기의 이미지로 그리면 1시간 x 60분 x 60초 x 30 x 1280 x 720 x 3(RGB 각각을 1바이트로 표현) 만큼의 저장 공간이 필요하다. 합하면  298915920000 바이트, 대략 278 기가바이트 만큼의 저장 공간이 필요하다.


크기는 곧 비용이다. 그 만큼의 데이터를 저장하기 위한 디스크가, IPTV처럼 네트워크로 전송하기 위해서는 그 만큼의 인터넷 트래픽이 요구된다.


하지만 거의 움직임이 없는 순간에는 굳이 초당 30 프레임을 고집하지 않아도 되고, 고요한 장면에서는 소리를 초당 44100번 기록하지 않아도 된다. 인간은 인식한 정보에 다소 손실이 있더라고 축적된 경험과 기억을 바탕으로 부족한 부분을 매꾸는 매우 특별한 능력을 갖고 있기 때문이다.


이러한 인식 특성을 고려해서 동영상 데이터를 압축한다. 일반적인 파일 압축과 달리 동영상 압축은 대체적으로 (아니 거의 100%) 정보 손실을 유발하지만 우리는 그 손실을 크게 느끼지 못한다. 최신의 압축 기술은 손실을 전혀 느끼지 못할 정도로 원본의 특성을 유지하는데도 크기를 200분의 1 이상 줄여준다. 이렇게 줄어든 만큼 비용 절감의 효과를 누릴 수 있다.


이 때 사용된 압축 방법이 바로 코덱이다. 그리고 압축하는 과정을 인코딩, 압축을 해제하는 과정을 디코딩이라고 한다. 정보 손실의 정도, 최종 데이터의 크기, 그리고 그것을 처리하는 프로세서의 능력 사이를 어떻게 조율하느냐에 따라 매우 다양한 코덱이 존재한다.




코덱 종합 선물 세트 - FFmpeg 라이브러리


코덱의 종류가 워낙 많은데다가 각각의 코덱은 매우 복잡하고 어려운 수학을 요구하기 때문에 모든 코덱을 직접 구현하는 것은 불가능하다. 이러한 상황에서 선택할 수 있는 최선의 방법이 바로 집단의 힘 - 오픈소스다.


FFmpeg은 거의 유일한 오픈소스 코덱 종합 선물 세트다. 대부분의 동영상 플레이어가 FFmpeg을 이용하고 있으며, 나 역시 yaPlayer에 무인코딩 재생 기능을 추가하기 위해 FFmpeg을 가져다 썼다. FFmpeg을 사용하려면 그것의 라이센스 - LGPL을 따라야 한다. 그래서 나는 FFmpeg을 직접 호출하는 모든 코드를 공개하고, 나머지 코드는 라이브러리로 따로 묶어서 전체 빌드가 가능한 상태로 배포하고 있다. 


사실 iOS의 특수한 상황으로 인해 어느 부분까지 코드를 공개해야 하는가는 여전히 의견이 분분하다. 가장 대중적인 무인코딩 동영상 재생 앱인 AVPlayer의 경우 오래 전 LGPL 라이센스 논란이 불거졌는데 FFmpeg과 관련된 소스 코드를 별도로 공개하지 않고 오직 라이브러리 형태로만 공개하는 선에서 그 문제가 일단락되었다. FFmpeg 진영에서 문제를 삼지 않는 것을 보면 이 정도 선까지는 허용되는 듯 하다.


TTPlayer의 경우 FFmpeg을 이용하는 별도의 프로젝트를 만들어 BSD 라이센스로 공개하고, TTPlayer가 이 프로젝트를 사용하기 때문에 LGPL을 따를 필요가 없다고 말한다. 하지만 오픈소스 라이센스의 먹이사슬 관계로 인해 (LGPL은 다른 라이센스를 누른다) 이는 언젠가 문제가 되지 않을까 생각한다.


물론 아예 FFmpeg의 라이센스를 무시하는 앱도 꽤 있다. 하지만 오픈 소스라는 것이 '무료이며, 마음대로 써도 좋다' 를 의미하는 것이 아니기 때문에 나중에 큰 화를 겪을 수 있다.




진짜 문제는 따로 있다


iOS / Android 등의 모바일 환경을 고려한 라이센스 가이드라인의 부재로 인해 그것을 지키는 방법에 다소 차이가 발생하고 있지만, 어쨌든 개발자 자신의 자산을 보호하면서 오픈소스 라이센스를 지키려는 노력은 계속되고 있다.


하지만 FFmpeg의 LGPL 라이센스를 따른다고 해서 모든 문제가 해결되는 것은 아니다. yaPlayer에 무인코딩 재생 기능을 추가할 때만 하더라도 LGPL 라이센스만 잘 지키면 문제가 없겠다 싶었지만 실제 문제는 따로 있었다.



코덱 별로 라이센스가 따로 존재한다!



작년 말 나는 돌비(Dolby) 사로부터 메일을 한 통 받았다. yaPlayer가 돌비 코덱을 사용하고 있으니 라이센스를 취득하던가 해당 기능을 빼던가 앱스토어에서 앱을 내리라는 내용이었다. 이전까지 몰랐는데, 이제와서 생각해보니 몰랐다는게 더 신기하다. 각각의 코덱은 그 자체로 별도의 라이센스를 갖고 있다.


DVD나 블루레이 매체로 배포되는 대부분의 영상물은 음성을 압축하기 위해 주로 돌비 디지털(AC3) 코덱을 이용한다. 돌비는 AC3 코덱 외에도 돌비 디지털 플러스(E-AC3), 트루HD(MLP) 코덱에 대한 재산권을 행사하고 있다. 


코덱은 어떤 방법으로 구현하더라도 라이센스를 우회할 수 없다. 따라서 FFmpeg을 이용하는 응용 프로그램이 LGPL을 제대로 지키는가에 관계없이 AC3, E-AC3, MLP 코덱을 이용하는 순간부터 돌비의 재산권을 침해하게 된다.




라이센스 비용은 얼마나?


돌비 라이센스를 취득하기 위해서는 선금 2만 5천 달러와 함께 유/무료에 관계 없이 한 카피당 약 1달러 정도의 추가 비용을 요구한다. 그리고 라이센스를 취득하는 시점부터 과금하는 것이 아니라 이전 판매분에 대해서도 과금한다.


지난 선거 시즌에 이틀간 yaPlayer를 무료로 풀었던 것이 화근이었다. 그 때 약 7만 카피가 다운로드 되었는데 이로 인해 7만 달러라는 크디 큰 라이센스 비용이 발생한 것이다. 즉 yaPlayer가 돌비 라이센스를 취득하기 위해서는 선금 2만 5천 + 7만 달러, 한화로 약 1억원 정도가 필요한 상황이다. 


물론 협의의 여지가 아예 없지는 않을 것이다. 돌비 입장에서는 향후 수익성을 고려해 어떻게든 라이센스를 체결하는 쪽이 더 이득이 된다. 그런 이유로 분명 네고가 가능할 것이다. 하지만 그 정도가 '좋아요- 그럼 이전까지 판매분은 그냥 퉁 칩시다' 는 분명 아닐 것이다. 그리고 선금 2만 5천 달러도 큰 골칫거리다. 한 카피 팔릴 때마다 500원 안팍의 수익을 내는 내게 2만 5천 달러는 +7만 달러를 제하더라도 매우 큰 비용이며, 그걸 선불로 지불할 능력이 없다.




돌비는 시작일 뿐이다


최근 AVPlayer 개발자님이 클리앙 커뮤니티에 적은 글에 따르면 이번엔 DTS 측에서 라이센스 문제를 제기했다고 한다. DTS는 돌비와 함께 극장용 동영상에 가장 많이 사용되고 있는 코덱이다. 아직 DTS는 모바일 환경을 고려한 라이센스 정첵이 수립되지 않은 상황이라 일단 앱을 내리던가 앱에서 해당 기능을 제외시키고, 추후 라이센스 정책이 수립되면 그 때 따르라는 것 같다.


글 서두에 설명했듯이 영상과 음성을 압축하는 수 많은 방법이 존재한다. 그리고 이러한 방법들은 저마다의 특허권으로 보호되고 있고, 이를 이용하기 위해서는 라이센스를 체결해야 한다. 그리고 거의 모든 경우, 비용을 지불해야 한다.


앞으로의 판매 분에 대해서만 비용을 지불하는 방법으로 라이센스를 체결할 수 있다면 라이센스 비용을 고려해 앱 가격을 인상하는 것만으로 비교적 간단하게 문제를 해결할 수 있다. 하지만 유/무료에 관계 없이 지난 판매분에 대한 비용 청구와 선납금으로 인해 장벽은 한 없이 높아진다.


DTS는 아직 모바일 환경에 특화한 라이센스 정책을 수립하지 않은 상태이지만, 돌비와 비슷하게 수립하지 않을까 싶다. 선례가 있으니 그것을 크게 벗어나지 않을 것이다. 돌비에 이어 DTS, 이제 겨우 두 개의 회사일 뿐이다. 아직 수 많은 코덱이 남아있다. 비록 돌비와 DTS를 제외한 나머지는 특허권 행사에 비교적 소극적이지만 그렇다고 가능성이 아예 없는 것은 아니다. 갈수록 높아질 선납금으로 인해 '나중에라도 돈 많이 생기면 라이센스를 취득할까?' 싶은 희망은 줄어들고 있고, 설사 취득한다 하더라도 라이센스 비용만큼 앱 가격을 인상해야 하기 때문에 추후 앱 판매량에 문제가 될 것이 뻔하다.




yaPlayer의 미래


다음 업데이트부터는 '무인코딩 비디오 재생 앱' 이라는 문구를 제외할 생각이다. 얼마 전까지만 해도 '그래도 언젠가는 돌비 코덱을 살 수 있을거야' 라는 희망이 있었는데 지금은 절망적이다. 묻지마 투자자가 나타나 '선납금 정도는 내가 지원해주지' 라고 멋지게 말해주거나, 애플이 직접 돌비와 DTS 등의 회사와 코덱 라이센스를 체결하지 않는 한 무인코딩 재생을 고집하는건 앞으로 더 어려워질 것 같다. 


앞으로는 코덱 지원에 중점을 두기보다 동영상의 시청 및 활용 측면에 중점을 둘 생각이다. (물론 라이센스 문제를 제기하지 않는 코덱에 대해서는 꾸준히 더 나은 성능을 낼 수 있도록 노력할 것이다) 이 목적은 TEDiSUB과 동일하지만, TEDiSUB의 경우 시청하는 동영상 카테고리가 TED로 정해져 있고 yaPlayer는 정해져 있지 않기 때문에 그 차이를 이해하고 구현하는 방법에서 많은 차이가 있을 것 같다. 이 쪽을 심도있게 연구할 계획이다.




신고

CATEGORIES