ffmpegでmp3をエンコードするときに時間情報が正しくなるようにする方法

mp3ファイルには固定ビットレートCBRと可変ビットレートVBRというものがあるらしいが,可変ビットレートの場合にはVBRヘッダという情報が書き込まれていないと再生ソフトやfinderの時間表示がおかしくなる.
私の見たところ,iTunesQuickTime Player, finderの表示はおかしくなり,VLC Playerではリストの表示はおかしくてプログレスバーの時間は正しいようだった.

VBRタグを付加するツールはWindows用のものがいろいろ出回っているようだったが,Mac用のものはよくわからない.
"mp3 bitrate header" などとしてhomebrewで検索して出てくるもののうちどれかがそうである可能性はなくはないが未確認.

で,応急的にというか,VBRにこだわる理由も特にないので,取った対処は以下.

$ ffmpeg -i input.ac3 -ab 128k output.mp3

単にビットレートを指定してやるだけである.それでも,時間長はビットレートとファイルサイズから計算されているようなので,正しく表示されるようになる.
VBRは同等の音質ではファイルサイズが小さくなるが,容量がそこまでシビアでないならCBRでも特に困ることはない.

参考:
Audiograbber関連プログラム
最新ffmpegのオプションまとめ - MobileHackerz Knowledgebase Wiki

2019/3/23追記

可変ビットレートのまま正しく読めるようにするには,-q:aオプションというのを付加してやるとよいようだ.
ringil-blog.info

$ ffmpeg -i input.ac3 -q:a 1 out.mp3

この -q:aは-qscale:aのエイリアスだそうで,つまり引数によって値が可変する範囲を指定しているようだ.
trac.ffmpeg.org