アーキテクチャ概要
AutoFilmは、EmbyおよびJellyfinサーバー環境においてStrm形式の直接リンクを動的に生成・管理するオープンソースコンポーネントです。クライアントデバイスがストレージまたは外部エンドポイントに直接アクセスするため、メディアサーバー側でのプロキシ転送やオンデマンドトランスコード処理が不要になります。この設計により、CPU負荷とディスクI/Oを最小限に抑えつつ、メタデータの取得、ライブラリ同期、デバイス間での視聴進捗共有といったサーバー側機能は完全に維持されます。特に帯域幅が制限されているWAN環境や、低スペックNAS上での運用において、ストリーミングの安定性とレイテンシを大幅に改善します。
デプロイメント構成
Docker Composeによるコンテナ定義
本番運用では、設定ファイルのバージョン管理とログの分離を容易にするため、Compose形式での定義を推奨します。以下の構成では、マウントポイントの接頭辞を変更し、明示的なポートバインディングと再起動ポリシーを追加しています。
version: '3.9'
services:
stream-bridge:
image: akimio/autofilm:latest
container_name: af_runtime
restart: unless-stopped
volumes:
- /srv/media-center/cfg:/app/settings:rw
- /mnt/archive/contents:/mnt/volume_data:ro
- /var/log/media-svc:/app/logs
environment:
- AF_LOG_LEVEL=info
- AF_BIND_PORT=8088構成ファイルの作成後、docker compose up -dを実行してバックグラウンドプロセスを起動します。
Python仮想環境での実行
依存関係の分離と環境汚染を防ぐため、仮想環境を生成してからスクリプトを実行します。以下の手順では、設定ファイルのパスを明示的に指定する方式に変更しています。
python3 -m venv env_streamer
source env_streamer/bin/activate
# 依存パッケージの解決(必要に応じてrequirements.txtを適用)
python3 core/bootstrap.py --config-path ./af_config.yaml --daemon運用最適化の指針
- パス解決の整合性: AutoFilmが出力するStrmファイル内のURIと、Emby/Jellyfinが認識するメディアベースパスを厳密に一致させる必要があります。シンボリックリンクまたはDockerバインドマウントを使用する場合、両サーバーから同一のファイルシステム階層が見えているか検証してください。
- リソース配分の最適化: 直接リンク方式を採用することで、ビデオストリームのデコード処理がクライアント側へ委譲されます。これによりサーバーメモリの占有率が低下し、同時アクセス数の上限を実質的に引き上げることが可能です。
- セッション同期の維持: 再生制御シグナルは元のメディアサーバーAPIを介して中継されるため、マルチデバイス間でのシーク位置や視聴履歴の同期が自動的に行われます。ネットワークパケットロスが発生しやすい環境でも、バッファリングアルゴリズムがサーバー側の制限を受けにくくなります。
外部システムとの統合と拡張性
AutoFilmは内部に軽量なRESTインターフェースを備えており、メディアライブラリの状態を外部から監視・操作できます。Home AssistantやNode-REDといった自動化プラットフォームと連携することで、時刻や照明センサーの値に基づいた再生キューの動的生成、またはネットワーク負荷閾値を超えた際のストリーム品質自動切り替えなどのワークフローを構築可能です。また、公開されているフックポイントとイベントリスナーを活用すれば、カスタムStrmジェネレーターやメタデータ補完プラグインの開発が容易であり、メディアセンター全体の自動化パイプラインを段階的に拡張する基盤として機能します。