TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 27 READS

발로그: Vorbis·Opus 파일을 무손실로 다시 압축하는 실험적 도구

발로그: Vorbis·Opus 파일을 무손실로 다시 압축하는 실험적 도구
SOURCE IMAGE · HACKER NEWS

오디오 아카이브를 다루다 보면 이미 압축된 손실 포맷을 더 줄일 수 있는지 고민하게 된다. MP3, Ogg Vorbis, Opus 같은 포맷은 이미 심리음향 모델로 데이터를 덜어낸 상태라 일반적인 압축기로는 거의 줄어들지 않는다. 카밀라 셰비치크(Kamila Szewczyk)가 공개한 발로그(Balrogg)는 바로 이 지점을 파고든다. 오디오를 다시 인코딩해 음질을 손상시키는 방식이 아니라, Ogg Vorbis와 Opus 컨테이너 안의 비트스트림을 무손실로 재압축해 원본을 정확히 복원할 수 있는 더 작은 아카이브를 만든다.

제작자가 밝힌 압축률은 Vorbis 기준 .ogg 파일보다 8~12%, Opus 기준 .opus 파일보다 3~8% 작아지는 수준이다. 프로젝트 이름에 붙은 '최대 15%'라는 표현은 이상적인 경우의 상한으로 이해하는 편이 안전하다. 손실 코덱을 다시 손실 인코딩하지 않고도 이 정도를 줄인다는 것은, 기존 포맷의 엔트로피 코딩과 구조 안에 아직 짜낼 여지가 남아 있다는 뜻이다. 발로그는 GNU GPL v3로 배포되며 C99와 표준 C·수학 라이브러리만으로 작성됐고, Opus 파서는 libopus에서 파생됐다.

어떻게 동작하는가

사용법은 단순하다. e 명령으로 압축하고 d 명령으로 복원하며, 코덱은 도구가 알아서 감지한다. 인코딩하면 파일명에 .blr 확장자가 붙고 복원하면 그 확장자가 제거된다. -b 옵션을 주면 나머지 경로들을 사용 가능한 코어와 메모리를 활용해 일괄 처리하되, 큰 입력부터 먼저 돌린다. -p 또는 --progress로 stderr에 진행 막대를 띄울 수 있고, 로그 환경에서는 --progress-lines를 쓴다.

압축 강도는 -1부터 -9까지 있고 기본값은 -9다. 여기서 중요한 구분이 있다. -4까지의 각 레벨은 잔차 모델링 단계를 하나씩 추가해 복원 과정에도 영향을 준다. 반면 -4에서 -9까지는 파라미터 탐색 범위만 넓히기 때문에 복원 속도는 동일하다. 즉 높은 레벨은 인코딩 시간을 더 쓰더라도 디코딩 부담은 늘리지 않는다. Vorbis 튜닝은 선택한 각 설정에서 파일 전체를 평가하며, 시도 중에는 최적 후보와 현재 후보만 유지해 메모리를 아낀다.

무엇을 거부하는가

무손실을 표방하는 도구답게 발로그는 정확히 복원할 수 없는 파일을 아예 거부한다. 체크섬이 잘못됐거나 페이지 순서가 유효하지 않거나 지원되지 않는 Vorbis 기능을 쓰거나 마지막 end-of-stream 페이지가 없는 파일은 처리하지 않는다. 이는 조용히 손상시키느니 실패를 명확히 알리는 보수적 설계다. Vorbis 쪽에서는 여분 패딩이나 대체 floor 서브클래스 선택, 클래스워드 보정, 잘려나간 패킷(packet peeling) 같은 예외적 상황도 별도 모델로 다뤄 정상적인 압축을 유지한다.

Opus 지원 범위는 더 좁다. 채널 매핑 패밀리 0의 모노 또는 스테레오 단일 논리 스트림만 받으며, OpusHead와 OpusTags를 포함한 패킷은 61,440바이트로 제한된다. 체인으로 연결된 파일이나 멀티채널 Opus는 거부되고, 이때는 진단 메시지와 함께 종료 코드 1을 반환한다. 일괄 모드에서는 개별 파일이 보고한 가장 높은 비정상 종료 코드가 최종 상태로 나온다.

이식성과 실무적 한계

눈에 띄는 대목은 이식성에 대한 집착이다. 각 파일은 스레드 하나로 처리되며 탐색 가능한 입출력 파일을 요구한다. 지원 호스트에는 비상식적인 할당을 막는 2GiB 프로세스 메모리 상한이 걸려 있고, BLR_MEMCAP 환경 변수로 크기를 바꾸거나 0으로 해제할 수 있다. 아카이브 자체는 호스트 간 이식이 보장된다. 윈도우 빌드는 MinGW를 쓰고, 심지어 i486을 겨냥한 윈도우 95 빌드와 DPMI 호스트가 필요한 DJGPP 기반 MS-DOS 빌드까지 존재한다. DOS 일괄 모드는 확장자를 바꿔가며 직렬로 처리한다.

실무자 입장에서 냉정하게 보면 적용 범위는 제한적이다. 우선 릴리스가 v2.0에 이르기 전까지는 상위·하위 호환을 보장하지 않는다고 명시돼 있어, 장기 보관 아카이브의 표준 포맷으로 삼기에는 이르다. 재생하려면 매번 원래 포맷으로 되돌려야 하므로 스트리밍이나 즉시 재생용이 아니라 순수 저장 최적화 도구에 가깝다. 그럼에도 대용량 Vorbis·Opus 라이브러리를 백업하거나 대역폭이 아쉬운 배포 상황에서, 음질을 전혀 건드리지 않고 한 자릿수 후반대의 공간을 확보할 수 있다는 점은 분명한 매력이다. 이런 특수 압축이 필요한 조직이라면 소수 코덱만 지원하는 제약과 거부 규칙을 미리 검증한 뒤 파이프라인에 넣는 것이 현실적인 접근이다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/iczelia/balrogg
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...