Doc / video-codecs


Doc / video-codecs
2015-03-04 (水) 13:46:18更新
カテゴリ:未訳
原文:http://www.mplayerhq.hu/DOCS/HTML/en/video-codecs.html

7.1. ビデオ・コデック

対応コデックの完全なリストは、毎日更新される codec status table を見て下さい。 我々のホームページからダウンロードできるのはこのうちごく僅かなものです。ダウンロードは codecs pageから。

最も重要なものは以下の通り:

  • MPEG-1 (VCD) and MPEG-2 (DVD) video
  • native decoders for DivX ;-), OpenDivX (DivX4), DivX 5 (Pro), 3ivX, M$ MPEG-4 v1, v2 and other MPEG-4 variants
  • native decoder for Windows Media Video 7/8 (WMV1/WMV2), and Win32 DLL decoder for Windows Media Video 9 (WMV3), both used in .wmv files
  • native Sorenson 1 (SVQ1) decoder
  • native Sorenson 3 (SVQ3) decoder
  • 3ivx v1, v2 decoder
  • Cinepak and Intel Indeo codecs (3.1,3.2,4.1,5.0)
  • MJPEG, AVID, VCR2, ASV2 and other hardware formats
  • VIVO 1.0, 2.0, I263 and other H.263(+) variants
  • FLI/FLC
  • RealVideo 1.0 & 2.0 from libavcodec, and RealVideo 3.0 & 4.0 codecs using RealPlayer libraries
  • native decoder for HuffYUV
  • Various old simple RLE-like formats

If you have a Win32 codec not listed here which is not supported yet, please read the codec importing HOWTO and help us add support for it.

7.1.1. DivX4/DivX5&aname: Meaningless(No link-title with 'full');

このセクションでは、 Project Mayoの DivX4 と DivX5 codec について説明します。 最初のアルファ・バージョンは OpenDivX 4.0 alpha 47 と 48 でした。 かつては我々MPlayerもこれを内部的にサポートし、デフォルトでビルドされるようにしていました。 また、オプショナルにProject Mayoのポストプロセシング・コードを使ってMPEG-1/2 の画質向上を図るという機能もありました。 現在では我々は全てのファイルタイプに自前のコードを使っています。

このコデックの新しいバージョンは DivX4 と名前を変え、悪名高い DivX codec で作られた映像すらデコードできるものでした。 付け加えるなら、DivX4はネイティブのWin32 DivX DLLよりも高速でしたが、libavcodecよりは遅いものでした。従ってこのコデックをデコーダとして使うのは オススメできません。しかしながら、エンコードには有用です。難点の一つとして、オープンソース・ライセンスでは無い事が挙げられます。

DivX4 works in two modes:

-vc odivx
Uses the codec in OpenDivX fashion. In this case it produces YV12 images in its own buffer, and MPlayer does colorspace conversion via libvo. (Fast, recommended!)
-vc divx4
Uses the colorspace conversion of the codec. In this mode you can use YUY2/UYVY, too. (SLOW)

The -vc odivx method is usually faster, due to the fact that it transfers image data in YV12 (planar YUV 4:2:0) format, thus requiring much less bandwidth on the bus. For packed YUV modes (YUY2, UYVY) use the -vc divx4 method. For RGB modes the speed is the same, differing at best according to your current color depth.

Note

If your -vo driver supports direct rendering, then -vc divx4 may be faster, or even the fastest solution.

The DivX4/5 binary codec library can be downloaded from avifile or divx.com Unpack it, run ./install.sh as root and do not forget adding /usr/local/lib to your /etc/ld.so.conf and running ldconfig.

Get the CVS version of the OLD OpenDivX core library like this:

1.

cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login

2.

cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore

3.This core library is split into a decore and encore library that have to be compiled separately. For the decore Library, simply type

cd divxcore/decore/build/linux
make
cp libdivxdecore.so /usr/local/lib
ln -s libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
cp ../../src/decore.h /usr/local/include

4.Alas, for the encore library there is no Linux Makefile available, and the MMX optimized code only works on Windows. You can still compile it, though, by using this Makefile.

cd ../../../encore/build
mkdir linux
cd linux
cp path/Makefile .
make
cp libdivxencore.so /usr/local/lib
ln -s libdivxencore.so /usr/local/lib/libdivxencore.so.0
cp ../../src/encore.h /usr/local/include

