HTTP アダプティブ ストリーミングをサポートするオープン ソース ストリーミング ソリューションはありますか? 私の調査によると、VLC はアダプティブ ストリーミングをサポートしていません。Darwin Streaming Server についてはよくわかりません。何か案は?
4 に答える
私はそれらを見ますが、それらをテストしていません。HTTP ライブ ストリーミングの初期段階で彼らが引き起こすであろう悲しみの量は、それだけの価値がないと思います。問題を解決するために使用できるリソースはほとんどありません。
安く行きたい場合は、次の方法を試すことができます。
50ドル:アップルコンプレッサー。MAC がある場合は、エンコードとセグメント化を 1 つにまとめます
$25: Markelsoft HLSセグメンター: ただし、最終製品を得るために X.264 設定をいじる必要があるかもしれません。これは、メモ帳を使用して手動で行うことができます。それは大した仕事ではありません。
完全に無料にしたい場合は、次のものがあります。
エンコーディング: Handbrake、MeGui、何でも好きなもの。Android エンコーディング仕様に従ってください。H264 と AAC を使用します。プログレッシブ ダウンロードの設定/プリセットは使用しないでください。VBR ではなく CBR を使用し、フレームレートが可変ではなく一定であることを確認します。乗算で簡単に使用できるフレームレートを選択して、セグメント内のキーフレームの位置を確保できるようにします。
Apples Free ツールを使用してください: mediafilesegment、variantplaylistcreator など。Mediafilesegmenter は、必要なセグメントの大きさを尋ねます。デフォルトは 10 秒です。これで、デコーダーのキーフレームを設定して、各セグメントがキーフレームで始まるようにします。
例を 2 つ挙げます。
例 1:
- セグメンテーション サイズ: 10 秒
- フレームレート: もともと 29.97 可変、30 fps 固定にエンコード
- フレーム単位のキーフレーム距離: 30 x 10 秒 = 300 フレーム。300 フレームごとにキーフレームが必要です。
- アダプティブに推奨されるキーフレーム: 2 秒ごと
キーフレーム設定 2 * 30 = 60 フレーム。5 番目のキーフレーム (5 * 60) ごとにセグメントをリード
例 2:
- フレームレート: もともと 23.97 可変、24 fps 固定にエンコード
- セグメント サイズ: 8 秒
- セグメントに必要なキーフレーム: 8 * 24 = 192
- アダプティブ 2 秒 = 2 * 24 = 48 に推奨
- 4 番目のキーフレーム (4 * 48) ごとにセグメントをリード
オープン ソース ソリューションが必要な場合は、x264 と mp4box でこれを行うことができます。次のコマンドは、単一の品質/表現/レンディションを作成する方法の例です。
x264 --output intermediate_2400k.264 --fps 24 --preset slow --bitrate 2400 --vbv-maxrate 4800 --vbv-bufsize 9600 --min-keyint 48 --keyint 48 --scenecut 0 --no-scenecut --pass 1 --video-filter "resize:width=1280,height=720" inputvideo.mkv
次のステップは、エンコードされたコンテンツを mp4 に多重化することです。
MP4Box -add intermediate.264 -fps 24 output_2400k.mp4
次に、個々のセグメントとマニフェストを作成します。
MP4Box -dash 4000 -frag 4000 -rap -segment-name segment_ output_2400k.mp4
その後、他のいくつかの品質を作成し、 dash.jsなどのオープン ソース プレーヤーの 1 つでそれらを再生できます。
OSMFプレーヤー: http://www.osmf.com/
正直なところ、アダプティブ ストリーミングは言うまでもなく、これらすべてを行う簡単なソリューションはまったくありません。間違いなく、HTTP ストリーミングのエンコード、セグメント化、および配信を行うためのオールインワンのオープン ソース ソリューションはありません (同期されたキーフレームを使用したアダプティブ ストリーミングについては言及していません)。