acexy - Goで書かれたAceStreamプロキシ! ⚡
目次
仕組みは? 🛠
このプロジェクトは AceStreamミドルウェアHTTP APIのラッパーで、 HLSおよび MPEG-TSのストリーム再生を可能にします。
AceStreamの制限やストリーム再生時に存在するいくつかの問題に疲れていました📽。例えば、
1つのクライアントのみ同じチャンネルを再生可能です。
複数のクライアントで異なるストリームを再生する場合は、
クライアントごとにユニークなpidを手動で追加しなければなりません。
送信中にエラーが発生すると、ストリーム全体が停止してしまうなどです。
家庭内ネットワークで単一のサーバーと複数のクライアントを使い、 リソースを最適化しようとした際のAceStreamの使用感はかなりフラストレーションが溜まりました。 私がAceStreamを使用しているトポロジーは以下の通りです。
いくつかの問題があります:
- 同時に1台のクライアントのみ同じストリームを再生可能です🚫。
- 各クライアントがそれぞれAceStreamを動かすのはリソースの無駄であり、
- 複数のクライアントは、ユニークな
pid(プレイヤーID)が関連付けられていれば、異なるストリームを再生できます 🔓。 - 標準の AceStream HTTP API はエラーに対して十分な耐性がなく、伝送が停止するとすべてのクライアントで停止します ❌。
主な特徴 🔗
acexy を使用すると、自動的に以下が利用可能です:
- すべての AceStream ストリームを実行する単一の集中型サーバー ⛓。
- クライアントごと、ストリームごとにユニークな
pid(プレイヤーID)を自動割り当て 🪪。
- HTTP ミドルウェアによる 耐障害性、エラー耐性 のあるストリーミング 🛡。
このプロキシを使うことで、以下のアーキテクチャが可能になります:
使い方 📐
acexy は Docker イメージとして提供されています。最新の Docker イメージがインストールされて利用可能であることを確認してください。
Acexy コンテナは AceStream サーバーに接続します。Docker イメージをデプロイし、同じネットワーク内で Acexy をリンクするか、ホスト上で稼働中の AceStream バージョンに接続し、Acexy をホストネットワークモードで実行する必要があります。
情報:リポジトリにはdocker-compose.ymlファイルがあり、これを使って全体のブロックを直接起動できます。これはv0.2.0以降推奨される設定 です。
サービスブロックを起動するには、まず docker-compose.yml ファイルを取得し、次のコマンドを実行してください:
wget https://raw.githubusercontent.com/Javinator9889/acexy/refs/heads/main/docker-compose.yml
docker compose run -dDocker Composeを使用したくない場合、すでにAceStreamサーバーをお持ちであれば、別の方法としては以下のようになります:
docker run --network host ghcr.io/javinator9889/acexy
注意: 便宜上、すべての調整可能なパラメータを含む docker-compose.yml ファイルが提供されています。
すぐに実行できる状態であり、v0.2.0 以降の推奨される開始方法です。デフォルトでは、プロキシはMPEG-TSモードで動作します。モードを切り替えるには、
-m3u8 フラグを追加するか、ACEXY_M3U8=true 環境変数を設定する必要があります。
注意: HLSモード -ACEXY_M3U8または-m3u8フラグ - は未検証の状態です。
使用は推奨されず、正常に動作する保証はありません。
利用可能なエンドポイントは1つだけです: /ace/getstream であり、標準の
AceStream Middleware/HTTP API と同じパラメータを受け取ります。
したがって、ストリームを実行するには、お好みのアプリケーション(例: VLC)で以下のリンクを開くだけです。
http://127.0.0.1:8080/ace/getstream?id=dd1e67078381739d14beca697356ab76d49d1a2
where dd1e67078381739d14beca697356ab76d49d1a2 is the ID of the AceStream
channel.最適化 🚀
プロキシの背後で動作しているAceStreamエンジンには、パフォーマンスを最適化するために公開できる複数のポートがあります。デフォルトでは以下の通りです:
8621/tcp8621/udp
EXTRA_FLAGS変数を使い、--portフラグで調整可能です。これらのポートを公開することで、より安定したストリーミング体験が得られるはずです。ゲートウェイ側でもこれらのポートを開放する必要があることに注意してください。
参考までに、Dockerコマンドの実行例は以下の通りです:
docker run -t -p 8080:8080 -p 8621:8621 ghcr.io/javinator9889/acexy代替案 🧃
AceStream は内部で UPnP IGD を使用してリモートマシンに接続しようとします。 問題は、Docker によって追加されたブリッジ層のためにこれが機能しないことです (参照: https://docs.docker.com/engine/network/drivers/bridge/)。
Acexy の単一インスタンスと AceStream の単一インスタンスを実行している場合、 ホストネットワーキングでコンテナを実行することは安全です。これは以下を意味します:
- コンテナはあなたのメインネットワークにブリッジされた他のアプリケーションにアクセス可能です。
- どのポートも公開する必要はありません。
- パフォーマンスが少し最適化されます。
コマンドは非常に簡単です:
docker run -t --network host ghcr.io/javinator9889/acexy
AceStreamがUPnPを自由に使用できるようになるはずです。設定オプション ⚙
Acexyには動作をカスタマイズできる多数の設定オプションがあります。すべてに 最適な体験を得るためにテストされたデフォルト値がありますが、必要に応じて 調整する必要があるかもしれません。
プロのヒント: acexy -help を実行すると、利用可能なすべてのオプションを
完全に確認できます。
AcexyはDockerコンテナ内で実行されることを想定しているため、すべての変数と設定は 環境変数を使って調整可能です。
| フラグ | 環境変数 | 説明 | デフォルト |
|---|---|---|---|
-license |
- | プログラムのライセンスを表示して終了 | - |
-help |
- | ヘルプメッセージを表示して終了 | - |
-addr |
ACEXY_LISTEN_ADDR |
Acexyが待ち受けているアドレス。hostモードで実行する際に便利です。 |
:8080 |
-scheme |
ACEXY_SCHEME |
AceStreamミドルウェアのスキーム。AceStreamをHTTPSで動作するように設定している場合は、この値を調整する必要があります。 | http |
-acestream-host |
ACEXY_HOST |
AceStreamミドルウェアの場所。異なるAceStreamエンジンに接続する必要がある場合は変更してください。 | localhost |
-acestream-port |
ACEXY_PORT |
AceStreamミドルウェアに接続するポート。異なるAceStreamエンジンに接続する必要がある場合は変更してください。 | 6878 |
-m3u8-stream-timeout |
ACEXY_M3U8_STREAM_TIMEOUT |
AcexyをM3U8モードで実行する際、ストリームが終了したと見なすタイムアウト時間。 | 60s |
-m3u8 | ACEXY_M3U8 |
AcexyでM3U8モードを有効にします。警告: このモードは実験的であり、期待通りに動作しない場合があります。 | 無効 |
-empty-timeout |
ACEXY_EMPTY_TIMEOUT |
ミドルウェアから空の情報が受信された後、ストリームが終了したと見なすためのタイムアウト時間。M3U8モードでは無意味です。 | 1m |
-buffer-size |
ACEXY_BUFFER_SIZE |
プレイヤーにデータをコピーする前に、ストリームの最大buffer-sizeバイトをバッファリングします。再生の安定性向上に役立ちます。
|
4.2MiB |
-no-response-timeout |
ACEXY_NO_RESPONSE_TIMEOUT |
新しく開かれたストリームに対してAceStreamミドルウェアが応答を返すまでの待機時間。インターネット接続が非常に悪くない限り(例:非常に高い遅延がある場合)、できるだけ短くする必要があります。 | 1s |
注意: オプションのリストは膨大ですが、古くなっている可能性があります。疑問がある場合は常にAcexyバイナリの-help出力を参照してください。--- Tranlated By Open Ai Tx | Last indexed: 2026-03-29 ---