MPlayer autodetects DivX4/DivX5 if it is properly installed, just compile as usual. If it does not detect it, you did not install or configure it correctly.


7.1.2. FFmpeg/libavcodec

**
*SVN版(2006/06中頃に開発は従来のCVSからSVNへ移行)では以下の操作は不要。
*(MPlayerのソースを落とすだけで入るようになった。)
**

FFmpeg は、様々な音声・映像コデックを持つストリームをデコードできる、オープンソースのコデックパッケージを内包しています(*libavcodecというのがその名前、Audio/Video codecのライブラリという意味らしい*)。 また、強力なエンコード機能と速度も持っています。Win32 コデック・DivX.comの DivX4/5 ライブラリよりも高速!

たくさんの良いコデックの中でも重要なのは MPEG-4 バリアント(*派生型*)、すなわち、 DivX3, DivX4, DivX5, Windows Media Video 7/8 (WMV1/WMV2)です。また非常に面白いものとして WMA デコーダがあります。

特筆に値するのは Sorenson 3 (SVQ3) コデック。最初の完全なオープンソース実装で、オリジナルよりも高速で す。バイナリコデックよりもこちらを使おう!

サポートするコデックの完全なリストは FFmpeg homepageで見て下さい。videoコデック はこちらaudioコデックはこちら

MPlayer のリリース版を使っているなら libavcodec はパッケージ(*ダウンロードしたソースコード*)の中に入っています。いつも通りにビルドして下さい。 CVSからMPlayerのソースコードを取得した場合、FFmpeg CVS treeからlibavcodecを取り出す必要があります。というのは FFmpeg のリリースは極めて稀なので。CVS は大体の場合 stable で、機能もほとんど使えます。やり方は以下の通り:

  1. cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg login
    cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co -P ffmpeg/libavcodec ffmpeg/libavutil
  2. FFmpegのソースコードからlibavcodec と libavutil のディレクトリを MPlayer CVS treeのルートに移動します。例えばこんなふうに見える筈です: main/libavcodec main/libavutil

    シンボリックリンクでは不十分です。必ず copy/move する事!

  3. MPlayer CVSをアップデートする度に、libavcodec も同時にアップデートするには、以下の行を main/CVS/Entries ファイルに追記します:
    D/libavcodec////

    D/libavutil////

    (*管理人の手許では以下も追記*)

    D/libavformat////


  4. コンパイルします。問題があればコンパイル前のconfigureが検出する筈です。

Note

CVS からMPlayer を取得すると、サブディレクトリ「libavcodec」がありますが、この中にlibavcodecのソースコードは入っていません!必ず上記の手順で取得してください。

参考までに私のK6-2 500と Matrox G400でFFmpegを使うと、最高解像度の DivX 映像ですらフレームドロップ抜きで再生できます。


7.1.3. XAnim codecs

Note

Be advised that the XAnim binary codecs are packaged with a piece of text claiming to be a legally binding software license which, besides other restrictions, forbids the user to use the codecs in conjunction with any program other than XAnim. However, the XAnim author has yet to bring legal action against anyone for codec-related issues.

INSTALLATION AND USAGE. MPlayer is capable of employing the XAnim codecs for decoding. Follow the instructions to enable them:

1.Download the codecs you wish to use from the XAnim site. The 3ivx codec is not there, but at the 3ivx site.

2.OR download the codecs pack from our codecs page

3.Use the --with-xanimlibdir option to tell configure where to find the XAnim codecs. By default, it looks for them at /usr/local/lib/codecs, /usr/local/lib/xanim/mods, /usr/lib/xanim/mods and /usr/lib/xanim. Alternatively you can set the environment variable XANIM_MOD_DIR to the directory of the XAnim codecs.

4.Rename/symlink the files, cutting out the architecture stuff, so they will have filenames like these: vid_cvid.xa, vid_h263.xa, vid_iv50.xa

XAnim is video codec family xanim, so you may want to use the -vfm xanim option to tell MPlayer to use them if possible.

Tested codecs include: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, H.263.


7.1.4. VIVO video

MPlayer can play Vivo (1.0 and 2.0) videos. The most suitable codec for 1.0 files is FFmpeg's H.263 decoder, you can use it with the -vc ffh263 option. For 2.0 files, use the Win32 DLL through the -vc vivo option. If you do not supply command line options MPlayer selects the best codec automatically.



7.1.5. MPEG-1/2 video

