お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2008-09-18 14:47:21

fueryuejing
メンバ
From: アジア、南会津町。
登録日: 2007-11-03

【HowTo】MEncoderの基本的な使い方とちょっとしたTips

このトピックでは MEncoder の使い方に関する Tips や Tutorial の収集を考えています。皆さんの動画ライフや映像制作の助けになったら嬉しいです。 :) ここで集めた情報を JapaneseWiki に整理して書き込んでいく予定です。

これは Tips や Tutorial 作りを目的としたトピックなので、質問はデスクトップ向けソフトウェアにトピックを立ていただけると助かります。

※以前このトピックに投稿したものを少しずつこちらに写すところから始めるつもりです。暇見て JapaneseWiki に書き込みます。そんなに詳しくないので(ユーザー向けドキュメント読んで何となく使っているだけ)、訂正加筆修正、協力お願いします。



基本

書式:

コード:

mencoder [options] 入力ファイル -o 出力ファイル

動作:

コード:

入力ファイル → demuxing → filter-chain (-af&-vf) → encoding (-oac&-ovc) → remuxing → 出力ファイル

MEncoder の MPEG-4 関連コーデックの基本的な使い方
※ hoge.mpeg を hoge.avi に変換する場合の例を以下に示します。

lavc: FFmpeg MPEG-4
1 pass Constant Bit Rate(一定ビットレート

コード:

mencoder hoge.mpeg -oac mp3lame -ovc lavc -o hoge.avi

※ lavc のデフォルトビデオコーデックは mpeg4 ( DivX 4/5 MPEG-4 )
※ デフォルトエンコード方式は CBR で、ビットレート 800 kbit/sec
ビットレートを高くしたいなら例えば

コード:

-lavcopts vcodec=mpeg4:vbitrate=16000

(出典はマニュアルページ mencoder の該当セクション)

1 pass Constant Quantizer(一定品質)

コード:

mencoder hoge.mpeg -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vqscale=2 -o hoge.avi

2 pass Average Bit Rate(平均ビットレート)
1st pass

コード:

mencoder hoge.mpeg -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -o /dev/null

2nd pass

コード:

mencoder hoge.mpeg -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -o hoge.avi

xvidenc: XviD MPEG-4
※ CBR ABR のビットレートは不必要に高いです。実際の利用では適宜変更下さい。
1pass Constant Bit Rate

コード:

mencoder hoge.mpeg -oac mp3lame -ovc xvid -xvidencopts bitrate=16000 -o hoge.avi

1pass Constant Quantizer

コード:

mencoder hoge.mpeg -oac mp3lame -ovc xvid -xvidencopts fixed_quant=2 -o hoge.avi

2pass Average Bit Rate
1st pass

コード:

mencoder hoge.mpeg -oac mp3lame -ovc xvid -xvidencopts pass=1:bitrate=16000 -o /dev/null

2nd pass

コード:

mencoder hoge.mpeg -oac mp3lame -ovc xvid -xvidencopts pass=2:bitrate=16000 -o hoge.avi

x264enc: x264 H.264
※ ABR CBR でのビットレートはとりあえず xvidenc の値に合わせました。実際の利用では適宜変更下さい。
1 pass Constant Bit Rate

コード:

mencoder hoge.mpeg -oac mp3lame -ovc x264 -x264encopts bitrate=16000 -o hoge.avi

1 pass Constant Quantizer

コード:

mencoder hoge.mpeg -oac mp3lame -ovc x264 -x264encopts qp=18 -o hoge.avi

参考: マニュアルページ mencoder の x264enc セクションより転載

qp=<0-51>
              This selects the quantizer to use for P-frames.  I- and B-frames
              are offset from this value by ip_factor and  pb_factor,  respec-
              tively.  20-40 is a useful range.  Lower values result in better
              fidelity, but higher bitrates.  0 is lossless.  Note that  quan-
              tization  in  H.264  works  differently from MPEG-1/2/4: H.264's
              quantization parameter (QP) is on a logarithmic scale.  The map-
              ping  is  approximately H264QP = 12 + 6*log2(MPEGQP).  For exam-
              ple, MPEG at QP=2 is equivalent to H.264 at QP=18.

2 pass Average Bit Rate
1st pass

コード:

mencoder hoge.mpeg -oac mp3lame -ovc x264 -x264encopts bitrate=16000:pass=1 -o /dev/null

2nd pass

コード:

mencoder hoge.mpeg -oac mp3lame -ovc x264 -x264encopts bitrate=16000:pass=2 -o hoge.avi

ConstantQuantizer と CBR ABR について
パッケージ mplayer-doc 内

コード:

/usr/share/doc/mplayer-doc/HTML/en/menc-feat-dvd-mpeg4.html

のセクション「14.1.2. Constant quantizer vs. multipass」を参照のこと。
※ 原文: http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-dvd-mpeg4.html#menc-feat-dvd-mpeg4-2pass


おまけ 〜 携帯で録った 3gp/3g2 の動画を mp4 に
例:

コード:

mencoder hoge.3g2 -oac mp3lame -ovc lavc -of lavf -o hoge.mp4

※ 3gp/3g2 動画の再生/変換には medibuntu 版のような AMR 対応版 mplayer/mencoder を使っている必要があります。medibuntu のリポジトリを加える方法については日本語 Wiki の該当 Tipsを御覧下さい。
"hoge"についての解説



更新履歴:
2008/10/20

xvid + mp3lame で mencoder の使い方の簡単なまとめ。
以下は hoge.mpeg を hoge.avi に変換する場合。この例では ビットレート/品質 は最大値を指定してある。

から方針を変更。

-lameopts preset=extreme

は、基本を示すのに不要と判断し、削除。
2008/10/21

-xvidencopts fixed_quant=1

何となく、2 に変更。1 では実用的ではないし。

(固定ビットレート)
(固定品質。多分各フレームの圧縮率が固定。)
(平均ビットレート)

を Avidemux の訳語に合わせてみた。

lavc: FFmpeg MPEG-4

x264enc: x264 H.264
の執筆完了。
2008/10/31
「基本」を追記

最後の編集者: fueryuejing (2008-10-31 18:20:59)

オフライン

 

#2 2008-09-18 14:56:34

fueryuejing
メンバ
From: アジア、南会津町。
登録日: 2007-11-03

Re: 【HowTo】MEncoderの基本的な使い方とちょっとしたTips

公式サイト
http://www.mplayerhq.hu

ユーザー向けドキュメント
パッケージ
mplayer-doc
公式サイトのドキュメントへのリンク
http://www.mplayerhq.hu/DOCS/HTML/en/index.html
http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.html

日本語情報
http://www.wikihouse.com/htumenc/index.php?MPlayer%20and%20MEncoder%20on%20MacOSX

用語解説記事
動画圧縮に関して
Wikipediaの「Category:動画圧縮」
BフレームとかIフレームとかPフレームについて
Wikipediaの「フレーム間予測」の記事

最後の編集者: fueryuejing (2008-10-20 20:01:23)

オフライン

 

#3 2008-10-20 19:07:43

fueryuejing
メンバ
From: アジア、南会津町。
登録日: 2007-11-03

Re: 【HowTo】MEncoderの基本的な使い方とちょっとしたTips

著作権上これといって問題のないサンプルムービーを用意しました。動画変換の Tips 用途などに御自由ににお使い下さい。

sample.mkv
# ……なんか不気味なモン作っちまった :P


ファイル名:
sample.mkv

作成者:
風流塵

ライセンス:
クリエイティブ・コモンズ 表示 - 継承 3.0 (Cc-by-sa-3.0)

サイズ:
約 4.7 MB

時間:
約 20 秒

フォーマット:
映像
MPEG
(MPEG-1 か MPEG-2 ……どっちなんだろ。 Kdenlive で libavformat の format=mpegts で出力したもの。詳細は後述。)
大きさ 640x480
フレームレート 30000/1001 fps
プログレッシブ

音声
FLAC
サンプリング 44.1kHz

コンテナ
Matroska

制作に用いた環境及びソフト:
環境
Xubuntu 8.04.1

PC SONY VAIO PCG-SRX 3
CPU Celeron 650 MHz
メモリ 384 MB
グラフィック Intel 815 EM
# 映像制作用途には非力だぁっ。

音声
arecordmidi
TiMidity++
Audacity

映像
OpenOffice.org Writer
pdftoppm
GIMP
Kdenlive
Avidemux
mkvmerge GUI

※ Kdenlive が不安定で落ちまくった…… OTL。 映像フォーマットに Square NTSC を指定して制作、タイムラインの書き出しはカスタムタブを使用。オプションは High Quality タブの HDV 720 30p のパラメータを真似てこんな感じにしました。

名前:
SquareNTSC

拡張:
m2t

パラメータ(libavformat):

コード:

format=mpegts size=640x480 video_bit_rate=19700000 audio_bit_rate=384000 gop_size=15 profile=square_ntsc

※ profile=square_ntsc はテキトー。外している可能性アリ。


備考:
これを使ってぼちぼち mencoder で mkv やら mp4 やらを作る方法の解説記事を書く予定です。お楽しみに。
# Wiki に書き込む予定のモノを溜めてしまったのでそれ消化しながらですね。てへ :P

ところでこの「 mkv や mp4 への変換」ですが、 GUI でやるなら Avidemux で一通り出来てしまうので、このトピックでは CLI での作業例を示すつもりです。

例によって技術的なことはよく分からないので訂正&補足よろしくです(感性には自信があります……って解説記事の執筆には意味ないか)。

オフライン

 

#4 2008-10-20 20:38:18

fueryuejing
メンバ
From: アジア、南会津町。
登録日: 2007-11-03

Re: 【HowTo】MEncoderの基本的な使い方とちょっとしたTips

mencoder その他を用いた mp4 ファイルの作成 その1 lavc/lame で MPEG-4 ASP + MP3 な MP4 の作成
# その2(xvid+lame) その3(x264+faac) は時期未定 :P 。3月末までには書けるかな? それが終わったら Matroska 作成記事か……先は長い。


mplayer でしか再生しないなら、mencoder の「-of lavf -lavfopts format=mp4」で mp4 にしても良い気がします。それが一番楽だし(ちなみに lavf は -o に指定するファイル名の拡張子で出力形式を自動判別するので -lavfopts format=mp4 は付けなくても O.K. です)。

MEncoder で lavf を用いた例:

コード:

mencoder sample.mkv -oac mp3lame -ovc lavc -of lavf -o sample.mp4

※ 上の例では -lameopts と -lavcopts は mencoder のデフォルトを使用。オプションに凝らなくてもそれなりのファイルを作ってくれます。
# 凝り出すと止まんないぞ〜 ;)

ただ幾つか問題があるようです(MEncoder 1.0rc2 時点)。

問題の例1
-of lavf を使用した場合の警告メッセージ。

** MUXER_LAVF *****************************************************************
REMEMBER: MEncoder's libavformat muxing is presently broken and can generate
INCORRECT files in the presence of B frames. Moreover, due to bugs MPlayer
will play these INCORRECT files as if nothing were wrong!
*******************************************************************************

参考: パッケージ mplayer-doc 内

コード:

/usr/share/doc/mplayer-doc/HTML/en/menc-feat-selecting-codec.html

より転載
※ 原文: http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html

libavformat containers:

If you selected libavformat to do the muxing of the output file (by using the -of lavf), the appropriate container format will be determined by the file extension of the output file. You may force a particular container format with libavformat's format option.

libavformat container name    Description
mpg                    MPEG-1 and MPEG-2 PS
asf                    Advanced Streaming Format
avi                    Audio-Video Interleaved
wav                    Waveform Audio
swf                    Macromedia Flash
flv                    Macromedia Flash video
rm                    RealMedia
au                    SUN AU
nut                    NUT open container (experimental and not yet spec-compliant)
mov                    QuickTime
mp4                    MPEG-4 format
dv                    Sony Digital Video container
mkv                    Matroska open audio/video container

As you can see, libavformat allows MEncoder to mux into a considerable variety of containers. Unfortunately, as MEncoder was not designed from the beginning to support container formats other than AVI, your should really be paranoid about the resulting file. Please check to be sure that the audio/video synchronization is OK and that the file can be played correctly by players other than MPlayer.

Unfortunately, as MEncoder was not designed from the beginning to support container formats other than AVI, your should really be paranoid about the resulting file. Please check to be sure that the audio/video synchronization is OK and that the file can be played correctly by players other than MPlayer.
↑この記述に注目。元が AVI 専用だったせいで「-of lavf」機能の強化・改善にてこずっている模様。これが実用になればかなり便利なだけに残念。次世代コンテナフォーマットである Matroska や MP4 を MEncoder から簡単に使えるのはまだ先みたいです :P 。

問題の例2

そこで、以下に mencoder の「-of lavf」を利用しない例を示します。

作成手順:
demuxing
video

コード:

mplayer sample.mkv -dumpvideo -dumpfile sample.mpeg

audio

コード:

mplayer sample.mkv -vo null -ao pcm:file=sample.wav

(再生できない Wave ファイルが生成される場合には pcm:waveheader:file=sample.wav などと指定下さい)

encoding
video codec: lavc (mpeg4)
audio codec: lame (mp3)

video

コード:

mencoder sample.mpeg -ovc lavc -lavcopts vcodec=mpeg4:vqscale=2 -of rawvideo -o sample.mp4v

※ Constant Quantizer(品質ベース)でのエンコード例です。「vqscale=」の値が大きい程ファイルサイズは小さく、画質は悪くなります。Quantizer には「vqscale」以外にも「vqmin」「vqmax」があるそうで。詳細はマニュアルページ mencoder を参照のこと。

audio

コード:

lame sample.wav sample.mp3

remuxing

コード:

mp4creator -create=sample.mp3 sample.mp4
mp4creator -create=sample.mp4v -rate=29.970 sample.mp4

mp4creator はパッケージ mpeg4ip-server に含まれます。
「-rate=」に指定する fps の値は分数値ではなく小数値で指定下さい。詳細はマニュアルページ mp4creator を参照のこと。

この例の場合

コード:

mplayer -ao null -vo null sample.mkv

あるいは

コード:

mencoder -oac pcm -ovc copy -o /dev/null sample.mkv

などで調べられます。

参考: マニュアルページ mp4creator より転載

-r, -rate=<fps>
              Specifies video frame rate (frames per second) when  creating  a
              video  media track. The value can be either an integer or float-
              ing point number. It may be necessary to specify this  parameter
              for some MPEG-4 video streams due to encoding bugs.

remuxing に MP4Box を使うことも出来ます。MP4Box は パッケージ gpac に含まれます。

コード:

ln -s sample.mp4v sample.m4v
MP4Box -fps 29.970030 -add sample.mp3 -add sample.m4v -new sample.mp4

※ 拡張子が .mp4v だと読んでくれない :( 。.m4v か .cmp にすると O.K.
参考: マニュアルページ MP4Box より転載

RAW Formats and extensions

              NHNT (.media .nhnt .info)
              MPEG Audio (.mp3)
              ADTS-AAC (.aac)
              MPEG-4 Visual (.cmp .m4v)
              H263 Video (.263 .h263)
              AVC/H264 Video (.h264 .h26L .264 .26L)
              JPEG Images (.jpg .jpeg)
              PNG Images (.png)
              AMR(WB) Audio (.amr .awb)
              EVRC Audio (.evc)
              SMV Audio (.smv)

※ どうも MP4Box は fps の指定に少し難がある様子。
30000/1001 の場合

コード:

-fps 29.970030

24000/1001 の場合

コード:

-fps 23.976025

出典1 出典2 参考


タグ付け:

既に設定されているタグの確認

コード:

AtomicParsley sample.mp4 -t

新しいタグの付与

コード:

AtomicParsley sample.mp4 --metaEnema --title "Sample Movie" --artist "風流塵" --album "Sample" --year 2008 --comment "……なんか不気味なモン作っちまった :P" --encodingTool "mp4creator - mpeg4ip version 1.6" --freefree --overWrite

・ --metaEnema は事前に設定してあったタグの消去
・ --freefre reclaims the space from the deleted metadata.
・ --title --artist --album --year --comment --encodingTool はそのままの意味
・ --overWrite を指定しない場合は「元ファイルの名前-temp-XXXXX.mp4」(XXXXXは数字列)の書式で新しいファイルが生成され、元ファイルは編集されない。安全だが、タグ付けのたびファイルが増えるので少しうるさい。
出典
パッケージ mplayer-doc 内、

コード:

/usr/share/doc/mplayer-doc/HTML/en/menc-feat-quicktime-7.html

の「14.7.9. Adding metadata tags」
※ 原文: http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-quicktime-7.html
※ コマンドラインからの mp4/m4a/m4v のタグ編集には AtomicParsley が便利です。気が向けば紹介記事を書きます。


参考文献:
パッケージ mplayer-doc に含まれる mencoder の解説記事
目次は以下のファイル

コード:

/usr/share/doc/mplayer-doc/HTML/en/index.html

※ 原文: http://www.mplayerhq.hu/DOCS/HTML/en/index.html


用語:
MP4
mux(=multiplex)
fps(=frames per second)
decoding
encoding
codec
MP3
MPEG-4 ASP
lavc(=libavcodec)
lavf(=libavformat)


その他:
ロスレス

コード:

mencoder sample.mkv -oac lavc -ovc lavc -lavcopts acodec=flac:vcodec=ffv1 -o sample.avi

編集作業用の中間ファイルとして。「-vf」や「-af」を複数回かける場合に有用です(残念ながら -oac copy や -ovc copy ではフィルタがかからないのです)。ただしロスレスのコーデックだとファイルがかなり大きくなるので注意されたし。

最後の編集者: fueryuejing (2008-10-20 20:40:12)

オフライン

 

#5 2008-11-10 19:55:56

fueryuejing
メンバ
From: アジア、南会津町。
登録日: 2007-11-03

Re: 【HowTo】MEncoderの基本的な使い方とちょっとしたTips

mencoder その他を用いた mp4 ファイルの作成 その2 xvid/lame で MPEG-4 ASP + MP3 な MP4 の作成

mencoder の「-of lavf」を利用した例
※ この方法で作ったファイルは totem-xine での再生の際に音が出ませんでした(MEncoder 1.0rc2 時点)。

コード:

mencoder sample.mkv -oac mp3lame -ovc xvid -xvidencopts fixed_quant=2 -of lavf -o sample.mp4

mencoder の「-of lavf」を利用しない例
※ この方法で作ったファイルであれば totem-xine でも音が出ます。

demuxing
video

コード:

mplayer sample.mkv -dumpvideo -dumpfile sample.mpeg

audio

コード:

mplayer sample.mkv -vo null -ao pcm:file=sample.wav

(再生できない Wave ファイルが生成される場合には pcm:waveheader:file=sample.wav などと指定下さい)

encoding
video

コード:

mencoder sample.mpeg -ovc xvid -xvidencopts fixed_quant=2:nopacked -of rawvideo -o sample.xvid

※ Packed B-frames に注意。remuxing 時の障害になる場合もある。

出典: マニュアルページ mencoder のセクション xvidenc より転載

(no)packed
              This  option  is meant to solve frame-order issues when encoding
              to container formats like AVI that cannot cope with out-of-order
              frames.  In practice, most decoders (both software and hardware)
              are able to deal with frame-order themselves, and may  get  con-
              fused  when this option is turned on, so you can safely leave if
              off, unless you really know what you are doing.
              WARNING: This will generate an illegal bitstream, and  will  not
              be decodable by ISO-MPEG-4 decoders except DivX/libavcodec/Xvid.
              WARNING: This will also store a fake DivX version in the file so
              the bug autodetection of some decoders might be confused.

audio

コード:

lame sample.wav sample.mp3

remuxing
mp4creator を用いる場合

コード:

mp4creator -create=sample.mp3 sample.mp4
mp4creator -create=sample.xvid -rate=29.970 sample.mp4

MP4Box を用いる場合

コード:

ln -s sample.xvid sample.m4v
MP4Box -fps 29.970030 -add sample.mp3 -add sample.m4v -new sample.mp4

※ MP4Box での fps の指定例
30000/1001 の場合

コード:

-fps 29.970030

24000/1001 の場合

コード:

-fps 23.976025

用語:
xvid
lame

オフライン

 

#6 2008-11-10 20:05:55

fueryuejing
メンバ
From: アジア、南会津町。
登録日: 2007-11-03

Re: 【HowTo】MEncoderの基本的な使い方とちょっとしたTips

mencoder その他を用いた mp4 ファイルの作成 その3 x264/faac で MPEG-4 AVC + AAC な MP4 の作成

mencoder の「-of lavf」を利用した例
※ このやり方では totem-gstreamer と totem-xine では再生出来ないファイルが出来上がりました(MEncoder 1.0rc2 時点)。

コード:

mencoder sample.mkv -oac faac -ovc x264 -x264encopts qp=18 -of lavf -o sample.mp4

H.264 での Quantizer の値の指定は MPEG での指定と異なるそうで、

コード:

H.264 での指定値 = 12 + 6*log2(MPEG での指定値)

だそうです。

例えばMPEG での 2 と同等の値は

コード:

12 + 6*log2(2) = 12 + 6*1 = 18

となります。

出典: マニュアルページ mencoder の x264enc セクションより転載

qp=<0-51>
              This selects the quantizer to use for P-frames.  I- and B-frames
              are offset from this value by ip_factor and  pb_factor,  respec-
              tively.  20-40 is a useful range.  Lower values result in better
              fidelity, but higher bitrates.  0 is lossless.  Note that  quan-
              tization  in  H.264  works  differently from MPEG-1/2/4: H.264's
              quantization parameter (QP) is on a logarithmic scale.  The map-
              ping  is  approximately H264QP = 12 + 6*log2(MPEGQP).  For exam-
              ple, MPEG at QP=2 is equivalent to H.264 at QP=18.

mencoder の「-of lavf」を利用しない例
※ 以下の方法で作成したファイルは totem-gstreamer と totem-xine 両方で再生出来ました。

demuxing
video

コード:

mplayer sample.mkv -dumpvideo -dumpfile sample.mpeg

audio

コード:

mplayer sample.mkv -vo null -ao pcm:file=sample.wav

(再生できない Wave ファイルが生成される場合には pcm:waveheader:file=sample.wav などと指定下さい)

encoding
video

コード:

mencoder sample.mpeg -ovc x264 -x264encopts qp=18 -of rawvideo -o sample.264

audio

コード:

faac sample.wav -o sample.aac

remuxing
mp4creator を用いる場合

コード:

mp4creator -create=sample.aac sample.mp4
mp4creator -create=sample.264 -rate=29.970 sample.mp4

MP4Box を用いる場合

コード:

MP4Box -fps 29.970030 -add sample.aac -add sample.264 -new sample.mp4

※ MP4Box での fps の指定例
30000/1001 の場合

コード:

-fps 29.970030

24000/1001 の場合

コード:

-fps 23.976025

用語:
MPEG-4 AVC
H.264
AAC
x264
faac

オフライン

 

Board footer

Powered by FluxBB