µStreamer
軽量で高速なMJPEGビデオストリーミングサーバー
スマートダウンロード
プロジェクトのホームページへ
インストーラはまだありません — ソースリポジトリをご覧ください
超高速MJPEGビデオストリーム、Raspberry Piハードウェアエンコードに対応
主な機能
- マルチスレッドJPEGエンコードによるパフォーマンス向上
- Raspberry Piハードウェアエンコードアクセラレーション(V4L2 M2M)
- DV-timingsによる入力解像度への自動適応
- フレーム重複除去機能により60%以上のトラフィックを削減
- Unixドメインソケットとsystemd socketアクティベーション
できないこと
- •libevent、libjpeg、libbsdなどのライブラリに依存する;デフォルトで127.0.0.1:8080をリッスンする;クロスオリジンリクエストはデフォルトで無効になっており、有効にするには --allow-origin=* を設定する必要がある;HTTPSはリバースプロキシ(Nginxなど)と組み合わせる必要がある;フレーム重複除去機能は、ブラウザごとに特定のURLパラメータを使用する必要がある。
使用例
- Raspberry Pi HDMI/VGA画面キャプチャライブ配信(PiKVMリモート管理など)
- 高品質なネットワークカメラ映像ストリームのプッシュ配信
- リモート監視およびセキュリティシステム
詳細説明
µStreamer は軽量で高速な MJPEG ビデオストリーミングサーバーであり、任意の V4L2 デバイスからネットワークへビデオをプッシュできます。マルチスレッド JPEG エンコーディング、Raspberry Pi ハードウェアエンコードアクセラレーション、DV-timings による動的解像度調整、帯域幅を節約するフレーム重複排除、Unix ドメインソケットストリーミング、GPIO 信号によるストリーム状態の表示などの高度な機能をサポートしています。PiKVM プロジェクトのコアコンポーネントとして、高フレームレート・高解像度のスクリーンキャプチャ(HDMI/VGA)向けに専用設計されており、同様の mjpg-streamer よりも効率的で安定しています。
トラブルシューティング & FAQ (2)
トラブル対応なぜ私のGL.iNet GL-RM1 (Comet KVM)で/api/streamer/snapshotが503を返すのですか?
GL-RM1は、期待されるUnixソケット(/run/kvmd/ustreamer.sock)の代わりに '--host=0.0.0.0 --port=8080' でustreamerを実行するため、標準のPiKVM APIが機能しません。回避策:デバイスにSSH接続し、ustreamerのHTTPエンドポイントから直接スナップショットを取得します。'ssh root@<kvm-ip> curl -s http://127.0.0.1:8080/snapshot > screenshot.jpg' これで1920x1080のJPEGフレームが返されます。この問題はこのサードパーティ実装に固有のものであり、PiKVMプロジェクトはGL-RM1の非標準設定をサポートしていません。
トラブル対応uStreamer の「CAP: Device select() timeout」を、複数の USB カメラを実行しているときに修正するにはどうすればよいですか?
タイムアウトは通常、USB バスがすべてのカメラを同時に処理できないことを意味します。uStreamer はプロセスが起動するとすぐに各 V4L2 デバイスを開いてキャプチャします。「誰も視聴していない」状態では JPEG エンコードがスキップされるだけで、USB キャプチャは停止しません。
回避策:
1. 4 つの uStreamer インスタンスを一度にすべて起動しないでください。必要なときだけインスタンスを起動し、アイドル時には停止してください。プロセススーパーバイザー、リバースプロキシ、または起動スクリプトを使用します。
2. カメラを別々の USB バス/ホストコントローラーに接続します。USB HAT/ハブを備えた Raspberry Pi Zero 2W でも 1 つの USB2 バスを共有するため、ハブポートを追加しても帯域幅は増えません。
3. 解像度とフレームレートを下げてから、カメラを 1 台ずつテストします:
ustreamer --format=mjpeg --device=/dev/video0 --host=192.168.2.144 --port=8000 -r 1280x720 -f 1 --device-timeout=20
4. --device-timeout を 20 などにより大きくすると、早期の失敗は避けられる場合がありますが、USB 帯域幅は増えません。
5. -K/--last-as-blank を削除します。これは非推奨であり、デバイスがキャプチャされるのを防ぐことはできません。
この uStreamer バージョンには、最初の HTTP ビューアーが接続するまでビデオデバイスを閉じたままにする組み込みオプションはありません。
タグ
はじめ方
ソフトウェアをインストール
ダウンロードしたインストーラをダブルクリックし、指示に従ってください
リポジトリをクローン: git clone --depth=1 https://github.com/pikvm/ustreamer
ディレクトリに移動: cd ustreamer
コンパイル: make
- リポジトリをクローン: git clone --depth=1 https://github.com/pikvm/ustreamer
- ディレクトリに移動: cd ustreamer
- コンパイル: make
チェックサムがありません
このプロジェクトは GitHub Release ページに SHA-256 チェックサムを公開していません
SHA256 チェックサム
チェックサムなし
GitHub Releases から直接ダウンロードし、ファイルの整合性をご自身で確認してください
本プラットフォーム上のすべての SHA-256 チェックサムは、プロジェクトの公式 GitHub Release ページから抽出されたもので、一切の改変はありません。GitHub Releases ページで独自に検証できます。
オープンソースの透明性
GitHub ソースを見るアンインストール情報
ソースコードディレクトリを削除するだけです。パッケージマネージャー(apt、pacmanなど)でインストールした場合は、対応するアンインストールコマンド(sudo apt remove ustreamerなど)を使用してください。
追加の依存関係なし
ダウンロード後すぐに使用可能。追加のランタイムは不要です。
問題が発生?以下のFAQを確認
2 FAQs