mplayer ругается не на два B-кадра, а на способ их вкорячивания. MediaInfo его отображает:
> Muxing mode : Packed bitstreamРутрекер о нём предупреждает:
> Опции кодирования должны быть: ... Packed bitstream - отключено
-bsf:v mpeg4_unpack_bframes на самом деле этот способ меняет и добавляет совместимости с железом. Хотя можно не догадаться, что этот фильтр принимает и видеопоток, создаваемый _внутри_ ffmpeg, без пайпа из одного ffmpeg в другой.
> P.P.S. Почему у тебя не работает двупроходное кодирование с "-qscale:v"?
Оно бесполезно. С -q:v статистика с первого прохода не может ни на что повлиять - результат такой же, как если кодировать в один проход, бит в бит. Считалка md5 пригодится (md5 от файла или встроенная ffmpeg'овая считалка от потока): https://pastebin.com/0CMFfEhi
Кстати, команда с ubuntuforums как будто составлена по принципу "кашу маслом не испортишь", там ещё -cmp и -subcmp ничего не делают - они не действуют в связке с libxvid. А нужен -me_quality без -cmp и -subcmp.
По-хорошему надо ещё исправлять[2][3] обратно цвет при уменьшении HD-видео до SD-видео. Он искажается, потому что... это долгая история, но mpv подтвердит.
У меня родилась творчески отформатированная баТпортянка с разбором опций. Значения не исследовал, только причесал код, сопоставил опции с xvid_encraw, добавил ссылки, которые могут пригодиться:
https://pastebin.com/jLMbicMV
[1] https://superuser.com/questions/1483338/cant-get-same-xvid-q...
[2] в Avisynth: ColorMatrix(mode="Rec.709->Rec.601"), в ffmpeg сработает -vf zscale=matrixin=709:matrix=170m, но почему он сработает как надо - это ещё одна долгая история.
[3] http://avisynth.nl/index.php/Colorimetry#Should_I_correct_an...