AviUtl プラグイン「L-SMASH Works」r91 更新

Libav-SMASH File Reader/Export が L-SMASH Works として統合され、Export が muxer という名に変更されました。Libav-SMASH File Reader はffms2(ffmpegsource 2.0)をサポートし、ffms2 をリンクしたバイナリは ffms2 がサポートするコンテナとそのストリーム(一部)を読み込めます。例えば、MPEG-1/MPEG-2/FLV/MKV/Windows Media Video/WebM といった MP4 以外のコンテナ・ストリームを Direct Show File Reader を使わずアクセスできます。

主な変更点や、サポートするコンテナ・ストリームの情報・注意点は以下をご覧ください。

Libav-SMASH File Reader がサポートする主なコンテナフォーマットとコーデック

実際に動作チェックしたコンテナ一覧とその注釈です。使用時の参考にどうぞ。

サポートしている主なコンテナフォーマット
対応フォーマット
拡張子
注釈
Audio Video Interleave
avi
AviUtl 標準の AVI/AVI2 File Reader で読み込んだほうが2~3倍ほど高速であるため、OSへ未導入のコーデックが「読み込めるかもしれない」程度に扱うのが吉
DivX Media Format
divx
div
AVI 2.0 を DivX 独自に拡張したフォーマット
Flash Video
flv
f4v
f4vコンテナについてはL-SMASHからのアクセスをまず試行する
Matroska
mkv
MPEG-1 Video
mpg
mpeg
MPEG-2システム
PS(Program Stream)
mpg
m2p
m2v
ffmpegsource でのアクセスはフレームアキュレート(対象フレームと表示フレームが同期してズレない状態)ではないため、編集用途に不向き。
MP4、QuickTime、3GPP
mp4
mov
m4v
m4a
qt
3gp
3g2
コンテナフォーマット処理としては L-SMASH 側で実装
Ogg Media
ogm
Real Media
rm
一部音声コーデックは正常にデコードできない
WebM
webm
ivf
VP8とVorbisを用いたGoogle社提唱フォーマット。映像専用シンプルフォーマット ivf も読み込み可能
Windows Media Video
wmv
   

 
Libav-SMASH File Reader がサポートするコンテナは、L-SMASH での読み込みができない場合 ffms でのアクセス試行し、映像および音声コーデックを読み込めるほうから接続します。また、浮動小数点数の丸め込みによるフレームレート誤差も修正されています。

サポートしている主な映像コーデック
対応コーデック(映像)
注釈
非圧縮ストリーム
RGB、YUV系
AMV Video
アマレコ等でよく使われる
Cinepak
DivX
DivX3、4、5対応
DV
FFV1
FFvHuff
Flash Video
FLV1/FLV4対応
Fraps
H.261
H.263/H.263+
H.264
Huffyuv
Indeo Video
Indeo2、Indeo3、Indeo4、Indeo5対応
Lagarith lossless
LCL
AVIzlib、AVImszh
Microsoft RLE
Microsoft Video 1
Motion JPEG
MPEG-1
MPEG-2
MS-MPEG4
v1/v2/v3 対応
On2 VPシリーズ
VP3/VP5/VP6/VP6F/WebM VP8対応
R210
Real Video
1.0~4.0対応
Snow
Theora
UtVideo
V210
V210x
VC-1
Windows Media Video
7/8/9対応
Xvid
 

 

サポートしている主な音声コーデック
対応コーデック(音声)
注釈
リニアPCM(wav等)
16bit および 24bit PCM
AAC、HE-AAC
AC-3
ADPCM
ALAC
ALS
AMR-NB、AMR-WB
DTS
FLAC
Indeo Audio
Musepack
MP2、MP3
MPEG-1 Layer-2、MPEG-1 Layer-3 Audio
Nellymoser
Real Audio
True Audio (TTA)
TwinVQ
Vorbis  
WavPack  
Windows Medeia Audio  
   

 
掲載したものがすべてではありませんが、大半のメジャーフォーマットは L-SMASH Works(Libav-SMASH File Reader)で読み込めるようになり、AviUtl にとって「痒いところに手が届く」プラグインになりました。ただし、Libav、ffms 等の不具合や、コンテナへの格納が仕様外である場合「コーデックやコーデックは対応しているのに正常に読み込めない」という事も起こりうるため、必ずしも対応表どおりに読み込める訳ではありません。

基本的な入力プラグインの優先順位としては、AVI/AVI2 File Reader、Wave File Reader、MPEG-2 VIDEO File Reader(使用する場合)の後に「Libav-SMASH File Reader」を置き、機能が重複する可能性の高い「DirectShow File Reader」他は更にその後にセットするのをお薦めします(AviSynth Script File Reader は前後どちらに置いてもかまいません)。

ただし、AVI/AVI2 File Reader で正常に読み込めない場合は Libav-SMASH File Reader の優先順位を上げるのも手ですし、逆に Libav-SMASH File Reader で正常に読めない場合は DirectShow File Reader の優先順位を上げて DirectShow でアクセスするという手段もありますので、状況に合わせて入力プラグインの優先度を変更する事も念頭に置くと良いでしょう。

新実装のエクスポートプラグイン「L-SMASH Dumper」

