ミュクサーはマルチメディアストリームを特定の種類のファイルに 書き出すことを可能にする Libav での構成される要素です。
Libav のビルドを構成する際、既定ではサポートしているミュクサーが全て
有効になります。全ての利用可能なミュクサーを configure オプション
--list-muxers
を使って一覧できます。
configure オプション --disable-muxers
を使って全てのミュクサーを
無効にできます。そしてオプション --enable-muxer=MUXER
/
--disable-muxer=MUXER
で1つのミュクサーを選択的に有効 /
無効にできます。
ff* ツールの -formats
オプションは有効になっているミュクサーの
一覧を表示します。
現在利用可能なミュクサーのいくつかの説明は以下の通りです。
CRC (Cyclic Redundancy Check) 検査形式。
このミュクサーは全ての入力音声および映像フレームの Adler-32 CRC を計算し表示します。既定では、CRC を計算する前に音声フレームは 符号付き16ビット raw audio に変換され、映像フレームは raw video に変換されます。
ミュクサーの出力は次の形をした単一の行からなります: CRC=0xCRC、ただし CRC は全てのデコードされた入力フレーム についての CRC を含む8桁になるように0埋めされた16進数です。
入力の CRC を計算し、それをファイル ‘out.crc’ に保存する 例として:
avconv -i INPUT -f crc out.crc
次のコマンドで CRC を標準出力に書き出すことができます:
avconv -i INPUT -f crc -
avconv
では、音声および映像コーデックおよび形式を指定することで
各フレームに対する出力形式を選択できます。PCM unsigned 8-bit に変換された
入力音声および MPEG-2 video に変換された入力映像の CRC を計算する 例として、
次のコマンドを使ってください:
avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
framecrc ミュクサーも参照してください。
フレームごとの CRC (Cyclic Redundancy Check) 検査形式。
このミュクサーは各デコードされた音声および映像フレームに対する Adler-32 CRC を計算し表示します。既定では、CRC を計算する前に 音声フレームは符号付き16ビット raw audio に変換され、映像フレームは raw video に変換されます。
ミュクサーの出力は各音声および映像フレームにつき1行からなります: stream_index, frame_dts, frame_size, 0xCRC、 ただし CRC はデコードされたフレームの CRC を含む0埋めされた 8桁の16進数です。
入力のデコードされた各フレームの CRC を計算し、それをファイル ‘out.crc’ に保存する例として:
avconv -i INPUT -f framecrc out.crc
次のコマンドで各デコードされたフレームの CRC を標準出力に書き出せます:
avconv -i INPUT -f framecrc -
avconv
では、音声および映像コーデックおよび形式を指定することで
各フレームに対する出力形式を選択できます。PCM unsigned 8-bit に変換された
デコードされた入力音声フレームおよび MPEG-2 video に変換されたデコードされた
入力映像フレームの CRC を計算するためには、次のコマンドを使ってください:
avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
crc ミュクサーも参照してください。
画像ファイルのミュクサー。
このミュクサーは映像フレームを画像ファイルに書き出します。
出力ファイル名はパターンによって指定されます。このパターンは 順番に番号が振られているファイルの並びを生成するために使えます。 パターンは文字列 "%d" または "%0Nd" を含めることができ、 これがこのパターンにマッチする各ファイル名の連番を表す文字の位置を 指定します。"%0Nd" という形が使われた場合、各ファイル名の 番号を表す文字列は0で埋められており、N は番号を表す0で埋められた 桁の総数です。リテラル文字 ’%’ は文字列 "%%" を含むパターンで指定 されます。
このパターンが "%d" または "%0Nd" を含む場合、このパターンによって 指定されたファイル列の最初のファイル名は1を含み、あとに続く全ての番号は 連続していることになります。
このパターンにはファイルに含まれる画像の形式によって自動的に決まる 接尾辞を含んでもよいです。
例えばパターン "img-%03d.bmp" は ‘img-001.bmp’, ‘img-002.bmp’, ..., ‘img-010.bmp’, などの形をしたファイル名の列にマッチします。 パターン "img%%-%d.jpg" は ‘img%-1.jpg’, ‘img%-2.jpg’, ..., ‘img%-10.jpg’, などの形をしたファイル名の列にマッチします。
次の例は入力映像から各秒につき1つの画像を取得し
ファイルの列 ‘img-001.jpeg’, ‘img-002.jpeg’, ...を
を作るための avconv
の使い方を示します;
avconv -i in.avi -vsync 1 -r 1 -f image2 'img-%03d.jpeg'
avconv
では、-f
オプションで形式が指定されておらず、
かわりに出力ファイル名が画像ファイル形式を指定している場合は、
image2 ミュクサーが自動的に選択されることにに注意してください。
ですので上のコマンドは次のように書けます:
avconv -i in.avi -vsync 1 -r 1 'img-%03d.jpeg'
また、パターンは "%d" または "%0Nd" を含んでいなくてもよく、 例えば入力映像から単一の画像ファイル ‘img.jpeg’ を作成するには 次のコマンドが使えます:
avconv -i in.avi -f image2 -frames:v 1 img.jpeg
mov/mp4/ismv ミュクサーはフラグメンテーションをサポートします。通常、
MOV/MP4 ファイルは1つのロケーションに保存されている全てのパケットに
ついてのあらゆるメタデータを持っています(ファイルの末尾に書かれており、
より良い再生のために qt-faststart
ツールを使って先頭に動か
せます)。フラグメント化したファイルは多くのフラグメントからなり、
パケットとこれらのパケットについてのメタデータは一緒に保存されます。
フラグメント化されたファイルを書き出すと、書き出しが割り込まれたとして
もデコードできる(通常の MOV/MP4 ファイルでは適切に終了しないとデコード
できません)上、とても長いファイルを書き出すときにより少ないメモリしか
要さない(なぜなら通常の MOV/MP4 ファイルでは、ファイルを閉じるまでに
メモリ上で1つ1つのパケットについての情報を保存するからです)という
利点があります。欠点は他のアプリケーションとの互換性がより低い点です。
フラグメンテーションは、どのようにファイルをフラグメントに分けるかを 定義した AVOptions の1つを設定することで有効になります。
各映像キーフレームで新しいフラグメントを開始する
durationマイクロ秒の長さのフラグメントを作成する
sizeバイトまでのペイロードデータを含むフラグメントを作成する
いつフラグメントに分けるかをマニュアルで選択する caller を許可する、
av_write_frame(ctx, NULL)
を呼ぶことでそれまでに書き出された
パケットとともにフラグメントを出力する。(これは avconv
からではなく、libavformat と統合された他のアプリケーションでのみ
有用)
durationマイクロ秒より短い時間のフラグメントを作成しない。
複数の条件を指定した場合、指定された条件のうちの1つが満たされたときに
フラグメントが切り出されます。これについての例外は
-min_frag_duration
で、その他の適用条件が満たされていなければ
なりません。
加えて、出力ファイルを書き出すやり方はその他の少数のオプションを 通じて調節できます:
サンプルの記述することなしに、先頭の moov アトムを直接ファイルの 最初に書き出す。一般に、通常の MOV/MP4 ファイルとして、mdat/moov ペアはファイルの最初に書き出され、ファイルのごく一部のみを占める。 このオプションを設定した場合、先頭の mdat アトムはなくなり、moov アトムはトラックだけを記述しその持続時間は0となる。
このオプションを設定して書き出したファイルは QuickTime では動作しない。 ismv (Smooth Streaming) ファイルを書き出す際、このオプションが暗黙に設定される。
各トラックごとに別々の moof (movie fragment)アトムを書き出す。通常、 全てのトラックについてのパケットが1つの moof アトムに書き出される(これは若干 効率的になる)が、このオプションが設定されると、ミュクサーは各トラックについて 1つの moof/mdat ペアを書き出し、トラックを分離しやすくする。
ismv (Smooth Streaming)ファイルを書き出す際、このオプションが暗黙に設定される。
このミュクサーで、IIS 上のパブリッシングポイントに Smooth Streaming コンテントを 実時間でプッシュすることができます。例:
avconv -re <normal input/transcoding options> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
MPEG トランスポートストリームミュクサー。
このミュクサーは ISO 13818-1 と ETSI EN 300 468 の一部を実装しています。
このミュクサーのオプションは以下のとおりです:
original_network_id を設定します(既定では 0x0001)。 これは DVB でのネットワークの一意な識別子です。主な利用法は パス Original_Network_ID, Transport_Stream_ID を通じたサービスの 一意な識別にあります。
transport_stream_id を設定します(既定では 0x0001)。これは DVB での transponder を識別します。
DVB での program として知られている service_id を設定します(既定では 0x0001)。
PMT のための最初の PID を設定します(既定では 0x1000, 最大で 0x1f00)。
データパケットのための最初の PID を設定します(既定では 0x0100, 最大で 0x0f00)。
mpegts ミュクサーで認識できるメタデータの設定は service_provider
と service_name
です。これらが設定されていなければ、
service_provider
の既定値は "Libav" であり、
service_name
の既定値は "Service01" です。
avconv -i file.mpg -c copy \ -mpegts_original_network_id 0x1122 \ -mpegts_transport_stream_id 0x3344 \ -mpegts_service_id 0x5566 \ -mpegts_pmt_start_pid 0x1500 \ -mpegts_start_pid 0x150 \ -metadata service_provider="Some provider" \ -metadata service_name="Some Channel" \ -y out.ts
Null ミュクサー。
このミュクサーは出力ファイルを全く生成しません。主にテストや ベンチマークの目的で有用です。
例えば、avconv
でのデコーディングのベンチマークを取るには、
次のコマンドが使えます:
avconv -benchmark -i INPUT -f null out.null
上のコマンドは ‘out.null’ ファイルを読み書きしませんが、
しかし avconv
の構文で必要とされている出力ファイルを指定している
ことに注意してください。
あるいはこのコマンドを次のようなに書くこともできます:
avconv -benchmark -i INPUT -f null -
Matroska コンテナーミュクサー。
このミュクサーは matroska および webm コンテナー仕様を実装しています。
このミュクサーが理解できるメタデータ設定は以下のものです:
シングルトラックに与える名前
Matroska 言語フォームでトラックの言語を指定します
シングル映像トラックでの2つのビューのステレオ 3D レイアウト
映像はステレオでない
Both views are arranged side by side, Left-eye view is on the left
Both views are arranged in top-bottom orientation, Left-eye view is at bottom
Both views are arranged in top-bottom orientation, Left-eye view is on top
Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first
Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first
Each view is constituted by a row based interleaving, Right-eye view is first row
Each view is constituted by a row based interleaving, Left-eye view is first row
Both views are arranged in a column based interleaving manner, Right-eye view is first column
Both views are arranged in a column based interleaving manner, Left-eye view is first column
All frames are in anaglyph format viewable through red-cyan filters
Both views are arranged side by side, Right-eye view is on the left
All frames are in anaglyph format viewable through green-magenta filters
Both eyes laced in one Block, Left-eye view is first
Both eyes laced in one Block, Right-eye view is first
例えば、以下のコマンドラインを使って 3D WebM クリップを作成できます:
avconv -i sample_left_right_clip.mpg -an -c:v libvpx -metadata STEREO_MODE=left_right -y stereo_clip.webm
基本的なストリームセグメンター。
セグメンターミュクサーはほぼ固定の期間にいくつかの分かれたファイルにストリームを 出力します。出力ファイルのパターンは image2 と同様のやり方で設定すること ができます。
各セグメントは、映像ストリームがあれば、映像のキーフレームから始まります。 このセグメントミュクサーは単一の定数フレームレートの映像で一番うまく働きます。
オプションで、作成されたセグメントの箇条書きリスト(セグメントごとに1行)を 生成することができます。
内部のコンテナフォーマットを上書きします、既定ではファイル名の拡張子から 推測されます。
セグメントの期間を t 秒間と設定します。
name という名前でリストファイルを生成します。
size 個のエントリーに逹したらリストファイルを上書きします。
limit に達したらセグメントインデックスを折り返します。
avconv -i in.mkv -c copy -map 0 -f segment -list out.list out%03d.nut
MP3 ミュクサーは先頭に ID3v2 ヘッダーをつけて(そしてオプションで ID3v1 タグを末尾
につけて)生の MP3 ストリームを書き出します。IDv2.3 と ID3v2.4 に対応しており、
id3v2_version
オプションでどちらを使うのか制御します。レガシーの ID3v1
タグは既定では書き出されませんが、write_id3v1
オプションで有効にできます。
シーク可能な出力のために、このミュクサーは Xing フレームも先頭に書き出します。 これはファイル内のフレームの数を含みます。これは VBR ファイルの時間幅を計算する ために便利です。
このミュクサーは画像(APIC フレーム)を添付した ID3v2 を書き出すことに対応しています。 この画像は単一のパケットをもつ映像ストリームの形でミュクサーに渡されます。そういった ストリームはいくらあってもよく、それぞれ単一の APIC フレームに対応します。 ストリームメタデータタグである title と comment は APIC での description と picture type にそれぞれ対応づけられます。許されている 画像の種類については http://id3.org/id3v2.4.0-frames を見てください。
これらの APIC フレームは先頭に書き出されなくてはならず、ミュクサーがこれらの画像 全てを取得するまで音声フレームをバッファすることに注意してください。したがって、 過度のバッファリングを避けるために可能な限り早めに画像を提供するようにしてください。
例:
ID3v2.3 ヘッダーと ID3v1 フッターをつけて mp3 を書き出す:
avconv -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
mp3 に画像を添付する:
avconv -i input.mp3 -i cover.png -c copy -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3