MEncoder

提供: ArchWiki
2019年6月4日 (火) 00:31時点におけるKusakata.bot (トーク | 投稿記録)による版 (Pkg/AUR テンプレートの更新)
ナビゲーションに移動 検索に移動

関連記事

MEncoderMPlayer による動画エンコード/デコードツールです。mencoder パッケージに入っています。

基本

変換するときの基本的な構文は:

mencoder original_video.mpg -o new_video.avi -ovc output_video_codec -oac output_audio_codec

movie.mpg から MPEG-4 Part 2 動画と MP2 音声の movie.avi に変換する場合、コマンドは:

mencoder movie.mpg -o movie.avi -ovc lavc -oac lavc

何もオプションを付けなかった場合、デフォルトで、動画は MPEG-4 フォーマットで音声は MP2 フォーマットで出力されます。

基本的には動画のコンバートに使えますが、他にも多数のオプションが存在します。

MPlayer が再生できるあらゆるフォーマットを MEncoder の入力フォーマットにできるため、MEncoder で使えるかどうか試したいときは、とりあえず MPlayer で再生してみてください。

出力できるビデオコーデック (output video codecs) を一覧するには、次を実行:

$ mencoder -ovc help

同じく、出力できる音声コーデック (output audio codecs) を一覧するには、次を実行:

$ mencoder -oac help

上記の情報は こちら からも確認できます。詳細に説明されています。

サンプル

以下は H.264 でエンコードされた動画と Vorbis でエンコードされた多数の音声トラックが入った .mkv ファイルを作成する例です。

リッピングとエンコードに mencoder (mplayer パッケージに入っています) を使い、.mkv ファイルを作成するのに mkvmerge (mkvtoolnix[リンク切れ: パッケージが存在しません] パッケージに入っています) を使います。

ビデオのリッピングとエンコード

H.264 エンコーダは通常ツーパスで使われます: 最初に動画の情報を読み込んで、それからその情報を使ってエンコードします。音声の抽出はまだ行いません。

コマンドは以下のようになります。変数は適当な値に置き換えて下さい:

# First pass: we are just collecting information, so the normal output is thrown away.
mencoder -dvd-device "$ISO" dvd://"$TITLE" -chapter "$CHAPTER" -o /dev/null -nosound -ovc x264 \
-x264encopts direct=auto:pass=1:turbo:bitrate=900:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf scale=-1:-10,harddup
# Second pass: here we compress the video track using the information from the first step.
mencoder -dvd-device "$ISO" dvd://"$TITLE" -chapter "$CHAPTER" -nosound -ovc x264 \
-x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf scale=-1:-10,harddup -o video.avi

上記のコマンドで動画が入った video.avi ファイルが作成されます。-x264encopts オプションや -vf フィルタで画質を向上させたりファイル容量を削減できます。例えば、-vf crop=$X:$Y,scale=-1:-10,harddup で動画の黒縁を外すことができます。$X$Y は適当な値に置き換えて下さい (MEncoder マニュアルの cropdetect を参照)。-vf scale=$WIDTH:-10,harddup で動画の横幅を小さくすることもできます。$WIDTH を適当な値に置き換えて下さい ($WIDTH は16の倍数にしてください: 640, 480, 320 など)。高さはアスペクト比にあわせて適当に計算されます。

pullup,softskip など他の MEncoder フィルタを使ったり -ofps でフレームレートを変更することも可能です (フレームレートを変更した場合、音声をリッピングするときも同じフレームレートに合わせてください)。

最後の harddup フィルタは重要です: (たとえ重複するフレームがあっても) 全てのフレームを MEncoder から強制的に書きだすようにします。また、元の横幅を維持したり横幅を小さくする場合は scale=$WIDTH,-10$WIDTH-1 にする必要があります。H.264 コーデックは正方形のピクセルを使いますが DVD は長方形のピクセルを使うためです。

音声のリッピングとエンコード

必要な音声トラックを抽出します。以下では Vorbis アルゴリズムで圧縮していますが、他のフォーマットも使えます。MEncoder のマニュアルを確認してください。

コマンドは以下のようになります (変数は適当な値に置き換えて下さい):

