원문 캡처 · github.com
원문 캡처 · github.com

Briareus는 Go와 FFmpeg를 이용해 영상을 키프레임 경계에서 여러 구간으로 나누고, 각 구간을 독립적으로 인코딩하는 분산 트랜스코더다. 현재 활발히 개발 중이며, 출력에는 영상만 포함되고 원본 오디오는 빠진다.

ffprobe로 원본의 키프레임 시점을 확인한 뒤, 키프레임에 맞춰 구간을 정하고 스트림 복사 방식으로 분할한다. 이후 각 구간을 libx264로 인코딩한다.

사용하려면 Go 1.27 이상과 libx264 지원을 포함한 FFmpeg 및 ffprobe가 PATH에 있어야 한다. 프로젝트 루트의 testdata/test.mp4에 원본 영상을 두고 다음 명령을 실행하면 결과가 생성된다.

go run ./cmd/briareus

원본 구간은 out/segments/, 변환된 구간은 out/transcoded/에 저장된다. 입력 영상은 10초를 목표로 나눴을 때 최소 두 구간이 생길 만큼 길어야 한다.

Briareus는 스트림 복사로 키프레임에서 분할하며 폐쇄형 GOP를 전제로 한다. 방송 영상이나 블루레이 콘텐츠 등 일부 소스는 열린 GOP를 사용할 수 있는데, 이 경우 GOP 끝의 B 프레임이 다음 GOP의 I 프레임을 참조한다. 해당 I 프레임에서 자르면 참조가 끊겨 구간 경계에 화면 이상이 생길 수 있다. x264 기본 설정으로 인코딩한 콘텐츠는 폐쇄형 GOP를 사용하므로 이 제한의 영향을 받지 않는다.

Briareus 저장소