FLV は Flash Video であり、Adobe の Flash Player がウェブブラウザー内で動画を再生するために使用していた形式です。Flash を開発した企業である Macromedia によって作られ、2005 年に Adobe が Macromedia を買収した際に Adobe に引き継がれました。およそ 10 年間、オンライン動画はこの形式が中心でした。その期間にブラウザーで視聴されたクリップは、高い確率で FLV として配信されていました。Adobe は 2020 年末で Flash Player のサポートを終了し、ブラウザーも対応をやめたため、現在はウェブページ上で FLV を再生することはできません。ただしファイル自体が消えたわけではありません。ダウンロードフォルダやアーカイブに残っており、デスクトップのメディアプレーヤーでは今でも再生できます。
FLV ファイルの構成
FLV は「保存」よりも「ストリーミング」を前提に作られたため、非常にシンプルな設計になっています。短いヘッダーでファイルを識別し、音声、動画、またはその両方を含むかを示します。その後ろはすべてタグの連なりで構成されており、それぞれのタグは種類、タイムスタンプ、ペイロードを持つ小さなパケットです。オーディオタグ、ビデオタグ、スクリプトタグが時間順に並べられ、プレーヤーはそれを順番に読み込むだけです。中央集約されたインデックスは存在しないため、FLV ではシーク操作がぎこちなくなりがちです。
コンテナ自体は圧縮を行いません。初期の FLV ファイルでは動画に Sorenson Spark が使われ、後には On2 VP6 コーデックが使われるようになり、さらに Flash Player が対応してからは、H.264 動画と AAC 音声が使われました。いずれも非可逆圧縮です。最終的に Adobe は、一般的な MP4 と同じ構造を土台とした後継形式として F4V を導入しました。
FLV ファイルに含まれるメタデータ
FLV のメタデータのほとんどは、ファイルの先頭付近にある 1 つのスクリプトタグ内にまとまっており、通常 onMetaData という名前が付けられています。これは名前と値のリストで、Flash がスクリプトとのやり取りに使っていたデータ形式で記述されており、プレーヤーは再生前にこれを読み込んで自分自身を設定します。よく見られるエントリは次のとおりです。
- duration(再生時間)、width と height(幅と高さ)、そしてフレームレート。
- video data rate と audio data rate(動画および音声のデータレート)、そして動画・音声コーデックを表す数値 ID。
- audio sample rate(音声サンプリングレート)、サンプルサイズ、音声がステレオかどうか。
- ファイルサイズと、ファイルの末尾までシークできるかどうかを示すフラグ。
- キーフレームの位置とその時刻のリスト。これによって、そもそもシークが可能になっています。
- メタデータを書き込んだ、または挿入したアプリの名前。メタデータブロックがないファイルに対して、このブロックだけを追加する専用プログラムも存在していました。
一部のファイルには、2 つ目のスクリプトタグが含まれており、その中に XMP パケットが格納されています。XMP は Adobe が自社製品全体で利用している構造化テキスト形式で、そこには人が入力したタイトル、作成者、説明、著作権表示を含めることができます。
FLV には「カメラのメタデータ」という概念が一切ありません。EXIF ブロックも、カメラのメーカー名や機種名も、レンズ情報や露出データも、GPS 項目もありません。位置情報は、Flash Video ファイルが記録することを想定していなかったのです。由来を示す痕跡は、書き込みに使われたアプリ名と、XMP パケットに含まれる内容だけです。
知っておくべきよくある欠落もあります。再生時間とファイルサイズは、ファイル全体が確定した時点で書き込まれます。そのため、ライブ配信をキャプチャして保存した録画では、それらが欠落していたり、0 のままになっていることがよくあります。これが、一部のプレーヤーで FLV のタイムラインが表示されず、早送りやシークができない理由です。プレーヤーが必要とする情報が、そもそも書き込まれていないのです。
現在 FLV をどう扱うか
FLV は、現役の形式ではなくアーカイブ用の形式として扱ってください。すでに存在していたプラットフォームがなくなっているため、新しく FLV で作成すべきものはありません。
MP4 はあらゆる面で後継となる形式です。ブラウザーやスマートフォンで再生でき、正しくシークでき、より多くのメタデータを格納できます。ただし変換方法は重要です。すでに H.264 動画と AAC 音声を含む FLV であれば、通常は MP4 にそのままリマックス(再多重化)でき、ラッパーを書き換えるだけで画質はビット単位で変わりません。一方、Sorenson Spark や VP6 を使用した古いファイルは再エンコードが必要になり、非可逆圧縮がもう一度かかります。映像が重要な場合は、変換後のコピーだけでなく、元のファイルも必ず保管しておいてください。