# Here we rip and compress the audio.
mencoder -dvd-device "$ISO" dvd://"$TITLE" -alang "$AUDIOLANG" -chapter "$CHAPTER" -ovc frameno \
-oac lavc -lavcopts acodec=vorbis:abitrate=224 -channels 2 -srate 48000 -o "$AUDIOLANG".avi

必要な音声トラックの分だけコマンドを繰り返し実行する必要があります。コマンドを実行することで音声トラックが入った .avi ファイルが作られます。

5.1 チャンネルの DVD を全て抽出したりビットレートを変更するときは -channels 6 を使います。ビデオと同じように、-af で音声フィルタをかけられますが必須ではありません。

最終的な .mkv ファイルの作成

単一のファイルに動画と音声をまとめます。必要であれば他の音声トラックも追加してください:

mkvmerge -D audio.avi -A video.avi -o mymovie.mkv

.mkv ファイルには全てが収められます。複数の音声トラックを維持する必要がない場合、H.264/Vorbis フォーマットのペアで品質を確保できます。

Nokia 5800 XM や Nokia N97 向けに mp4 動画をエンコード

Nokia 5800 xm や Nokia N97 のデフォルトの動画プレイヤーで mp4 動画を見る場合、2パスでビットレートは低くすると視聴しやすくなります (動画のビットレートは 640kbps で音声のビットレートは 96kbs 程度)。

mkv を mp4 にコンバート (nokia 97, 5800 対応)

まず mkv を mpg に変換します。大抵の mkv ファイルは mp4 に直接変換できません。

mencoder "$1" -ovc lavc -lavcopts vcodec=mpeg1video -aid 0 -oac pcm -o delete_me.mpg

mpg ファイルを mp4 に変換します。

mencoder -of lavf -lavfopts format=mp4 -oac lavc -ovc lavc -lavcopts \
aglobal=1:vglobal=1:acodec=libfaac:vcodec=mpeg4:abitrate=128:vbitrate=640:keyint=250:mbd=1:vqmax=10:lmax=10:turbo  -af lavcresample=44100 \
-vf harddup,scale=640:-3 "delete_me.mpg" -o "$1.mp4"

残った mpg ファイルを削除します。

rm "delete_me.mpg"

"$1" は .mkv 形式の動画ファイルの名前に置き換えてください (例: sample.mkv)。-aid 0 は mkv の音声トラックです。

マルチパス (ツーパス) で avi を mp4 にコンバート (nokia 97, 5800 対応)

# First pass:
mencoder -of lavf -lavfopts format=mp4 -oac lavc -ovc lavc -lavcopts \
aglobal=1:vglobal=1:acodec=libfaac:vcodec=mpeg4:abitrate=96:vbitrate=640:keyint=250:mbd=1:vqmax=10:lmax=10:vpass=1:turbo  -af lavcresample=44100 \
-vf harddup,scale=640:-3 "video.avi" -o "video.mp4"
# Second pass:
mencoder -of lavf -lavfopts format=mp4 -oac lavc -ovc lavc -lavcopts \
aglobal=1:vglobal=1:acodec=libfaac:vcodec=mpeg4:abitrate=96:vbitrate=640:keyint=250:mbd=1:vqmax=10:lmax=10:vpass=2 -af lavcresample=44100 \
-vf harddup,scale=640:-3 "video.avi" -o "video.mp4"

After the 2nd pass is done, copy the video.mp4 to nokia 5800 xm or n97's memory card and open the file using file manager of nokia after removing the device from the computer.

we need to run the above two commands in the folder where video.avi is present. play around with abitrate, vbitrate, and scale values to get video quality and size of your liking. alternate formatfactory is a mencoder gpl application for windows which runs in wine, can also convert all-to-mp4.

scale=640:-3 will try to keep the video width to 640 and resize the video height accordingly. Do use the "original" aspect in nokia's mp4 player "option->aspect" for 16:9 and 4:3 aspect ratio videos.

複数の音声が入った多言語の MKV 動画を音声ストリームが複数ある MP4 にエンコード

to encode multi-audio file to mp4 we need to use the "-aid <audio stream number>" like -map 0:1 in ffmpeg)

1. To extract video+audio stream1 (usually english) of mkv file:

mencoder -oac copy -ovc copy -aid 0 sample.mkv -o sample.mp4 

