| 開発者 | Xiph.Org Foundation、Josh Coalson、Erik de Castro Lopo |
|---|---|
| 初回リリース | 2001年7月20日 |
| 安定版リリース | 1.4.3 [1]
/ 2023年6月23日 |
| リポジトリ |
|
| 書かれた | C、C++ |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | コーデック |
| ライセンス | コマンドラインツール: GNU GPL ライブラリ: BSD |
| Webサイト | xiph.org/flac |
| ファイル名拡張子 |
.flac |
|---|---|
| インターネットメディアの種類 |
オーディオ/flac |
| 統一型識別子 (UTI) | org.xiph.flac |
| 魔法の数字 | フラク[2] |
| フォーマットの種類 | ロスレス オーディオ |
| 標準 | RFC9639の翻訳 |
| オープンフォーマット? | はい[3] |
| フリーフォーマット? | はい |
FLAC(/ f l æ k / ; Free Lossless Audio Codec)は、 Xiph.Org Foundationによって開発されたデジタルオーディオのロスレス圧縮用のオーディオコーディング形式であり、コーデック実装を含むリファレンスソフトウェアパッケージであるFLACツールを作成するフリーソフトウェアプロジェクトの名前でもあります。FLACのアルゴリズムで圧縮されたデジタルオーディオは、通常、元のサイズの50〜70%に縮小され、 [4]元のオーディオデータと同一のコピーに解凍されます。
FLAC は、ロイヤリティフリーのライセンスとフリーソフトウェアのリファレンス実装を備えたオープンフォーマットです。FLAC は、メタデータのタグ付け、アルバムカバーアート、高速シークをサポートしています。
歴史
開発は2000年にジョシュ・コールソンによって開始されました。ビットストリーム形式は、2001年3月31日にリファレンス実装のバージョン0.9がリリースされた時点で凍結されました。バージョン1.0は2001年7月20日にリリースされました。[5]
2003年1月29日、Xiph.Org FoundationとFLACプロジェクトは、FLACをXiph.orgの旗の下に組み込むことを発表しました。Xiph.orgは、Vorbis、Theora、Speex、Opusなどの他の無料圧縮フォーマットの本拠地です。[5] [6] [7]
バージョン1.3.0は2013年5月26日にリリースされ、その時点で開発はXiph.orgのgitリポジトリに移行されました。[8]
2019年にFLACはIETF標準として提案され、[9] 2024年12月にRFC 9639として公開されました。
デザイン
FLACは線形パルス符号変調データのロスレス符号化方式である。 [10]
ファイル構造
FLACファイルはマジックナンバー fLaC、メタデータ、エンコードされたオーディオで構成されています。[10]
エンコードされたオーディオはフレームに分割され、各フレームはヘッダー、データブロック、CRC16チェックサムで構成されています。各フレームは互いに独立してエンコードされています。フレームヘッダーは同期ワードで始まり、有効なフレームの始まりを識別するために使用されます。ヘッダーの残りの部分には、サンプル数、フレームの位置、チャンネル割り当て、オプションでサンプルレートとビット深度が含まれます。データブロックにはオーディオ情報が含まれます。[10]
FLACのメタデータはオーディオに先行します。サンプルレートやチャンネル数などのプロパティは常にメタデータに含まれています。また、アルバムカバーなどの他の情報も含まれる場合があります。[10] FLACは、トラックタイトルやアーティスト名などのテキストメタデータに Vorbisコメントを使用します。
エンコードとデコード
FLAC エンコード アルゴリズムは複数の段階から構成されます。最初の段階では、入力オーディオがブロックに分割されます。オーディオに複数のチャンネルが含まれている場合、各チャンネルはサブブロックとして個別にエンコードされます。次に、エンコーダは、単純な多項式を当てはめるか、一般的な線形予測コーディングを使用して、ブロックの適切な数学的近似値を見つけようとします。次に、長さがわずか数バイトの近似値の記述が書き込まれます。最後に、近似値と入力値の差 (残差) がライス コーディングを使用してエンコードされます。多くの場合、近似値の記述とエンコードされた残差は、パルス コード変調を使用する場合よりも少ないスペースを占めます。[10]
デコード処理はエンコードの逆のプロセスです。圧縮された残差が最初にデコードされます。[11] [12]次に、数学的近似の記述を使用して波形を計算します。結果は、残差と計算された波形を加算することによって形成されます。[13] [14] FLACはロスレス圧縮するため、デコードされた波形はエンコード前の波形と同一です。
2チャンネルステレオの場合、エンコーダはオーディオをジョイントエンコードすることを選択できます。チャンネルは、2つの入力チャンネルの差であるサイドチャンネルと、2つの入力チャンネルの合計であるミッドチャンネルに変換されます。ミッドチャンネルの代わりに、左チャンネルまたは右チャンネルをエンコードすることもできます。これは、場合によってはよりスペース効率が良い場合があります。[15]
リファレンスエンコーダーはストリーム全体に対して単一のブロックサイズを使用しますが、 [10] FLACではサンプル内のブロックサイズをブロックごとに変えることができます。
圧縮
圧縮量は、線形予測モデルの次数やブロック サイズなどのさまざまなパラメータによって決まります。圧縮量に関係なく、元のデータは常に完全に再構築できます。
ユーザーの利便性のため、リファレンス実装では9つの圧縮レベルを定義しています。これは、エンコードアルゴリズムのより技術的なパラメータのプリセットです。レベルは0から8までラベル付けされており、数字が大きいほど圧縮率が高くなりますが、圧縮速度は遅くなります。各圧縮レベルの意味は実装によって異なります。[16] [17]
FLACはエンコード速度を犠牲にしてデコード速度に最適化されています。ベンチマークでは、圧縮レベルが上がってもデコード速度にはほとんど変化がない一方で、デフォルトの圧縮レベル5を超えると、エンコード処理にレベル5に比べてかなり時間がかかり、スペースの節約もほとんどないことが示されています。[18]
実装
FLAC プロジェクトには、この形式のほかに、libFLAC と呼ばれる FLAC の無料かつオープンソースのリファレンス実装も含まれています。libFLAC には、FLAC データをエンコードおよびデコードする機能と、FLAC ファイルのメタデータを操作する機能が含まれています。C ++用の libFLAC のオブジェクト指向ラッパーであるlibFLAC++と、コマンドライン プログラムおよびも、リファレンス実装の一部です。
flacmetaflac
FLAC 形式は libFLAC と同様に、特許で保護されていないことが知られており、誰でも自由に FLAC の独自の実装を作成できます。
他のフォーマットとの比較
FLAC は、 ZIPやgzipで使用されるDEFLATEなどの汎用ロスレス アルゴリズムとは異なり、オーディオ データを効率的にパッキングするために特別に設計されています。 ZIP では CD 品質のオーディオ ファイルのサイズが 10~20% 削減されますが、FLAC ではオーディオの特性を利用してオーディオ データのサイズを 40~50% 削減できます。[引用が必要]
FLAC が他のロスレス形式と比較した技術的な強みは、圧縮レベルに関係なく、ストリーミングとデコードを迅速に行うことができる点にあります。[引用が必要]
FLAC はロスレス方式であるため、オーディオ コレクションを保存したい CD やその他のメディアの所有者のアーカイブ形式として適しています。元のメディアが紛失、破損、または摩耗した場合でも、オーディオ トラックの FLAC コピーがあれば、元のデータの正確な複製をいつでも復元できます。同じデータの非可逆コピー (例: MP3 ) から正確に復元することは不可能です。FLAC はロスレスであるため、通常は1 つの非可逆形式から別の形式へのトランスコーディングに伴う品質の低下がなく、MP3 などへのトランスコーディングに非常に適しています。CD をリッピングするときに、オプションでCUE ファイルを作成できます。CD が読み取られて FLAC ファイルに完全にリッピングされた場合、CUE ファイルを使用して、トラック順序やプリギャップなど、元の CD とオーディオ データが同一で、歌詞やCD+Gグラフィックなどの追加データが含まれないオーディオ CD を後で書き込むことができます。[19]しかし、使用される書き込みプログラムによっては、CUEシートに保存されたメタデータから CD-Textを復元し、空のCD-Rメディアに新しいコピーを書き戻すことができる場合があります。
採用と実装
リファレンス実装
FLAC のリファレンス実装は、libFLACコア エンコーダー & デコーダー ライブラリとして実装されており、主な配布可能プログラムはflaclibFLAC API のリファレンス実装です。このコーデックAPI は、C++ でも libFLAC++ として利用できます。FLAC のリファレンス実装は、ほとんどのUnix ( Solaris、BSDなど) およびUnix 系( Linuxを含む)、Windows、BeOS、OS/2オペレーティング システムなど、多くのプラットフォームでコンパイルできます。autoconf / automake、MSVC、Watcom C、Xcode用のビルド システムがあります。現在、libFLAC にはマルチコアサポートはありませんが、 GNU parallelなどのユーティリティやさまざまなグラフィカル フロントエンドを使用して、エンコーダーの複数のインスタンスを起動できます。
ハードウェアとソフトウェア
ポータブルオーディオ機器や専用オーディオシステムにおけるFLACの再生サポートは、MP3 [20]や非圧縮PCMなどの形式に比べて制限されています。FLACのサポートは、 Windows 10 [21]、Android [22]、macOS、iOS [23]にデフォルトで含まれています。
使用される再生ソフトウェアに応じて、使用されるオペレーティング システムとは関係なく、さまざまな他のコンテナーがサポートされます。
アーカイブでの使用
FLAC形式のRFC 9639への標準化プロセスは、アーカイブと保存という特定のユースケースを念頭に置いて進められました[27]。国立公文書記録管理局は、FLACをデジタルオーディオの推奨形式として挙げています[28]。
参照
参考文献
- ^ 「FLAC 1.4.3がさらなる最適化を施してリリース、PowerPC固有のコードを削除」。2023年6月23日。 2024年2月19日閲覧。
- ^ Coalson, Josh. 「FLAC – フォーマット」Xiph.Org Foundation . 2013年4月4日閲覧。
「fLaC」は、ASCII の FLAC ストリーム マーカーで、ストリームのバイト 0 が 0x66 で、その後に 0x4C 0x61 0x43 が続くことを意味します。
- ^ 「PlayOgg!」.フリーソフトウェア財団. 2010年3月17日. 2013年10月1日閲覧。
- ^ 「Flac 圧縮率の検討」Steven Pigeon、2012 年 2 月 7 日。2018年5 月 10 日閲覧。
- ^ ab 「特集」。Xiph.Org Foundation 。 2023年11月23日閲覧。
- ^ 「FLAC が Xiph.org に参加」Xiph.org Foundation 2003 年 1 月 29 日2009 年8 月 31 日閲覧。
- ^ Plant, Emmett. 「FLAC が Xiph に参加!」Xiph.org Foundation。 2008 年 5 月 29 日時点のオリジナルよりアーカイブ。2009 年8 月 31 日閲覧。
- ^ 「FLAC – changelog」Xiph.org Foundation . 2013年10月15日閲覧。
- ^ ファン・ビューデン、マルティン;ウィーバー、アンドリュー。無料のロスレスオーディオコーデック。 ID ドラフト-ietf-cellar-flac 。2023 年5 月 14 日に取得。
- ^ abcdef Coalson, Josh. 「FLACフォーマットについて」 。 2022年2月13日閲覧。
- ^ "stream_decoder.c". libFLAC . 2022年2月19日閲覧。
- ^ libFLAC/stream_decoder.c、2734行目。
- ^ "lpc.c". libFLAC . 2022年2月19日閲覧。
- ^ libFLAC/lpc.c、813~820行目。
- ^ 「FLACフォーマット仕様」。FLAC 。 2022年2月19日閲覧。
- ^ 「CUETools FLAC エンコーダーの比較」。CUETools Wiki。2013年5 月 27 日閲覧。
- ^ 「エンコード設定」JRiver Media Centre . 2013 年5 月 27 日閲覧。
- ^ 「ロスレスコーデックの比較」。Synthetic -soul.co.uk。2009年2月2日時点のオリジナルよりアーカイブ。 2016年11月26日閲覧。
- ^ 「FAQ」. FLAC . 2014年9月23日閲覧。
- ^ 「Links」. FLAC . 2009年3月24日閲覧。
- ^ 「オーディオマニア歓喜:Windows 10 はシステム全体で FLAC をサポートする」PC World 。 2015 年7 月 10 日閲覧。
- ^ 「Android でサポートされているメディア形式」。Android.com。2024年 9 月 27 日。2024年12 月 20 日に閲覧。
- ^ 「iOS 11 により iPhone と iPad でロスレス FLAC オーディオ再生が可能に」idownloadblog.com 2017 年 6 月 9 日2017 年9 月 26 日閲覧。
- ^ 「MIME タイプとファイル拡張子 - XiphWiki」。
- ^ 「FLAC と Ogg FLAC」。
- ^ 「Android プラットフォームは OGG コンテナ形式 (OGA) を完全にサポートしていません [36906426] - 一般に公開 - 問題トラッカー」。
- ^ 「ロスレスアーカイブとリアルタイム伝送のためのコーデックエンコーディング」。
- ^ 「付録 A: ファイル形式の表 | 国立公文書館」。
外部リンク
- 公式サイト
- ロスレスオーディオフォーマットの比較: FLAC を他の 5 つのロスレスオーディオフォーマットと比較
- ロスレス比較: Hydrogenaudioの FLAC と他の 7 つのロスレス オーディオ形式の比較
- GSMArena 電話検索: FLAC をサポートするすべての電話とタブレット
