†ぽんこつビデオ工房†
作成開始日 2017.07.13
最終更新日 2019.05.06
フレームレートは「-r」オプションで指定するが、小数指定は避け《分数指定》とすること。-r 29.97 ○ -r 30000/1001 ことの起こりは、ショート作品を1クール分(12本)バインドしようとしたとき。 欠番をネットで拾ったファイルで補ったのだが、 フレームレート違いでワーニング出まくり(TV録画分は29.97fps、ネットは25fps) もちろん、再生するとタイミングがおかしくなる じゃあ、フレームレートを揃えればいいじゃない、と-r 29.97で変換したのだが、 今度はtbnが変な値を示して、ワーニングこそ消えたが、正常再生不可能。 で、ネット情報に従って-r 30000/1001のように分数指定にしたら、 tbnがまともな数値になり、正常再生可能に。 どうも、計算誤差が効いてくるらしんだが…従って整数値ならば問題ないのだが… ともかく、これで正常にバインドできるようなる。 で、も一つ忘れてはいけないのは、音声のサンプリングレートの統一。 TV録画分は48kHzだが、ネット動画は44.1kのものもある(の方が多い?)。 そのままバインドすると、当然音ズレが発生する。 ffmpe -i inp.mp4 -s 720x480 -r 30000/1001 -ar 48000 out.mp4 みたいな形でフォーマットを統一すると良いようだ
ともに所謂《mpeg4》だが、「libxvid」の方が互換性・汎用性はずっと高い。
「ff-mpeg4」に対応していないプレイヤーはけっこうある(特にDPF)。
が、それ以上に重要な違いは、可変q値で変換した場合の振る舞い。
たとえば、以下のような変換をする場合(q値を4〜8の間とする);
ffmpeg -i inp.vob -vcodec ○○○○ -qmin 4 -qmax 8 -b 1200k out.mp4○○○○が「libxvid」だと、q値の範囲はかなり厳密に守られるが、変換速度は遅い(「mpeg4」の半速)。
つまり、「libxvid」は1passでもビットレートの最適化割り当てをきちんと行っており、
「mpeg4」の2pass変換に近い処理を行っているのではないか?
それゆえ、変換時間が倍掛かり、2pass変換は正常に行えない−−と考えるとスッキリする。
「mpeg4」で2pass変換するなら、「libxvid」で可変q値変換する方が手間が掛からない、というカンジ。
なお、「libxvid」でq値が指定範囲内に収まらないような場合には、ビットレートにしわ寄せが行くようになっている。
ゆえに、「mpeg4」の2pass変換ほど正確にファイルサイズを予測することはできない(だいたいいい感じに収まるけど)。
-af volume=<xx> | 相対倍率(0.5とか1.5とか4とか言った値) |
-af volume=<xx>dB | 絶対音圧(10dBくらいが実用上限かな?基準の取り方が良く判らない) |
-af volume=±<xx>dB | 相対音圧(現在値からの増減幅を指定) |
-af dynaudnorm | 標準化(radikoのラジオ録音と同程度;平均化ではない) |
まあ、ネットで拾った動画ファイルの音量適正化程度ならば、-af dynaudnormが便利かと…と思ったが、実はdynaudnormは再生時にかなり大きな負荷が掛かることが判った。非力なプレイヤーを使う場合は、指定しない方が良い。
ffmpeg -i inp.mp4 -vcodec copy -af volume=2 out.mp4 ffmpeg -i inp.mp4 -vcodec copy -af volume=6dB out.mp4 ffmpeg -i inp.mp4 -vcodec copy -af volume=+3dB out.mp4 ffmpeg -i inp.mp4 -vcodec copy -af dynaudnorm out.mp4
-vol | -af volume= | 倍率 |
64 | 0.25 | 1/4 |
128 | 0.5 | 半分 |
256 | 1 | 標準 |
512 | 2 | 2倍 |
1024 | 4 | 4倍 |