ffmpeg でええやん。
さて、いろいろなモロモロがあって ffmpeg でエンコードできないとき、mpv でエンコードを走らせることになった。YouTube とか、いろんな色の円盤とか、そういうのが一発でエンコードできてしまうので、やっぱり必要になってくる。ニコ動にも対応してくれ。
--o=<filename>
ファイル名の指定。拡張子でフォーマットを自動判定する。
--of=<format>
フォーマットの指定。拡張子での推測を上書きする。help を指定すると一覧が見れる。
拡張子がウソをつくのもあれなので、普段は使わなくてよいのでは。
--ofopts=<options>
フォーマットオプション。helpを指定すると一覧が見れる。
よくわからないので使ってない。たぶんカンマ区切り。
--oac=<codec>
オーディオコーデック。help を指定すると一覧が見れる。
aac, vorbis, libfaac, libfdk_aac, libmp3lame あたりが標準的かな。
--oaoffset=<value>
オーディオのオフセット。単位は秒。
--oacopts=<options>
オーディオコーデックのオプション。help を指定すると(ry
b=<bitrate(bits/s)>, ar=<sampling rate(Hz)>, ac=<channels> など。
--ovc=<codec>
ビデオコーデック。help で(ry
libx264, libx265 あたりを使っておけばいいのでは。
--ovoffset=<value>
ビデオのオフセット。
--ovcopts=<options>
ビデオコーデックのオプション。help(ry
b=<bitrate (bits/s)>, x264-params=<params>, x265-params=<params> など。
x26?-params はコロン区切りの ffmpeg で使うやつがそのまま使える。
x265-params=crf=24:bframe=2 みたいな
まとめると、
mpv ytdl://fuga --o="hoge.mp4" --oac=libfdk_aac --oacopts=b=384000 --ovc=libx265 --ovcopts=x265-params=crf=24
みたいな感じになる。コーデックでcopyはできないっぽいですね。
追記: mpv、なんか知らんけど非常に結果の画質が悪いっぽいということがわかった。面倒でも生のデータを抽出したうえで、ffmpeg にかけたほうが断然よいみたい。