MPEG-1 と MPEG-2 のデコードにはマルチプラットフォーム・ネイティブの libmpeg2 library を使います。ソースコードは MPlayer に含まれています。これによりバギーな MPEG-1/2 video ファイルも Signal 11 (segmentation fault)をキャッチして、迅速にコデックを再初期化し、エラーの起きたまさにその箇所からデコードを継続できます。 このリカバリー技術には計測可能な速度低下がありません。

訳注
TVキャプチャのCMカットでは、稀にQuickTime Player(+mpeg2再生コンポーネント) で開けないmpeg2ができる事があるが、そうしたファイルでもMPlayerは問題無く再生/エンコードできる事が多い。
反面、libmpeg2にはmpeg2 decoding delayというものがあり、冒頭に2フレーム程度、余分なフレームが出る。libffmpegを使うとdecoding delayは1フレームに減る。x264の開発者、akupenguin氏はデフォルトの-vfm libmpeg2より-vfm ffmを推奨している。


7.1.6. MS Video1, Cinepak CVID, and other older codecs

MPlayer はAVI や MOV で使われている古いコデックの大半を再生できる。 かつてはバイナリの Win32 codecを使っていたが、現在ではほとんどがlibavcodecのネイティブなコデックでデコードできる。


7.1.7. RealVideo

MPlayer supports decoding all versions of RealVideo:

  • RealVideo 1.0, 2.0 (fourcc RV10, RV20) - en/decoding supported by libavcodec
  • RealVideo 3.0, 4.0 (fourcc RV30, RV40) - decoding supported by RealPlayer libraries

Download Real codecs from http://www.mplayerhq.hu/MPlayer/releases/codecs/ and extract them to the /usr/local/lib/codecs directory. If you want to store them in a different location, pass the --with-reallibdir option to configure. Note

RealPlayer libraries currently only work with Linux, FreeBSD, NetBSD and Cygwin on the x86, Alpha and PowerPC (Linux/Alpha and Linux/PowerPC have been tested) platforms and with Mac OS X.

  • rv40 -- 2007-02-04 (日) 03:09:49

7.1.8. XviD

XviD はフリーのMPEG-4 ASP互換ビデオコデックです。 2パスエンコード機能とMPEG-4 ASP規格のフルサポートを実装し、有名なDivX codecよりも効率的なエンコードができます。大半のモダンCPUに最適化されているので、非常に良い画質とパフォーマンスが得られます。

XviDはOpenDivX codecの分派(フォーク)としてスタートしました。 ProjectMayoがOpenDivXをクローズド・ソースのDivX4 (現在では DivX5)に路線転換したときに、OpenDivX開発に参加していたProjectMayo以外の人々が怒り XviDをスタートさせました。ですので、二つのプロジェクトの源流は一緒です。

XviDのインストール

大半のオープンソース・ソフト同様、XviDの入手手段はオフィシャル・リリースとCVS版の2種類があります。 CVS版バージョンでも通常は十分に安定しています。というのは開発時間の大半はオフィシャル・リリースのバグ潰しに当てられているからです。 MEncoderでXviD CVSを使う方法は以下の通り。 (他に、少なくとも autoconf 2.50, automake そして libtoolが必要です):

1.

cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login

2.

cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore

3.

cd xvidcore/build/generic

4.

./bootstrap.sh

5.

./configure

必要に応じてここでオプションを指定してください (./configure --help の出力結果を読む事)。

6.

make && make install

7.(上記5.で) --enable-divxcompat, を指定した場合、../../src/divx4.h を /usr/local/include/ にコピーします。

8.MPlayer を以下のオプションを付けてリコンパイル。 --with-xvidlibdir=/path/to/libxvidcore.a --with-xvidincdir=/path/to/xvid.h


7.1.9. Sorenson

Sorenson is a video codec developed by Sorenson Media and licensed to Apple who distribute it with their QuickTime Player. We are currently able to decode all version of Sorenson video files with the following decoders:

  • Sorenson Video v1 (fourcc SVQ1) - decoding supported by native codec (libavcodec)
  • Sorenson Video v3 (fourcc SVQ3) - decoding supported by native codec (libavcodec)

COMPILING MPLAYER WITH QUICKTIME LIBRARIES SUPPORT Note

Currently only 32-bit Intel platforms are supported.

1.download MPlayer CVS

2.download QuickTime DLL pack from http://www.mplayerhq.hu/MPlayer/releases/codecs/

3.extract QuickTime DLL pack to your Win32 codecs directory (default: /usr/local/lib/codecs/)

