web-dev-qa-db-ja.com

ストリーミング可能でシーク可能なMP4を作成するにはどうすればよいですか?

シークとストリーミングをサポートするMP4を作成したいと思います。 DASHは、セグメントシークポイントが私のアプリケーションでは機能しない外部ファイル(MPD)に保存されていることを除いて、私が望むもののようです。 MP4に含まれるメタデータを探す必要があります。

次に近いのは、mfraボックスで断片化されたMP4のようです。これはうまくいくと思いますが、十分にサポートされていないようです(mplayerとtotemがシークに失敗し、最近のffplayが機能します)。主要なアプリケーションはストリーミング(シーク機能付き)ですが、「標準」プレーヤーでファイルからビデオを再生する機能をあきらめるのは気が進まないでしょう。

ストリーミング可能でシーク可能で、標準のビデオプレーヤー内で再生できるMP4を作成する方法はありますか?

標準のビデオプレーヤーで再生する機能を忘れた場合、mfraが最善の方法ですか?

編集:ストリーミングとは、HTTPプログレッシブダウンロードを意味します。

1
user64996

HTTP経由でMP4ファイルを検索することは、多かれ少なかれ簡単に行うことができます。

ファイルが断片化されていない場合、すべてのシーク情報は「moov」ボックスにあるため、問題はありません。これは mp4box.js が示すものです。データが適切に編成されていない場合、複数のHTTPバイト範囲要求を実行する必要があります。ヘッダーボックスが最初(ftyp、moov ...)で、メディアデータがインターリーブされていると簡単です。 MP4Box このようなファイルを生成するために使用できます:

MP4Box -add file.mp4 output.mp4

ファイルが断片化されている場合、実際にシーク情報はファイルに沿って分散され、「mfra」ボックスを使用できますが、十分にサポートされておらず、信頼性もありません。

慎重に行うと、セグメンテーション(DASHで使用される)を使用してHTTPシーク可能なファイルを作成することもできます。ファイルをセグメント化して単一のセグメントファイルを強制すると、すべてのデータが単一のファイルになります(複数のセグメントファイルではありません)。 'sidx'ボックスを追加すると、ファイルにインデックス情報が含まれます(MPDは不要)。両方を使用するには、MP4BoxでDASHオンデマンドプロファイルを使用してファイルをセグメント化します。

MP4Box -dash 1000 -profile ondemand file.mp4 
1
cconcolato