2. To extract video+audio stream2 (usually non-english, like Hindi, French, etc.) of mkv file:

mencoder -oac copy -ovc copy -aid 1 sample.mkv -o sample.mp4

SubRip 字幕をファイルに追加

The following output video codec (-ovc) options are suggested as very high-quality settings and should suffice for most transcodings, including the additon of subtitles to a stream.

ツーパス x264 (高画質)

mencoder original_video.avi -oac copy -ovc x264 -x264encopts pass=1:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -sub original_video.srt -subfont-text-scale 3 -o /dev/null
mencoder original_video.avi -oac copy -ovc x264 -x264encopts pass=2:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -sub original_video.srt -subfont-text-scale 3 -o output_video.avi
  • fast_pskip=0 is a maximum quality placebo preset option.
  • frameref is the only other major option undefined by preset settings.
  • bitrate values can be modified to suit desired file size and quality needs.
  • tune should be set to match the type and content of the of media being encoded.

シングルパス x264 (高画質)

mencoder original_video.avi -oac copy -ovc x264 -x264encopts preset=veryslow:tune=film:crf=15:frameref=15:fast_pskip=0:threads=auto -sub original_video.srt -subfont-text-scale 3 -o output_video.avi
  • The following example uses the option -of lavf to mux the output into a Matroska container which is autodetected from the output file extension .mkv
mencoder original_video.avi -oac copy -of lavf -ovc x264 -x264encopts preset=veryslow:tune=film:crf=15:frameref=15:fast_pskip=0:global_header:threads=auto -sub original_video.srt -subfont-text-scale 3 -o output_video.mkv
  • global_header writes global video headers to extradata, or in front of keyframes and is typically required for .mp4 and .mkv containers.

ツーパス xvid (高画質)

mencoder original_video.avi -oac copy -ovc xvid -xvidencopts pass=1:chroma_opt:vhq=4:max_bframes=1:quant_type=mpeg:threads=6 -sub original_video.srt -subfont-text-scale 3 -o /dev/null
mencoder original_video.avi -oac copy -ovc xvid -xvidencopts pass=2:chroma_opt:vhq=4:max_bframes=1:quant_type=mpeg:bitrate=3000:threads=6 -sub original_video.srt -subfont-text-scale 3 -o output_video.avi
  • threads=n where n = physical, or CPU cores.
  • Recent versions of mencoder enable bvhq=1 as a default setting.
  • Xvid does not accept bitrate settings on the first of multiple-pass encodings.
  • subfont-text-scale 2-3 helps with proper sizing with 16:9 format screens.
  • max_bframes=0 can be set so long as the bitrate is high enough.

スリーパス lavc (高画質 mpeg4)

mencoder original_video.avi -oac copy -ffourcc DX50 -ovc lavc -lavcopts vpass=1:mbd=2:mv0:trell:v4mv:cbp:predia=6:dia=6:precmp=6:cmp=6:subcmp=6:preme=2:qns=2:vbitrate=3000 -sub original_video.srt -subfont-text-scale 3 -o output_video.avi
mencoder original_video.avi -oac copy -ffourcc DX50 -ovc lavc -lavcopts vpass=3:mbd=2:mv0:trell:v4mv:cbp:predia=6:dia=6:precmp=6:cmp=6:subcmp=6:preme=2:qns=2:vbitrate=3000 -sub original_video.srt -subfont-text-scale 3 -o output_video.avi
mencoder original_video.avi -oac copy -ffourcc DX50 -ovc lavc -lavcopts vpass=3:mbd=2:mv0:trell:v4mv:cbp:predia=6:dia=6:precmp=6:cmp=6:subcmp=6:preme=2:qns=2:vbitrate=3000 -sub original_video.srt -subfont-text-scale 3 -o output_video.avi
  • Introducing threads=n>1 for -vcodec mpeg4 may skew the effects of motion estimation and lead to reduced video quality and compression efficiency.
  • predia=6:dia=6:precmp=6:cmp=6:subcmp=6 to predia=3:dia=3:precmp=3:cmp=3:subcmp=3 can reduce encoding times without incurring much loss in quality.
  • vmax_b_frames not included as referenced in the official mencoder documentation as the current default setting is to not to use B-frames at all.
  • vb_strategy not included as referenced in the official mencoder documentation for the same reason as above. Else vb_strategy=2.

