
これにより、MP4Boxを介すことで削がれるコンテナとしての一部情報を保持することが可能となり、将来的にはMP4周りの処理に関してMP4Boxを置き換えるライブラリとなりそうです。
以下にビルド方法、各バイナリの簡易説明、使い方を記載しておきます(Windowsバイナリあり)。
各バイナリの簡易説明
L-SMASH Windowsバイナリ
最後に
ソース取得(もしくはアーカイブ解凍)終了後、L-SMASHディレクトリへ移動してmakeすると audiomuxer、boxdumper、remuxer のWindowsバイナリが出来上がります(configure不要)。
コンパイルオプションを意図して変えたい方は Makefile を直接編集してみてください。とはいえ、コンテナ入出力(ハードウェア的にはメモリやディスクI/O)が主要な処理であるため、ビルド時の最適化に労力を割いても処理速度に大きな影響を与える類のライブラリではありません。気軽にビルドしましょう。
audiomuxer [--sbr] [--3gp|--3g2] [--m4a] input output
例:
audiomuxer --m4a "hogehoge_audio.aac" "hogehoge_audio.m4a"
生ストリーム(RAW AAC)を各々のコンテナに格納する処理を司ります。 --sbr スイッチはHE-AACを扱う際に指定。
boxdumper input
例:
boxdumper "hogehoge_movie.mp4"
コンテナのbox情報をダンプ・表示します。膨大な情報が表示されるため、標準出力をファイルにリダイレクトして閲覧するのがベターでしょう。例えば──
remuxer input1 [input2 input3 ...] output
例:
remuxer "hogehoge_movie.mp4" "hogehoge_audio.m4a" "hogehoge_movie_output.mp4"
対応フォーマット:
MPEG-4 Audio、ALAC、AMR、AC3、E-AC3、LPCM、MPEG-4 Video、MPEG-4 AVC
主に映像ストリーム・コンテナと音声ストリーム・コンテナをマルチプレクスする用途として使用します。今のところ、RAWストリームのインポートはサポートされておらず、あくまでコンテナに格納されたストリーム同士の再マルチプレクス特化という点から remuxer となっています。また、同種の複数ストリーム(2つの音声等)にも対応していますが、現状では同種のストリームが同時再生される仕様となっています。
先々の事についてmuken氏は、「将来的にremuxerとaudiomuxerを統合したい」「RAWストリームのインポートも(できれば)実装したい」と意向を述べ、実装上の問題だけでなく「時間が足りない」と漏らすなど多忙な様子でしたが、MP4Boxの置き換えを狙うには避けて通れない部分でもあるため、私としては長い目で期待しつつ見守りたいと考えています(実装を約束するものでないにしても、そのチャレンジは評価されるべき)。
最後に、RAW AAC(仮名:hogehoge_audio.aac)とMPEG-4 AVC(仮名:hogehoge_movie.mp4)を現状のL-SMASHでmuxするには、以下のようなバッチ処理が基本的に考えられます。
audiomuxer --m4a "hogehoge_audio.aac" "%TEMP%\_audio.m4a"
remuxer "hogehoge_movie.mp4" "%TEMP%\_audio.m4a "hogehoge_movie_output.mp4"
del "%TEMP%\_audio.m4a"
~
L-SMASH remuxerは、MP4Boxのように半角 # 等がファイル名として使えないという制限が無いため、ファイル操作という点でも自由度は高いように思います。
*ダウンロードは当サイトのヘッダーにあるL-SMASHの大きなアイコンや、左のプルダウンメニューからも可能です。
*Revisionナンバーはコミットを数えた値であり、利便上付けたに過ぎず、L-SMASH公式のナンバリングではありません。
CPU : Intel Core-i5 2500K processor
Memory : 8GB
mingw(gcc4.6.1)
L-SMASH準公式
ISCライセンス