TVBoxOSCリポジトリに17,000個以上のスターが付けられた理由
TVBoxOSCリポジトリを見つけた場合、驚かれるかもしれません。このプロジェクトは17,000を超えるスターと2,000以上のフォークを獲得していますが、READMEファイルは外部ソースへのリンクを含むわずか5行で構成されています。インターフェース截图、詳細なチュートリアル、スタックの説明は一切ありません。それにもかかわらず、コードベースには常にアクティビティがあります:リリースは定期的に更新され、パッチがコミットされ、コミュニティは独自のカスタムディストリビューションを構築しています。
このプロジェクトが何なのか、なぜそんなに注目が集まるのか、そしてモバイル開発者に何を提供できるのかを解明しましょう。
TVBoxOSCとは
本質的に、このリポジトリにはAndroid TVおよびTVセットトップボックス向けのオープンソースメディアプレイヤーの実装が含まれています。TVBoxというコード名で呼ばれる元のソフトウェアは、アジアのホームシアンター愛好家のコミュニティで長い間流通してきました。その人気理由は単純です:コンテンツから完全に分離されたモジュラーなオープンソースプレイヤーです。
アプリ自体はストリーミングを行わず、海賊版データベースも含んでいません。外部ソースとの連携のための универсальный フロントエンド、リモートコントロールインターフェース、ExoPlayerやIJKPlayerなどの一般的なオープンソースライブラリに基づいて構築されたマルチメディアエンジンです。
ユーザーはTVにAPKをインストールし、リモートのJSON設定またはローカルネットワーク上のファイルを指定すると、アプリがチャンネルリスト、ビデオカタログ、パーシングルールを読み込みます。
プレイヤーのアーキテクチャの動作方法
最も興味深い部分は、リポジトリ内のコンテンツ処理の構成方法です。通常、メディアプレイヤーの開発者は、特定のサービスのパーシングロジックをアプリに直接埋め込むか、標準的なM3Uプレイリストに限定します。TVBoxOSCの作成者はさらに踏み込んでいます。
動的なパーサーの読み込み
アーキテクチャは動的モジュールに依存しています。設定ファイルはアプリにビデオストリームURLだけでなく、アダプターとして機能するJavaScriptスクリプトまたはコンパイル済みJARファイルを渡します:
{
"sites": [
{
"key": "custom_vod",
"name": "Local Media Server",
"type": 3,
"api": "csp_CustomModule",
"ext": "http://192.168.1.50/rules.json"
}
]
}
プレイヤーがインターフェースを読み込むとき、指定されたルールに従ってモジュールを初期化し、メタデータをリクエストし、カタログスクリーンを構築します。ソースがデータ形式を変更した場合、Androidアプリ自体を再ビルドする必要はありません。リモートパーサースクリプトを更新するだけです。
マルチメディアエンジンとハードウェアアクセラレーション
コードの観点から、このプレイヤーは低電力の安い中国のメディアボックス向けに適応されています。内部で柔軟なデコーダースイッチングをサポートしています:
- 標準的なHLSおよびDASHストリーム用のGoogle ExoPlayer。
- 珍しいコーデックと問題のあるコンテナ用のFFmpegベースのIJKPlayer。
- CPUリソース節約用のシステムMediaCodecモード。
インターフェース開発者はD-padナビゲーションに焦点を当てています。マウスカーソルやタッチ入力エミュレーションはありません:要素フォーカス、Leanback用のカスタムリストアダプター、大規模なポスターリストのレンダリング最適化。
前身リンクとフォークツリー
リポジトリの説明では、プロジェクトがいくつかの独立したブランチからの作業を基にしていると述べています:
- CatVodTVOfficial/TVBoxOSC
- q215613905/TVBoxOS
- takagen99/Box
TVBoxを取り巻くオープンな世界では、入り組んだフォークの歴史が形成されています。ある著者はタブレット画面向けにUIを最適化し、別の著者はOkHttpとカスタムTLSフィンガープリントサポートでネットワーキングレイヤーを書き換え、3人目はローカルプロキシ経由でトレントストリーミングサポートを追加しました。j4Uq/TVBoxOSCリポジトリは、新しいコミットが蓄積され、GitHub ActionsでリリースAPKがビルドされる中央ハブの1つとして機能しています。
開発者にとってこのリポジトリが重要な理由
Android TV向けに開発している場合、ライブで非標準的なアプリケーションの良い例を見つけるのは難しい場合があります。Googleの公式ドキュメントはテンプレートベースのLeanbackコンポーネントを推奨していますが、複雑なネストされたカタログ構造には必ずしも便利ではありません。
TVBoxOSCの研究は、いくつかの有用な実践的な洞察を提供します:
- リモートコントロールとフォーカス処理。
KeyEventの処理、動的リスト読み込み中のフォーカス喪失の防止、カスタムカードアニメーション。 - 分離されたスクリプト実行。このプロジェクトは、Androidプロセス内で安全なマークアップパーシングのためにRhinoまたはQuickJSエンジンを介して外部JSコードを読み込む方法を明確に示しています。
- メタデータキャッシュの構成。アプリ агрессивно は、内部SQLiteデータベースにサムネイルとカタログ構造をキャッシュし、遅いネットワーク接続でもインターフェースがフリーズしないようにしています。
- CI/CDビルド。リポジトリには、異なるアーキテクチャ(armeabi-v7a、arm64-v8a)の自動APKビルドと自動リリース署名用のワークフローが構成されています。
まとめ
学術的なコードのクリーンさやドキュメントの点で、TVBoxOSCは模範的なプロジェクトとは言い難いです。コメントはほとんどなく、アーキテクチャの決定は時には実用的な問題を быстро 解決したいという欲求によって動機付けられています。
それにもかかわらず、これは巨大なユーザーベースを持つライブで人気のツールです。動的プラグインとハードウェアデコードサポートを備えたAndroid用のマルチメディアプレイヤーの実際の実装を見てみたい場合、TVBoxOSCのソースコードは確かにAndroid Studioで確認する価値があります。
関連プロジェクト