3

問題:

動画をストリーミングする iOS アプリをアプリ ストアに受け入れるには、HLS バージョンが必要です。

どうしたの?

Android は HLS を十分にサポートしていません。また、他の理由から、同じコンテンツの MP4 ファイルと HLS ファイルを保存する必要があります。

MP4 と HLS の違いは何ですか? また、なぜ両方を保存する必要があるのですか?

MP4 は、H.264 ビデオと AAC オーディオを格納して HTML 5 ブラウザとの最適な互換性を確保するためのコンテナです。ブラウザが同じ MP4 ファイルを使用する HTML 5 の MP4 ビデオをサポートしていない場合、jsvideo プレーヤーには多くの場合、フラッシュ フォールバックがありますが、フラッシュ経由で再生されます。

HLS は、テキスト ファイル (.m3u8) にプレイリストへの参照が含まれるプロトコルです。プレイリスト自体は、mpeg-2 トランスポート ストリームである .ts ファイル (または m2ts) を参照します。mpeg-2 ビデオと混同しないでください。.ts ファイルは、同じ H.264 ビデオと AAC オーディオのコンテナーです。

なぜ私は不平を言っているのですか?

  1. MP4ファイルからHLSファイルやプレイリストを作成するのに時間がかかる

  2. (最も重要なこと) 現在、S3 に 2 倍のデータを保存しています

  3. なぜ気にする必要があるのですか?S3 の請求額が MP4 と HLS の両方を保存するために月額 10,000 ドルである場合、現在は 5,000 ドルです。別の言い方をすれば、MP4 でデータを保存するために 10 万ドルを支払っている場合、MP4 と HLS の両方で同じコンテンツを保存するには 20 万ドルかかることになります。

    私が欲しいものは?

.ts ファイルのみを保存し、その 1 つのファイルでデスクトップ ユーザー、iOS ユーザー、および Android ユーザーの両方にサービスを提供したいと考えています。

出来ますか?

HLS では、1 つの大きなファイルではなく、5 ~ 10 秒の .ts セグメントが必要ではないですか?

IETF ドラフト 7 およびプロトコルのバージョン 4 の時点で、HLS はタグ EXT-X-BYTERANGE をサポートしています。これにより、メディア セグメントをより大きな URL のバイト範囲 (サブ範囲) として指定できます。

.ts ファイルは HTML5 ビデオと互換性がありますか?

どうやらそうではありません。これらは MP4 とは異なるコンテナーですが、同じビデオおよびオーディオ コンテンツが含まれています。生のビデオ/オーディオ データを一度保存​​し、必要に応じて正しいコンテナを使用する方法を検討する価値があります。ブラウザーが HTML 5 MP4 をサポートしていない場合、JS ビデオ プレーヤーがその場で HTML 5 MP4 ファイルを Flash ビデオに変換できるのであれば、なぜ M2TS データで同じことができないのでしょうか?

私はある程度無知かもしれませんが、誰かがこの問題に光を当て、解決策を提示できるかもしれません.

4

1 に答える 1

6

現在、良い解決策はありません。

少し背景。

ビデオ ストリーミングには、RTP/RTMP/RTSP などのカスタム プロトコルが必要でした。1 つは標準の Web トラフィック用の HTTP ベースで、もう 1 つは標準の Web トラフィック用です。ビデオを小さなチャンクに分割し、HTTP 経由でプレーヤーに提供するというアイデアが生まれました。この方法では、特別なサーバー/ソフトウェアは必要なく、構築されていた巨大な HTTP CDN を利用できます。加えて。ビデオはチャンクに分割されているため、同じビデオをさまざまな品質/ファイル サイズにエンコードできます。その後、プレーヤーは現在の帯域幅で最高品質のビデオを選択できます。これは、ネットワークの状態が絶えず変化するため、モバイルにとって完璧なソリューションでした。いくつかの競合する標準が開発されました。最初に市場に出たのは Move Networks でした [要出典]。このデザインは、Microsoft (Smooth Streaming) と Apple (HTTP ライブ ストリーミング、別名 HLS) によってコピーされました。Microsoft は DASH を優先してスムーズ ストリーミングを段階的に廃止しています。DASH は、将来のデフォルトのストリーミング ソリューションになりそうです。ただし、そのデザイン・バイ・コミティのアプローチのために、基本的に数年間コミティにとどまっています. さて、この数年間で、Apple は何百万もの iOS デバイスを販売しました。したがって、HLS を単に中止することはできません。では、なぜ誰もが HLS を使用しないのでしょうか? 3 つの理由が考えられます。2) トランスポート ストリームは複雑なファイル形式です。3) トランスポート ストリームに特許が課せられる。MP4 は特許を取得していませんが、適応能力もありません。これにより、2G ネットワークでのユーザー エクスペリエンスが低下します。iPhone 1 がサポートする唯一のネットワーク。AT& 当時の T は、フル ビットレートのビデオをストリーミングすることを望んでいませんでした。HLS は妥協案でした。これらはすべて、HTML5 よりも前のものです。そのため、ビデオ タグはその設計においても考慮されていませんでした。

あなたのポイントに対処する:

1) MP4ファイルからHLSファイルやプレイリストを作成するのに時間がかかる

これはプログラミング Web サイトです。自動化します。

2) 現在、S3 に 2 倍のデータを保存しています [sic] .ts ファイルのみを保存し、その 1 つのファイルでデスクトップ ユーザー、iOS ユーザー、および Android ユーザーの両方にサービスを提供したいと考えています。

あなたと私の両方の人:)。

可能な解決策。

1) Android の実装の具体的な問題点は何ですか? (古いデバイスの不足を除く)

2) JW プレーヤーは HLS をプレイできます (Android では不明)

3) オンデマンドのサーバー側トランスマックス。

HLS では、1 つの大きなファイルではなく、5 ~ 10 秒の .ts セグメントが必要ではないですか?

バイト範囲を実行できますが、関心のあるすべてのデバイスがそれをサポートしていることを確認する必要があります。

ブラウザーが HTML 5 MP4 をサポートしていない場合、JS ビデオ プレーヤーがその場で HTML 5 MP4 ファイルを Flash ビデオに変換できるのであれば、なぜ M2TS データで同じことができないのでしょうか?

彼らは変換しません。Flash はネイティブで mp4 をサポートします。TS を AS3/JS に変換することができます。私はそれをやった。JWプレーヤーはブラウザーでTSを変換できます。video.js でもできるかもしれません。

于 2013-09-25T00:09:24.957 に答える