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に関連付ける。説明されているデプロイでは、1つのセッションが許可される。
同社は、提示されているプライベートデプロイモデルは、一般向けのマルチユーザーサービスとしてすぐに利用できるモデルではないと注意している。一方、公開ベータ版では、認証済みユーザーごとに1つのコンテナID、ユーザーごとに1つのアクティブセッションを使用し、同時実行、メディア、リソースに関する制御も備えている。
開発者にとっての意味
Streamlineは、管理型動画サービスとカスタム処理の間に柔軟なレイヤーを提供する。これにより、開発者は運用基盤全体をプラットフォーム外に構築する必要がなくなる。ただし、モデルの制限は重要である。現在の処理はコンテナのCPUに依存しているため、高解像度や高フレームレートを使用する場合にボトルネックになる可能性がある。Cloudflareによれば、今後の方向性にはコンピュータービジョンパイプライン、ハードウェアアクセラレーションによるメディア処理、WebRTCおよびMoQのサポートに加え、Workers内でネイティブに動作するエンコードおよびデコードのプリミティブが含まれる。
Cloudflareは2つのオープンソースリポジトリを公開した。cloudflare/streamlineはメディアエンジンとAPIパッケージ用で、cloudflare/streamline-demoはWorkerアプリケーション、Astroインターフェース、デプロイツール、Accessとの統合用である。また、ユーザーのアカウントで試用またはデプロイできる公開ベータ版も提供している。