1. 各選手の簡単な紹介
1、ExoPlayer
ExoPlayerは、Google によって開始されたオープン ソース プレーヤーです。主に、ビデオとオーディオを分析するために Android によって提供されるデコード システムが統合されています。MediaCodec を非常によくカプセル化し、DASH や HLS などのライブ ブロードキャスト プロトコルのサポートを追加し、優れたパフォーマンスを形成します。再生の安定性が向上した開発プレーヤー。
Github : https://github.com/google/ExoPlayer
星 | フォーク | 問題 |
---|---|---|
20.5k | 5.9k | 723 |
クロスプラットフォーム機能: Android のみをサポート
アドバンテージ:
- アクセス パッケージのサイズは 1.1M と小さい
- メンテナンスチームが強力で、更新速度が速い
欠点:
- クロスプラットフォームではないため、ライブブロードキャストには適していません
- スケーラビリティは平均的ですが、ビデオ ソフトウェア ソリューションへのアクセスはより面倒です
- シンプルな再生シナリオのプロジェクトに適しており、再生中にストリームを切り替える必要はありません。
2、ijkプレイヤー
ijkplayerは Bilibili 社のオープンソース プレーヤーで、FFmpeg に基づいて開発され、Android の MediaCodec、iOS の VideoToolBox ハード デコーディングをサポートし、ソフト デコーディングとハード デコーディングの間の自由な切り替えを実現でき、FFmpeg の機能のおかげで、複数のストリーミング メディアもサポートできます。これは、柔軟性の高いオーディオおよびビデオのエンコード形式であり、独自のプレーヤーを実装するようにカスタマイズできます。
Github : https://github.com/bilibili/ijkplayer
星 | フォーク | 問題 |
---|---|---|
31.2k | 8k | 2.7k |
クロスプラットフォーム機能: クロスプラットフォーム、Android/iOS のサポート
利点:
- 構造は比較的単純で、基本的にffplayで展開されるため、比較的簡単に起動できます。
- VLCよりもパッケージサイズが小さい
- 幅広い応用範囲、豊富な問題と情報
欠点:
- スケーラビリティが悪く、開発者による二次開発用のモジュールは基本的に提供されない
- 公式は現在基本的にメンテナンス、更新されていません
3、VLC
VLCは VideoLAN プロジェクトによって開発されたプロジェクトで、1996 年に初めて開始された、完全なクロスプラットフォーム プレーヤーです。VLC の全体的なフレームワークは、機能をモジュールに分類および抽象化するモジュール管理メカニズムとして設計されています。
Github : https://github.com/videolan/vlc
星 | フォーク | 問題 |
---|---|---|
10.5k | 3.3k | / |
クロスプラットフォーム機能: クロスプラットフォーム、Android/iOS/MacOS/Windows/Linux/BSD/Haiku をサポート
利点:
- クロスプラットフォーム、優れた互換性
- 包括的な機能、rtsp、rtmp、ftp、http、https およびその他のプロトコルをサポート
- コードは完全に分離されており、モジュールは互いに独立しており、相互に影響を与えず、新しいモジュールを導入するのに便利です。
- 強力なメンテナンスチーム、頻繁なアップデート
欠点:
- Android プラットフォームによってコンパイルされたパッケージは比較的大きく、約 16M です。
- Android プラットフォームではパフォーマンスの問題が発生する可能性があるため、最適化する必要があります
4、GStreamer
GStreamerはクロスプラットフォームのマルチメディア フレームワークであり、アプリケーションはマルチメディア処理のさまざまなステップをパイプライン (Pipeline) を通じて直列に接続して、目的の効果を実現できます。各ステップはElement(エレメント)をベースとしたGObjectオブジェクトシステムに基づくプラグインによって実装されており、さまざまな機能の拡張が容易です。
Github : https://github.com/GStreamer/gstreamer
星 | フォーク | 問題 |
---|---|---|
1.6k | 458 | / |
クロスプラットフォーム機能: クロスプラットフォーム、Android/iOS/Windows/Linux をサポート
利点:
- GStreamer フレームワークはプラグインに基づいており、そのプラグイン可能なコンポーネントは任意のパイプラインに簡単に接続できます。
- 明確な構造と柔軟なスケーラビリティ: すべての GStreamer オブジェクトは GObject から継承したメソッドを使用して拡張でき、すべてのプラグインを動的にロードできます。
欠点:
- 使い方がさらに複雑になる
- パフォーマンスが悪く、パッケージサイズが大きい
5、スマートプレイヤー
SmarterPlayer は、Daniu Live が開発した、業界でも数少ない独自開発のクロスプラットフォーム ストリーミング メディア カーネルの 1 つで、究極のエクスペリエンスに特化しており、モジュラーの自由な組み合わせを通じて、リアルタイム RTMP/RTSP ストリーミング、RTMP/RTSP プレーヤーをサポートしています。ストリーミング メディア転送、オーディオおよびビデオ ガイダンス、ダイナミック ビデオ合成、オーディオ ミキシング、ライブ ブロードキャスト インタラクション、組み込みの軽量 RTSP サービスなど、高速よりも高速で、業界で真に信頼できる超低遅延ライブ ブロードキャスト SDK (1 秒以内、低遅延モード 200 ~ 400 ミリ秒)。
Github : https://github.com/daniulive/SmarterStreaming
星 | フォーク | 問題 |
---|---|---|
1.4k | 2.7k | 5 |
クロスプラットフォーム機能: クロスプラットフォーム、Android/iOS/Windows/Linux をサポート
利点:
- HLS、RTMP、FLV などのさまざまな一般的なストリーミング メディア プロトコルをサポートします。
- さまざまなプレーヤースキンとカスタマイズオプションを提供
- P2Pネットワークプロトコルをサポートし、オンデマンドおよびライブブロードキャスト機能を実現できます
欠点:
- SmartPlayer は商用ソフトウェアなので、使用するにはライセンスを購入する必要があります
- 特定のハードウェアおよびソフトウェア プラットフォームには互換性の問題が存在する可能性があります
2. 選手選考の結論
モデルの選択に関して、私は個人的には次の理由から ijkplayer を選択することを好みます。
- ijkplayer は ffmpeg に基づいており、ソフト ソリューションの効果は非常に優れており、サポートしたいプロトコルを構成できます。プロジェクト自体も ffmpeg を使用しており、再利用でき、新しく追加されたパッケージは小さいです
- ijkplayer モバイル端末はクロスプラットフォームで、両端のニーズを満たし、Android の MediaCodec と iOS の VideoToolBox ハード デコーディングをサポートしており、ソフト デコーディングとハード デコーディングの間の自由な切り替えを実現できます。
- ijkplayer は比較的シンプルで情報が豊富で、比較的すぐに始めることができます
- 公式が更新しないという問題を考慮して、長期的には徐々に進化させ、ijkplayer をベースにした独自のプレーヤーに繰り返し変換することができます。
その他を選択しない理由:
- すべてのプラットフォームと互換性を持たせるために、VLC は一部のライブラリを不当に選択するため、Android プラットフォームによってコンパイルされる大きなパッケージが生成されます。
- VLC コードは高度に分離されていますが、多くの一般的ではないライブラリが使用されており、学習コストが比較的高くなります。
- ExoPlayer は Android のみをサポートします
- GStreamer は使い方が複雑で、パッケージ サイズが大きい
- SmarterPlayer にはライセンスの購入が必要です