まずL-SMASHから。
L-SMASHはISO Base Mediaファイルフォーマット及びMP4を含むその派生ファイルフォーマットを扱うクロスプラットフォームのライブラリです。これだけだと抽象的すぎてよくわかりませんが、その下に機能説明があります。
- β版レベルのMultiplexer(マルチプレクサ)及びDemultiplexer(デマルチプレクサ)として動作します。
- スタンドアローンな実行ファイルを利用して、いくつかの形式の映像及び音声をmuxすることができます。
上の方は何を言っているのかよくわかりませんが、最後の「ストリームのmux」のところは理解できます。
- 任意のボックス(アトム)をエクスポートしたり、任意の位置に書き出すことができます。
- カスタムI/O APIを提供しているため、ユーザーがメモリ上に入力や出力を行う処理を記述することが可能です。
- Mux直後にプログレッシヴダウンロード用の最適化が可能です。
- ムービーフラグメントによる出力が可能です。
- インデックス済み自己初期化可能なセグメント('dash')の作成が可能です。
- テストツール的な実行ファイルで以下に挙げるストリームをmuxすることができます。
- 映像
- AVC/H.264 | MPEG-4 Part10
- HEVC/H.265 | MPEG-H Part2
- SMPTE VC-1 Advanced Profile
- 音声
- MPEG-2 AAC および MPEG-4 AAC
- MPEG-1/2 Layer 1|2|3
- MPEG-4 ALS
- AMR-NB/WB
- AC-3およびEnhanced AC-3
- DTSおよびDTS-HD
L-SMASH自体はソースコードのみの提供で、公式なバイナリは配布されていません。コンパイルするにはC99のコンパイラが必要ですが、Visual C++(2017)のC99サポートは不完全なためコンパイルできるかどうかはわかりません。ソースアーカイブをダウンロードして展開すると L-SMASH.sln などのファイルがありますが、config.h がないとか lsmash.def がないとかのエラーが出てコンパイルはできませんでした。それ以上は調べていないので不明です。
L-SMASH WorksはこのL-SMASHにffmpegやlibavを使用して動作するaviutlなどで利用できるプラグインです。MSYS2とMinGW-w64などを使ってコンパイルされています。L-SMASH Works r935 release2では、L-SMASHがr1474、ffmpegが4.0.2でNVDECが使える(はず)とのことです。
L-SMASHのソースツリーをみると、boxdumper、muxer、remuxer、timelineeditorというのがあります。L-SMASH Worksではこれらがコンパイルされたものがありますので、単独で起動してみると、
boxdumper : L-SMASH isom/mov structual analyzer rev1474 f963b5a
muxer : L-SMASH isom/mov multiplexer rev1474 f963b5a
remuxer : L-SMASH isom/mov re-muliplexer rev1474 f963b5a
timelineeditor : L-SMASH isom/mov timeline editor rev1474 f963b5a
と出てきますが、それぞれが行うこと(あるいは行わないこと)が今ひとつわかりません。なので実際に使ってみます。
boxdumperは動画の構造を解析するツールで、構造解析した結果をテキストで書き出すものです。MP4ファイルを食わせてみると、以下のような出力を行います。
timelineeditorはMP4ファイルのタイムラインを編集するためのツールのようです。上のキャプチャにあるtimecodeなどをいじるためのもの、なのでしょうが、ドキュメントがないのでよくわかりません。たぶん規格にあたればわかるんでしょう。
muxer/remuxerですが、解説しているページを見つけました。Mux? Demux? Remux? Huh?です。
muxは要約すると2つもしくはそれ以上の信号を1つにまとめること。デジタルメディアファイルの世界では映像と、1つまたはそれ以上の音声トラック、字幕トラックをまとめることです。その他にもチャプタートラックなどもあります。
demuxはその逆で、muxされたファイルからストリームを分離します。
remuxは分離したものを再度muxすることです。なので、muxerはtimescaleなどを指定できますが、remuxerはできません。また、muxerは出力フォーマットを指定できますが、remuxerは指定できません。
いわば、muxerは分離されたビデオトラックとオーディオトラックを合成(マルチプレクス)するもので、remuxerはさらに追加でオーディオトラックを合成するときに使うもの、ということなのでしょう。
なので、すでにあるMP4ファイルにチャプターや字幕を「追加」したいときにはremuxerを使えばいいということです。
0 件のコメント:
コメントを投稿