L-SMASH には boxdumper というライブラリがあり、MP4 コンテナのBOX情報を出力することができます。「L-SMASH Dumper」は boxdumper と同様のBOX情報出力に加え timecode v2 出力もサポートしており、MP4 や MOV 等のコンテナを読み込んだときに限り機能します。[ファイル]→[エクスポート]でご利用ください。

「Libav-SMASH File Reader」の処理スレッド数が指定可能に


↑0でオート。他処理を考慮し、任意のスレッド数を割り当てたいときにも役立つ。

r89(43d3b62e7d)にて、Libav-SMASH File Reader の処理スレッド数が設定可能となりました。[ファイル]→[環境設定]→[入力プラグイン優先度の設定]または[入力プラグインの設定]で Libav-SMASH File Reader を選択し、右下の[設定]ボタンでダイアログボックスが開きますので、任意の数を指定してください。

なお、指定数 0 で Auto となり、最大数 4 で自動的にセットされます。情報は lsmash.ini ファイルに保存されるため、設定によりレジストリが変更されることはありません。
 
 

「Libav-SMASH File Reader」はプログレッシブ映像専用で

現時点(r91:git-02dfbaee12)ではプログレッシブ映像を前提としているため、コンテナやコーデックに関係無くインタレースな YUV4:2:0映像は正しく読み込めません。これは、AviUtl が YUY2 入力を前提としているため、Libav がインタレースを検出して interlaced YUV4:2:0 → interlaced YUY2 変換をしてくれないといけないのですが、現状は問答無用でプログレッシブな変換をします(インタレース扱いのYUY2変換は、何が正解で実用的にはどう処理するのがベストなのか難しい部分もあり、実装するにしても単純ではない)。

そのため、Libav-SMASH File Reader はプログレッシブ映像専用で扱い、インタレースな MPEG-2 ストリームであれば茂木氏の MPEG-2 VIDEO VFAPI Plug-In や、DGMPGDec等をAviSynthで処理する従来の扱い方を推奨します。インタレースの H.264 等は、DirectShow で適切に読み込むのか、AviSynth でインタレースなYUY2変換をしてから AviUtl に渡すのが無難です。もちろん、YUV4:2:2/4:4:4やRGB形式はこの事象に該当しませんが、YUV4:2:2やRGBなインタレース映像は扱う機会が稀である可能性が高く(あってもAVI形式でのキャプチャファイルや中間ファイルなどでAVIコンテナ出力するほう事が多いため)、事故を防ぐ意味でもインタレース映像は他のリーダー、プログレッシブ映像は Libav-SMASH File Reader で扱いを分けておいたほうが良いでしょう。

MPEG-2 VIDEO VFAPI Plug-In によるアクセス(auiで入力プラグインモード)



↑赤背景に黒文字が下から上へ動いているシーン。こちらは茂木氏の「MPEG-2 VIDEO VFAPI Plug-In」で読み込んだ映像のスクリーンショット。


↑トップフィールドとボトムフィールドに分解した映像(右の画像はもう片方のフィールド成分)。


↑インタレース扱いでYUY2変換されているためフィールド毎に正しく配置され、トップフィールド・ボトムフィールドともに映像成分をきっちり分解できる。

 

Libav-SMASH File Reader によるアクセス



↑Libav-SMASH File Reader で読み込んだ映像のスクリーンショット。映像処理に慣れている人であれば一目で「あぁ……」と気付くのではないでしょうか。


↑トップフィールドとボトムフィールドに分解した映像(右画像はもう片方のフィールド)。インタレースなYUV4:2:0をプログレッシブ扱いでYUY2変換したため、フィールド相関が崩れてしまい、フィールド毎に正しく分離できない。


↑これは赤と黒という見た目に判りやすいシーンを用いたが、インタレース映像では例外なくこうなってしまう。

ただし「再変換(エンコード)しない」という前提であれば、AviUtl にどう展開されるかは関係無いため、これらフィールド処理云々を気にする必要はありません。例えば、Libav-SMASH muxer でストリームコピーして書き出すといった処理がそれにあたります。

追記:
r97にて、L-SMASH 経由の Libav アクセスに限りインタレース扱いでのYUV4:2:0→YUY2変換がサポートされました。

AviUtl プラグイン「L-SMASH Works」ダウンロード
  • r91当時の情報です
  • 各自でビルドするにあたっては、ffmpegsource r621(現時点最新)で WebM コンテナを正常に展開できない不具合(不正なフレームレートと音声ストリームを渡す)を確認したため、若干古めな Revision へロールバックしてビルドすることをお薦めします。私のバイナリは ffmpegsource r615 の使用により、上記不具合を回避しています。

    最新版はサイト上部のメニュー「L-SMASH, x264 etc.」から取得してください。

  • リンク
  • AviUtlのお部屋
    VFR-maniac/L-SMASH-Works
    l-smash - A simple tool for mp4. - Google Project Hosting
    Get ffmpeg(L-SMASH Worksの推奨ライブラリは Libav)
    MPEG-2 VIDEO VFAPI Plug-In(まるも製作所)
    x264のYUV4:4:4/RGB、AviUtlのYC48とYUY2入出力の仕様
    f4vについてmuken氏よりコメント

    コメントを残す

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

    73 − = 64