... продолжение предыдущего поста
В итоге пришли к более универсальной команде:
она сама учитывает SAR, “выпрямляет” картинку и заодно подгоняет размер под требования кодека (чётные width/height), чтобы не ловить сюрпризы на разных девайсах.
ffmpeg -i input.mp4 \
-vf "scale='iw*sar':ih, pad='ceil(iw/2)*2':'ceil(ih/2)*2', setsar=1" \
-c:v libx264 -crf 19 -preset fast \
-c:a copy output_fixed.mp4
После этого
video_player работает нормально
эмулятор работает
Web работает
никаких костылей в коде
Побочный бонус — производительность.
Анаморфное видео почти всегда означает лишнюю работу при показе:
плееру приходится постоянно скейлить/растягивать картинку
лишняя нагрузка на GPU (иногда CPU)
С квадратными пикселями (SAR = 1:1):
меньше сюрпризов
меньше преобразований
дешевле отрисовка
Особенно заметно на слабых устройствах или когда видео не одно, а в ленте.
Вывод простой
Flutter не «ломает» видео.
Ломает его наследие прошлого — anamorphic encoding,
которое в кроссплатформенных приложениях почти всегда создаёт больше проблем, чем пользы.
Post #58
562
- ❤ 2