MP4Boxの置き換えを狙う第一歩「L-SMASH remuxer」

L-SMASH は次のステージへ

 muken氏が主導するMP4に関わるライブラリ「L-SMASH」にremuxerが実装されました。これまで、GPACに代わるものとして”x264に付随するMP4周りのライブラリ”という毛色だったL-SMASHですが、この度のremuxer実装により、MP4Boxを使わずしてMP4コンテナに格納された映像ストリームと音声ストリームのマルチプレクス処理が可能となりました(予めコンテナに格納されたストリーム同士をmuxするという実装状況から、現時点ではremuxerと呼称されている)。

 これにより、MP4Boxを介すことで削がれるコンテナとしての一部情報を保持することが可能となり、将来的にはMP4周りの処理に関してMP4Boxを置き換えるライブラリとなりそうです。

以下にビルド方法、各バイナリの簡易説明、使い方を記載しておきます(Windowsバイナリあり)。

Index

L-SMASH remuxer をビルドする(mingw)
各バイナリの簡易説明
L-SMASH Windowsバイナリ
最後に

L-SMASH remuxer をビルドする(mingw)

 まず、L-SMASHのソースを公式gitレポジトリから取得します(x264audioをベースとした非公式gitレポジトリではありません)。各々の環境で作業用ディレクトリに移動し──

git clone git://repo.or.cz/L-SMASH.git

と入力し取得します。もしくは、ブラウザでアクセスしsnapshot(tarまたはzipアーカイブ)を取得することも可。

 ソース取得(もしくはアーカイブ解凍)終了後、L-SMASHディレクトリへ移動してmakeすると audiomuxer、boxdumper、remuxer のWindowsバイナリが出来上がります(configure不要)。

cd L-SMASH
make

コンパイルオプションを意図して変えたい方は Makefile を直接編集してみてください。とはいえ、コンテナ入出力(ハードウェア的にはメモリやディスクI/O)が主要な処理であるため、ビルド時の最適化に労力を割いても処理速度に大きな影響を与える類のライブラリではありません。気軽にビルドしましょう。

各バイナリの簡易説明
  • audiomuxer.exe
     
  • 書式:
    audiomuxer [--sbr] [--3gp|--3g2] [--m4a] input output
    例:
    audiomuxer --m4a "hogehoge_audio.aac" "hogehoge_audio.m4a"

     生ストリーム(RAW AAC)を各々のコンテナに格納する処理を司ります。 --sbr スイッチはHE-AACを扱う際に指定。

  • boxdumper.exe
     
  • 書式:
    boxdumper input
    例:
    boxdumper "hogehoge_movie.mp4"

     コンテナのbox情報をダンプ・表示します。膨大な情報が表示されるため、標準出力をファイルにリダイレクトして閲覧するのがベターでしょう。例えば──

    boxdumper "hogehoge_movie.mp4" > "hogehoge_movie_boxdump.txt"

    のように。

  • remuxer.exe
     
  • 書式:
    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 Windowsバイナリ

     これらL-SMASHライブラリをビルドしたものは開発途上段階のものであり、不具合や未実装部分がある点を充分に承知したうえで自己責任においてご使用ください。バイナリを使用したことで発生したハードウェア・ソフトウェア破損(環境含)の補償・責は、当方・開発者ともに一切負わないものとします。

  • L-SMASH r311 Windowsバイナリ(x86) Download
  • commit : 0cac9f92c44461dc687025f33ebf2f628a20779d
    *ダウンロードは当サイトのヘッダーにあるL-SMASHの大きなアイコンや、左のプルダウンメニューからも可能です。
    *Revisionナンバーはコミットを数えた値であり、利便上付けたに過ぎず、L-SMASH公式のナンバリングではありません。

  • ビルド環境
  • Windows7 Professional 64bit Edition
    CPU : Intel Core-i5 2500K processor
    Memory : 8GB
    mingw(gcc4.6.1)

    最後に

     記事に対するご指摘、または明確な不具合等(環境とその再現方法が明確なもの)がありましたら、以下commentsへpostをお願いいたします。当方で確認できる事象、もしくは不具合の可能性が高いと判断した場合は、当方が開発者の方々にコンタクトし確認作業を行います。

  • リンク
  • L-SMASH git リポジトリ
    L-SMASH準公式
    ISCライセンス

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    5 × 4 =