Ubuntu日本語フォーラム
ログインしていません。
このトピックでは 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)
オフライン
公式サイト
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)
オフライン
著作権上これといって問題のないサンプルムービーを用意しました。動画変換の 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 での作業例を示すつもりです。
例によって技術的なことはよく分からないので訂正&補足よろしくです(感性には自信があります……って解説記事の執筆には意味ないか)。
オフライン
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)
オフライン
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
オフライン
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
オフライン