ファイル全体をダウンロードせずに ogg ファイルの再生時間を取得するにはどうすればよいですか? HTML5 タグと VLC の両方が、ファイル全体をダウンロードすることなく、URL をロードした直後に再生全体の長さを表示できるため、これが可能であることはわかっています。
ヘッダーまたは私が読むことができるものはありますか?たぶん、おおよその再生時間を取得するためにファイルサイズで割ることができるビットレートでさえ?
残念ながら、これを達成する方法はないようです。
Mozilla のOgg メディア用のサーバーの構成は非常に有益です。基本的:
X-Content-Duration
ヘッダーを使用します - ヘッダーがある場合は Web サーバーから送信されます。これは、あなたが挙げた HTML5 オーディオ ストリーミングの例を説明しています。不足している場合は、Content-length
サンプル レートは、識別ヘッダー (最初のヘッダー パケット) に格納されます。仕様を参照して、セクション「4.2 ヘッダーのデコードとデコードのセットアップ」に進んでください。
これは可能です。これを行う方法は、HTTP レンジ リクエストを使用してファイルの末尾を取得し、最後の Ogg ページを見つけて、そこからタイムスタンプを抽出することです。これは、ファイルがすべて同じ長さの連続したストリームで構成されている (つまり、連鎖がない) こと、およびストリーム時間が 0 から始まることを前提としています (そうでない場合は、ストリームの先頭をデコードし、そのタイムスタンプを最後のタイムスタンプから差し引く必要があります)。 . Ogg Pagegranlepos フィールドからのタイムスタンプのデコードは、コーデック固有です (たとえば、Vorbis の場合、サンプル数として表されます)。
または、Ogg ファイルにOgg Skeletonメタデータが含まれている場合は、それを直接読み取って、ファイルの長さを判断できます。
これは、データ自体をダウンロードしないと不可能です。関連キーのS3メタデータの一部として関連情報を指定できます。したがって、実際にデータをダウンロードする前に、メタデータをイントロスペクトするように書き込むことができます。