처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.03.22 33

2014년부터 방치됐던 FFmpeg 자막 변환 버그, 드디어 고쳤습니다

Hacker News 원문 보기

12년 묵은 버그를 잡다

FFmpeg을 써본 개발자라면 한 번쯤 자막 관련 작업에서 좌절한 경험이 있을 겁니다. 블루레이 디스크에서 흔히 사용되는 PGS(Presentation Graphic Stream) 자막을 SRT 같은 텍스트 자막으로 변환하려 할 때, FFmpeg이 제대로 처리하지 못하는 문제가 있었습니다. 이 버그가 처음 보고된 게 2014년이니, 무려 12년간 방치되어 있었던 셈입니다.

한 개발자가 이 오래된 문제를 직접 파고들어 해결책을 만들어 공개했습니다. 단순히 패치 하나를 올린 것이 아니라, 문제의 원인을 분석하고 해결 과정을 상세히 문서화한 프로젝트입니다.

PGS 자막이란 무엇이고, 왜 변환이 어려운가

여기서 잠깐 배경을 설명할 필요가 있습니다. 자막에는 크게 두 종류가 있습니다. SRT, ASS 같은 텍스트 기반 자막은 실제 글자 데이터를 포함합니다. 반면 PGS, VobSub 같은 비트맵 기반 자막은 자막이 이미지로 저장됩니다. 블루레이 디스크가 PGS를 채택한 이유는 어떤 폰트든, 어떤 스타일이든 정확하게 렌더링할 수 있기 때문입니다. 하지만 이미지이기 때문에 텍스트 검색이 안 되고, 파일 크기가 크고, 편집이 어렵습니다.

PGS를 SRT로 변환하려면 결국 OCR(광학 문자 인식)이 필요합니다. 하지만 문제는 FFmpeg 내부에서 PGS 자막 스트림을 디코딩하고 다른 형식으로 넘겨주는 과정 자체에 버그가 있었다는 것입니다. 자막의 타이밍 정보가 손실되거나, 특정 자막 이벤트가 아예 누락되는 현상이 발생했습니다. OCR 이전 단계에서 이미 데이터가 깨지고 있었으니, 아무리 좋은 OCR 엔진을 붙여도 올바른 결과를 얻을 수 없었던 것입니다.

구체적으로 무엇이 문제였나

PGS 자막은 여러 개의 세그먼트로 구성됩니다. 화면 구성(composition), 윈도우 정의, 팔레트, 그리고 실제 이미지 데이터(ODS: Object Definition Segment) 등이 순서대로 나옵니다. FFmpeg의 PGS 디코더는 이 세그먼트들을 읽어 하나의 자막 프레임으로 조합해야 하는데, 특정 시퀀스에서 타이밍 정보를 잘못 처리하거나 "디스플레이 셋"의 경계를 잘못 판단하는 문제가 있었습니다.

이런 종류의 버그가 12년간 방치된 데에는 이유가 있습니다. PGS 자막 변환은 FFmpeg의 핵심 기능이 아니고, 이 특정 경로를 사용하는 사용자 풀이 상대적으로 작습니다. 또한 PGS 포맷 자체가 블루레이 표준에 묶여 있어 공개 문서가 제한적이고, 디버깅을 위해서는 실제 블루레이 콘텐츠가 필요합니다. 오픈소스 프로젝트에서 이렇게 니치한 영역의 버그가 오래 살아남는 건 흔한 일입니다.

오픈소스 생태계에서의 의미

이 사례는 오픈소스의 강점과 한계를 동시에 보여줍니다. FFmpeg은 사실상 모든 미디어 처리의 근간이 되는 프로젝트입니다. VLC, HandBrake, Chrome, 심지어 대부분의 스트리밍 서비스 백엔드가 FFmpeg에 의존합니다. 하지만 그 방대한 코드베이스에서 모든 엣지 케이스를 관리하기란 불가능에 가깝습니다.

자막 처리 영역만 해도 FFmpeg이 지원하는 포맷이 수십 가지이고, 각 포맷마다 고유한 복잡성을 가지고 있습니다. 핵심 개발자들은 코덱 성능이나 스트리밍 프로토콜 같은 더 영향력이 큰 영역에 집중할 수밖에 없고, 자막 변환 같은 "충분히 동작하는" 기능은 우선순위에서 밀리게 됩니다.

이런 상황에서 한 명의 개발자가 자신의 문제를 직접 해결하고, 그 과정을 공유한 것이 오픈소스의 진짜 힘입니다. 이 수정이 FFmpeg 메인 브랜치에 머지되면, 미디어 서버를 운영하는 수많은 프로젝트가 간접적으로 혜택을 받게 됩니다.

한국 개발자에게 주는 시사점

미디어 처리 파이프라인을 다루는 개발자라면, PGS 자막 처리 시 기존에 겪던 문제가 이 수정으로 해결될 수 있는지 확인해볼 가치가 있습니다. 특히 OTT 서비스나 자막 처리 자동화를 구축하는 팀이라면 관련 이슈를 트래킹해두는 것이 좋겠습니다.

더 넓은 관점에서, 이런 사례는 "오래된 이슈 트래커를 뒤져보는 것"의 가치를 일깨워줍니다. 12년 된 버그를 잡았다는 것은, 그동안 수많은 사람이 같은 문제로 고생하다 포기했다는 뜻이기도 합니다. 여러분이 사용하는 오픈소스에서 오랫동안 열려 있는 이슈가 있다면, 한번 도전해볼 만한 가치가 있지 않을까요?

정리

12년 묵은 FFmpeg PGS 자막 변환 버그가 한 개발자의 끈기로 해결되었습니다. 작지만 의미 있는 기여가 거대한 오픈소스 생태계를 조금씩 더 완성해갑니다.

혹시 여러분도 오래된 오픈소스 버그를 잡아본 경험이 있나요? 어떤 프로젝트에서, 어떤 과정이었는지 이야기해주세요.


🔗 출처: Hacker News

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.