シングルパス lavc (高画質 mpeg-2)

mencoder -mc 0 -noskip -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf  -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000   -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=mp2:abitrate=192:aspect=16/9  -sub-bg-alpha 100 -subpos 95 -subfont-text-scale 2.5 -subcp cp1250 -sub subFile.srt  -o outFile.mpg inFile.mkv
  • -mc 0 -noskip to ensure A/V sync
  • aspect - setting video aspect manually
  • subtitle background, subtitle encoding and subtitle scaling

There are as always many options that can be set, this combination ensures that picture looks almost the same as original with slightly smaller file size

(great for converting FULL HD videos so that they are playable on older devices)

VOBsub 字幕をファイルに追加

ツーパス x264 (高画質)

  • Direct -vobsub to the subtitle_file using the full pathname of the file without extensions (.idx/.sub).
  • Select the second subtitle ID language (-vobsubid 2) contained within the VOBsub files (.idx/.sub).
mencoder original_video.avi -oac copy -ovc x264 -x264encopts pass=1:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -vobsub subtitle_file -vobsubid 2 -o /dev/null
mencoder original_video.avi -oac copy -ovc x264 -x264encopts pass=2:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -vobsub subtitle_file -vobsubid 2 -o output_video.avi

Testing subtitle muxing results

Avoid passing resource intensive encoding options in order to verify desired results sooner rather than later.

シングルパス x264 (低画質)
mencoder original_video.avi -oac copy -ovc x264 -x264encopts preset=ultrafast:threads=auto -sub original_video.srt -subfont-text-scale 3 -o output_video.avi
mencoder original_video.avi -oac copy -ovc x264 -x264encopts pass=2:preset=ultrafast:threads=auto -vobsub subtitle_file -vobsubid 2 -o output_video.avi

mp2 vs. mp3lame vs. aac

  • mp2 エンコーディングの場合は toolame の方が FFmpeg の lavc (libavcodec) よりも推奨されます。
  • ビットレートによらず mp3lame の方が (開発が途中の) FAAC よりも推奨されます。

Windows と Mac で読み込めるフォーマットに AVI 動画をエンコード

以下のコマンドを使ってください:

opt="vbitrate=2160000:mbd=2:keyint=132:vqblur=1.0:cmp=2:subcmp=2:dia=2:mv0:last_pred=3"

mencoder -ovc lavc -lavcopts vcodec=msmpeg4v2:vpass=1:$opt -oac mp3lame -o /dev/null input.avi
mencoder -ovc lavc -lavcopts vcodec=msmpeg4v2:vpass=2:$opt -oac mp3lame -o output.avi input.avi

input.avi は Linux ユーティリティを使って作成したい AVI に、"output.avi" は Windows や Mac ユーザーが読むことができる AVI に置き換えてください。

GUI フロントエンド

MPlayer の公式ホームページにはフロントエンドの膨大なリストが存在します: [1]

  • OGMRip — DVD をリッピングして様々なコーデックの AVI, OGM, MP4, Matroska ファイルに変換するアプリケーションとライブラリの集合です。mplayer, mencoder, ogmtools, mkvtoolnix, mp4box, oggenc, lame, faac に依存しています。
http://ogmrip.sourceforge.net/ || ogmripAUR
  • Hybrid — マルチプラットフォーム (Linux/macOS/Windows) で Qt ベースの様々なツールのフロントエンドで、あらゆる入力から avi/mp4/m2ts/mkv/webm コンテナの x264/Xvid/VP8 + ac3/ogg/mp3/aac/flac や、BluRay あるいは AVCHD に変換できます。
http://www.selur.de/ || hybrid-encoderAUR
  • Hyper Video Converter — 様々な cli 動画エンコーダのフロントエンドで、コンソールで3回にわけてコマンドを実行しなくても konqueror から動画をすばやく変換できます。
http://hypervideoconve.sourceforge.net/ || hypervc-qt4AUR
  • jmencode — 便利な MPlayer ソフトウェアのシンプルな java フロントエンドです。元々は DVD を MPEG-4 に変換することに焦点を置いています。
http://jmencode.sourceforge.net/ || jmencodeAUR