Cloudflare가 개발자 플랫폼에서 맞춤형 비디오 처리 파이프라인을 구축하기 위한 실험 환경이자 오픈 소스 예제로 Streamline 프로젝트를 출시했다. 이 프로젝트는 동적 주석을 라이브 스트리밍에 추가하거나, 영상 내부에 번역 자막이 삽입된 호스팅 비디오 사본을 생성하는 등 Cloudflare Stream의 기본 기능만으로는 충분하지 않은 사용 사례에 초점을 맞춘다.
Streamline은 Cloudflare 플랫폼의 여러 구성 요소에 역할을 분배한다. Containers는 예측 가능한 CPU 및 메모리 자원으로 미디어 엔진을 장시간 실행하고, Durable Objects는 세션 조정, 컨테이너 수명 주기 및 미리보기 전환을 관리한다. Workers는 제어 및 모니터링 신호와 브라우저 애플리케이션, 프로그래밍 에이전트 또는 임베디드 시스템일 수 있는 애플리케이션 인터페이스를 처리한다.
Streamline이 실제로 제공하는 기능
애플리케이션은 처리 세션을 생성하고, 비디오 파이프라인을 실행하며, 입력을 전송하고, 지표를 모니터링한 뒤 중지할 수 있다. 제어 애플리케이션의 연결이 끊기거나 다시 연결된 뒤에도 처리는 계속되며, 애플리케이션이 중지하거나 세션이 무기한 유지되는 것을 방지하는 최대 기간에 도달할 때까지 지속된다.
Container는 미디어 엔진을 호스팅하며, 현재 구현에서 미디어 엔진은 Go로 작성된 제어 계층과 실행에 FFmpeg를 사용하는 미디어 처리기로 구성된다. 엔진은 RTMPS 스트리밍을 수신하거나, Cloudflare Stream에서 HLS를 통해 호스팅된 비디오를 읽거나, 웹캠과 같은 소스에서 직접 데이터를 받을 수 있다. 또한 RTMPS를 통해 결과를 Stream Live로 전송하거나 WebSocket을 통해 지연 시간이 짧은 미리보기를 제공할 수 있다.
지원되는 수정 작업
- 블러 및 채도와 같은 필터 적용.
- 실행 중 업데이트할 수 있는 정지 이미지 또는 PNG 레이어 추가.
- 비디오에 자막 삽입.
- 코덱, 비트레이트, 해상도 및 프레임 레이트를 포함한 인코딩 매개변수 조정.
Cloudflare는 그래픽 레이어를 추가해 라이브 스트리밍을 수정하고, 호스팅된 비디오를 자막이 포함된 사본으로 변환하며, 카메라 영상을 미리보기 또는 비디오 분석에 사용할 수 있는 처리 파이프라인으로 전송하는 사용 사례를 설명한다. 이 프로젝트에는 레이어, 자막, 필터 및 화면 속 화면 기능을 포함한 Worker와 Astro 인터페이스로 구축된 애플리케이션 예제도 포함되어 있다.
보안 및 세션 수명 주기
Cloudflare는 제어 애플리케이션에 Stream Live 입력 및 출력 키가 노출되거나 브라우저에 저장되지 않도록 이 모델을 설계했다. 해당 키는 Workers Secrets 또는 Durable Objects 저장소에 보관되며, 애플리케이션은 키를 직접 다루는 대신 이름이 지정된 프로필을 참조한다. 또한 Worker는 Cloudflare Access 세션을 확인하고 활성 세션을 승인된 신원에 연결하며, 설명된 배포에서는 하나의 세션만 허용한다.
회사는 제시된 비공개 배포 모델이 다중 사용자 공용 서비스를 위한 준비된 모델은 아니라고 경고한다. 한편 공개 실험 버전은 인증된 사용자마다 하나의 컨테이너 ID와 사용자당 하나의 활성 세션을 사용하며, 동시성, 미디어 및 리소스에 대한 제어 기능도 제공한다.
개발자에게 의미하는 바
Streamline은 개발자가 플랫폼 외부에서 전체 운영 인프라를 구축하도록 요구하는 대신, 관리형 비디오 서비스와 맞춤형 처리 사이에 유연한 계층을 제공한다. 그러나 이 모델의 한계도 중요하다. 현재 처리는 컨테이너의 CPU에 의존하므로 해상도나 프레임 레이트가 높을 때 병목이 될 수 있다. Cloudflare는 향후 방향으로 컴퓨터 비전 파이프라인, 하드웨어 가속 미디어 처리, WebRTC 및 MoQ 지원과 함께 Workers 내부의 네이티브 인코딩 및 디코딩 기본 기능을 제시한다.
Cloudflare는 오픈 소스 저장소 두 곳을 공개했다. cloudflare/streamline은 미디어 엔진과 API 패키지를 위한 저장소이며, cloudflare/streamline-demo는 Worker 애플리케이션, Astro 인터페이스, 배포 도구 및 Access 통합을 위한 저장소다. 또한 사용자의 계정에서 사용해 보거나 배포할 수 있는 공개 실험 버전도 제공했다.