4.compile MPlayer



7.1.10. x264

7.1.10.1. x264とはなんぞや?

x264 はH.264 映像ストリームを作成する為のライブラリです。100%完成してはいませんが、少なくともH.264の機能のうち品質に影響する機能の大半は、なんらかの形でサポートしています。H.264規格には、先進的ではあっても、本質的に映像の品質とは全く無関係な機能が数多く定義されています。そうしたもののの大半はまだx264には実装されていません。

エンコーダの機能

  • CAVLC/CABAC
  • 複数参照フレーム
  • Intra: フレーム内部では全てのマクロブロックタイプを利用可能(16x16 と 4x4、全ての予測方式)。
  • Inter P: Pフレームでは全てのパーティションが使える(最大 16x16 から最小 4x4まで)
  • Inter B: Bフレームでは16x16〜8x8のマクロブロックが使える。スキップやダイレクトを含む。
  • レートコントロール:固定quantizer, 固定ビットレート, 複数パスABR(平均ビットレート)
  • シーンカット検出
  • 状況可変のBフレーム配置
  • B フレームの参照フレーム化/自由なフレーム並べ替え

エンコーダの制限

  • No real RD

7.1.10.2. H.264とはなんぞや?

H.264はITU と MPEGが共同で開発した新しいデジタルビデオコデックの名称です。正式名称は、〜大変ややこしいのですが〜、"ISO/IEC 14496-10" または "MPEG-4 Part 10"です。一般的には"MPEG-4 AVC" とか、単に"AVC"とも呼ばれます。

ま、なんと呼ぼうとH.264 は試す価値アリです。というのは、MPEG-4 ASP の品質を、概ね5%-30%低いビットレートで実現できるからです。実際の結果は素材映像の内容とエンコーダの性能によります。しかしH.264はメリットだけではありません。: H.264のデコードは非常に高速なCPUと大量のメモリを要求するようです。実例を挙げると、1733 MHz Athlonで、DVD-解像度の1500kbps H.264 ビデオの再生はCPUの約35% を使います。これに対し、DVD-解像度の1500kbps MPEG-4 ASP ビデオはCPUの10%です。これはつまり、大半のユーザーにとって、高解像度の映像再生はほとんど問題外だという事です。また同時に、そこそこのDVD ripですら、2.0 GHz程度以下のプロセッサではぎくしゃくし得ると言う事です。

少なくとも x264では、エンコードに必要な性能はMPEG-4 ASPと比べてそこまで酷くありません。例えば、1733 MHz Athlonでは一般的な DVD エンコードは 5-15fps程度で走ります。

この文書ではH.264の詳細は説明しませんが、おおまかな概略はこちらのpdfにあります。The H.264/AVC Advanced Video Coding Standard: Overview and Introduction to the Fidelity Range Extensions

*抜粋訳はこちら


7.1.10.3. H.264 videoをMPlayerで再生するには?

MPlayer は libavcodecのH.264デコーダを使います。2004年の7月以降、libavcodec は少なくとも最小限の H.264 デコードができるようになっていて、それ以後も、サポートする機能や、必要なCPU能力の点で大きな変更や進捗があります。確実なのは、常に最近の CVS checkoutを使う事です。

手っ取り早く、libavcodecの H.264デコード機能が最近進化したかどうかを知るには FFmpeg CVS repository's web interfaceをまめに見ておくと良いでしょう。


7.1.10.4. MEncoderとx264でvideoをエンコードするには?

subversion クライアントをインストールしてあれば、以下のコマンドで最新の x264 ソースコードがDLできます。:

git clone git://git.videolan.org/x264.git

x264のAPI に変更があれば、MPlayerのソースコードも変更されます。ですのでこの場合、常にCVS MPlayerと一緒に使うのが良いでしょう。おそらくこの状況は x264が「リリース」されたら変わると思います。それまでの間、x264は極めて「 unstable」と考えるべきでしょう。というのは、プログラミング・インタフェイスが変更の対象になっているからです。

x264のビルドとインストールはスタンダードな方法で出来ます。:

./configure && make && sudo make install

これで libx264.a が /usr/local/lib に、そして x264.h が /usr/local/includeにインストールされます。x264 のライブラリとヘッダがスタンダードな場所にあれば、x264 サポート付きMPlayerのビルドは簡単です。通常通りに、:

./configure && make && sudo make install

これでconfigure スクリプトがx264を自動検出するハズです。