>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
TypeScript

zyfunの解剖 — Electronで構築されたストリーム・IPTV用のモジュラープレイヤー

デスクトップでIPTVやネットワーク動画の再生を設定しようとしたことがある人なら、二つの極端な選択肢に遭遇したことがあるだろう。一方ではKodiのような大容量のオールインワンソリューションがあり、何百メガバイトもの依存関係を必要とし、複雑なインターフェースで圧倒される。他方では簡素なユーティリティがあり、プレイリストをテキスト設定に手動で埋め込む必要があり、適切な検索や同期機能がまったくない。

最近zyfunを見つけた。 популярного ZY-Playerの直接的な後継で、モダンなスタックを使って完全に書き直されている。GitHubで既に8,800スター以上集めているが、アジア圏の外ではほとんど知られていない。理由はシンプルで、ドキュメントが中国語のみで、機械翻訳は必ずしも正確ではないからだ。しかし、このプロジェクトのエンジニアリングには注目する価値がある。

zyfun logo

内部構造

zyfunはElectron、Vue 3、Vite、TypeScriptで構築されたデスクトップアプリケーションだ。著者はインターフェースにTDesignコンポーネントライブラリを採用している。

アプリケーションはシンクライアントとして動作する。組み込みコンテンツを含まず、外部ソースのハンドラとして機能する。構造化されたJSON設定ファイルをクライアントに提供すると、アプリケーションがデータ解析、フィルタリング、カタログ検索、ストリーム再生を処理する。

Movies

Streams

主要なエンジニアリング上の決定

このプロジェクトのコードベースには、典型的なホームブリュープレイヤーとは異なる興味深いソリューションがいくつか含まれている。

1. モジュラーソースアダプタ

硬直的な解析ロジックの代わりに、著者はアダプタシステム(types T0 through T4)を実装した。これにより、完全に異なるバックエンドを接続できる:

  • T0とT1:XMLまたはJSONレスポンスを返すクラシックなRESTインターフェース。
  • T3とT4:JavaScript(DRPy)、CatVod、Pythonでのカスタムハンドラ実行をサポートするスクリプトアダプタ。
  • Alistプロトコルを介したファイルストレージ接続。

これにより、バイナリ自体を再構築せずに、設定ファイル内のフィールドマッピングスキーマを記述するだけで、新しい映画サイトやホームNASカタログを追加できる。

2. Chrome DevTools Protocolによるストリームスニッファ

多くのオンラインシネマは複雑なスクリプトの背後に直接ストリームリンクを隠している。通常 таких задач решаются через скрытые фреймы, что часто нарушает работу страницы.

zyfunでは、CDP(Chrome DevTools Protocol)を介してストリーム傍受を実装している。アプリケーションは分離されたChromiumコンテキストでターゲットURLを開き、ネットワークレベルのイベント Network.requestWillBeSent を購読し、ファイルリンク .m3u8 または .mp4 をキャッチする。このアプローチはヒューリスティックな正規表現マッチングよりも信頼性が高い。

Stream sniffer

3. 交換可能なビデオコア

アプリケーション内では、単一のプレイヤーに固定バインディングされていない。設定でdesired engineを選択できる:

  • XGPlayer(ByteDanceチーム開発)
  • ArtPlayer
  • システムコールを介した外部バイナリ(例えば、ハードウェアデコード対応のmpvやVLC)

ネイティブWebプレイヤーが高ビットレートや特定のコーデックを処理できない場合、ワンクリックで外部mpvにストリームを転送できる。

Player

History

4. 同期と組み込みAI

視聴履歴、ブックマーク、ソース設定はWebDAVまたはiCloud経由で同期される。複数のマシンでアプリを使用している場合に便利だ。

著者はOpenAI APIとの統合も追加した。クライアントは選択した言語モデルにリクエストを送信して、簡単なプロットサマリーや類似作品の推薦を素早く取得できる。

日常的な便利な機能として:設定にはBoss Key機能が含まれている。macOSではデフォルトでShift+Cmd+Zを押すと、ウィンドウがトレイに即座に非表示になり音がミュートされる。

設定の仕組み

すべてのソースデータベースは単一のJSONドキュメントでインポートされる。構造は独立したブロックに分割されている: site VODカタログ用、 iptv プレイリスト用、 channel 個々のストリーム用、 analyze リンクリゾルバ用。

標準的なソース設定の例:

Config

インストールとプラットフォーム

Windows(x64、arm64)、macOS(IntelとApple Silicon)、Linux(AppImage、deb、rpm、AURパッケージ)のプリビルドパッケージが利用可能だ。

macOSにインストールする際、システムが署名されていないアプリケーションの起動をブロックする場合がある。標準的な検疫属性リセットで回避できる:

macOS

Linuxでは、一部のディストリビューションでAppImageを実行する際に、 libfuse2 ライブラリが必要だ:

Linux

まとめ

zyfunは、所有するメディアストリームをプロプライエタリなサービスに依存せずに管理したい人にとって、堅実なツールであることが判明した。

誰が恩恵を受けるか:

  • EPGサポートと便利なチャンネルグループ化を備えたクリーンなプレイヤーを必要とするIPTV愛好家。
  • 異なるAPIを単一のクライアントに統合したいホームメディアサーバー所有者。
  • バックグラウンドネットワークトラフィック分析のためのChrome DevTools Protocol統合の実用的な例を探しているVueおよびElectron開発者。

ソースはAGPL-3.0ライセンスの下で公開されている。オールインワンのストリーミングクライアントを探しているなら、リポジトリは確かにチェックする価値がある。

関連プロジェクト