L-SMASH
この記事はL-SMASHの暫定・準公式ページです。
L-SMASHとは
L-SMASHはmp4ファイルを扱うクロスプラットフォームのライブラリです。将来的にはmp4に関わる様々な用途を想定していますが、現在のところ、実際に動作する機能は以下のように限られています。
- α版レベルのx264のmp4 muxerとして動作します。
- 単独で、いくつかの形式の音声をmuxすることができます。
- 最低限のm4a/3gp/3g2のmuxerとしても動作します。
具体的には、以下の標準の一部を実装しています。
- ISO/IEC 14496-1, MPEG-4 Part1: Systems
- ISO/IEC 14496-12, MPEG-4 Part12: ISO base media file format
- ISO/IEC 14496-14, MPEG-4 Part14: MP4 file format
- ISO/IEC 14496-15, MPEG-4 Part15: Advanced Video Coding (AVC) file format
関連規格として、以下の標準の一部も実装しています。
- ISO/IEC 14496-3, MPEG-4 Part3: Audio
- ISO/IEC 13818-7, MPEG-2 Part7: Advanced Audio Coding (AAC)
- ETSI TS 102 366(所謂AC-3またはA/52と呼ばれるもの)
- Request for Comments: 4867(AMR-NB/WB Storage Format)
また、movファイルをサポートするため、Apple QuickTime仕様の一部を実装する予定があります。
L-SMASHは現在のところx264のmp4 muxerとして主に実装されています。しかし、x264に音声符号化&多重化機能を付加することを主目的としたものではありません。あくまでmp4の実装に過ぎません。いつかは不明ですが最終的にはmp4を取り扱うための普遍的なソフトウェアになると思われます。
機能
- x264との連携でH.264/AVCをmp4にmuxできます。
- x264-audio(未完成)との連携でALAC, AC-3をmp4にmuxできます。
- テストツール的な実行ファイルでAAC, MP1/MP2/MP3, AMR-NB/WBをmp4/m4a/3gp/3g2にmuxできます。
仕様・制限事項
L-SMASH's restrictions(主に英語)を参照してください。
L-SMASHの開発の契機と特徴
巷には既にいくつかのオープンなmp4/movの実装が存在するにも関わらず、L-SMASHプロジェクトは開始しました。当初はx264のmp4 muxerのみを想定していましたが、その後展望が広がり、現在では汎用のmp4ツールとなるべく実装が進んでいます。
開発の契機は、既存のオープンソースの実装が大きく、複雑すぎること、そして規格上誤った実装が多いことから、自分たちで真っ当な実装を行おう、と思い立ったことにあります。
このため、L-SMASHは以下のような基本コンセプトを持っています。
- 一般に動画コンテナとして重要な機能のみを実装する。
- 素直でシンプルに実装する。
- 可能な限り規格に忠実に実装する。
mp4は非常に多種多様な表現を内包することのできる、高機能なコンテナ形式です。しかし、L-SMASHでは2D/3Dグラフィックスやインタラクティブコンテンツ等をサポートしません。現状の動画コンテナとして一般に重要ではなく、実装を過度に複雑にする機能を排除し、シンプルにしています。
L-SMASHのソースコードは必ずしも実行時の効率が良くはなっていません。多少効率が悪くとも、正しく、かつ規格と実際の動作の理解が容易なコードにしています。
このページの位置づけ
L-SMASHプロジェクトは現在、専用のドメインやサーバを持っていません。L-SMASH関連の情報やリソースはAd-Hocに分散されて保持されています。このページは散らばる情報を集めるための手がかりとして作成されています。
プロジェクトが大きくなれば、いずれは別途、正式なページができるでしょう。このページはそれまでの繋ぎであるため、暫定準公式ページと位置づけています。
入手方法
L-SMASHプロジェクトは公式にはバイナリを提供しません。
ソースコードはGoogle Codeのgitレポジトリで管理しており、gitコマンド、またはミラー(以前の公式)であるrepo.or.czのsnapshotによって取得可能です。
gitでの取得の場合、任意の作業ディレクトリ上で以下のようにして取得できます。
git clone https://code.google.com/p/l-smash/
ただし、L-SMASHは現在のところ、単独では音声のmuxerとしてしか動作しません。殆どのユーザは、以下の非公式なx264_L-SMASHを使いたいことでしょう。
非公式gitレポジトリ
(2010/11/11追記)非公式レポジトリは現在大改造中です。このため、現在この非公式レポジトリを使用することは強く非推奨です。改造後はx264-audioをベースとせず、本家x264をベースとするようになります。これに伴い音声関連の機能は、良くてL-SMASHの持つimporterによるcopyのみか、最悪何も含まれなくなります。
x264との統合をスムースに行うため、githubに非公式gitレポジトリを置いています。x264がGoogle Summer Of Code 2010において音声のエンコードをその対象項目として挙げており、muxerがこれに深く関わるため、統合作業用に用意したレポジトリです。
こちらは非公式かつ一時的、そして常に作業中のレポジトリですが、x264のmp4 muxerとしてL-SMASHを使いたい方には便利かもしれません。ただし、以下のように不安定なものですのでご注意下さい。
- 基本的に開発者の連携のために用意されたレポジトリで、ユーザの利便性のために用意したものではありません。
- レビュー前のcommitが含まれる可能性があります。
- 基本的に動作確認は取れておらず、ビルドすら通らない可能性があります。
- L-SMASHの正式なcommitter以外の方もpush可能になっています。
- 公式レポジトリの複数のcommitが一括してcommitされ、merge項目の内訳を含みません。
- 開発の状況により、突然除去する可能性があります。
- 特に、Kovensky氏のx264-audioのレポジトリが本家x264に統合されるか、統合されないことが決定した場合は、このレポジトリの主な目的であるmp4.cの管理が不要になるため、一層、除去の可能性が高まります。
このレポジトリは若干複雑に作り上げられているため、以下のスクリプトを使用してcloneすることをお勧めします。
x264_L-SMASH_clone.sh 2.96kiB (8512)
このスクリプトを使用せず、単純にgithubに表示されるアドレスを元にcloneのみした場合、ビルドしたx264のリビジョンが正しく表示されません。
非公式レポジトリに関しての説明をx264_L-SMASH unofficial repository(英語)に書きました。
動作環境
L-SMASHは殆どがC99の範囲で作成されており、ビルド・動作共に環境依存性が低くなっています。
ただし、以下の点により、コンパイルできない、または動作しない環境がある可能性があります。
- 64bit整数(uint64_t等)の使用。
- 64bit対応fseek/ftellの使用。
- 一般的なGCC環境向けには"#define _FILE_OFFSET_BITS 64"を使用しています。
- MinGW向けにはfseeko64/ftello64を使用しています。
具体的な動作環境として、開発者は主にMinGW上で作業を行っており、他にMacOSX(Intel)上での動作が確認されています。(2010/10/15追記):PPCでの動作も確認されましたのでバイエンディアンです。
バグ報告・連絡等
まだあまり充実していません。よりオープンにしていきたいとは考えています。
フォーラム
weird video maniacsに間借りしています。「コンテナ」カテゴリを使用するようにお願いします。このフォーラムは主に日本語で意思疎通のできる方向けですが、英語も不可ではありません。
英語での議論のための専用の場所は用意していませんが、開発者と協力者はx264周辺、そしてdoom9やdoom10のフォーラムにいますので、連絡を取るのは難しくないでしょう。
IRC
irc://freenode/L-SMASH に開発者・協力者の常駐するIRCチャンネルがあります。英語も日本語も可ですが、時間帯によって、誰も反応しないかもしれません。
メール
ソースコードにメールアドレスの記載があります。
返信の迅速性、確実性にはあまり期待しないで下さい。また、メールによる連絡は、開発レベル以上のトピックに限って下さい。一般ユーザレベルでの使用方法やビルド方法に関してはフォーラムを使用して下さい。
ライセンス
ISCライセンスです。
Copyright (C) 2010 L-SMASH project Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
開発者
- Yusuke Nakamura (known as MP4_maniac, or VFR_maniac)
- Primary author,
submain reviewer (Initial developer).
- Tsukasa OMOTO (known as henry, or henry0312)
- New author. Mainly handling
chapterseverything. Previously lead tester for audio muxing. Helper for misc stuff.
- Takashi Hirata (known as silverfilain)
Primary reviewer, sub author, project supervisor (Initial developer).An undead boxed hell cat.
変態 変人を自負出来る開発者募集中。
協力者・謝辞
"JEEBと愉快な仲間たち"の協力に感謝します。
- boiled_sugar : Initial tester. Known as translator of MKVToolNix for Japanese.
- checkers : Adviser in early terms, about misc stuff on project's operation. Known as MeWiki maintainer.
- Chikuzen : Initial tester, IRC channel operator.
- golgol7777 : Adviser about compatibilities, major contributor for integration of x264-audio (especially with qtaacenc).
- JEEB : Initial tester, Forum administrator ("weird video maniacs").
- Kovensky : Adviser in early terms, about audio relative stuff. Known as a builder of mplayer, and also one of x264 devs.
- wipple : Lead tester for compatibilities. Helper for misc stuff.
(alphabetical order)
最終更新時間:2010年11月11日 01時44分38秒