Почему видео в мессенджере иногда становится хуже
Мессенджер может сжать видео или показать плохой предпросмотр.

Мессенджер может сжать видео или показать плохой предпросмотр.

Проверка занимает один короткий ролик. Вы сравните файл до отправки и после скачивания, отделите постоянное изменение от плохого предпросмотра и поймёте, когда выбирать отправку как файл.
В статье вы узнаете:
Представим такую проверку. Аня сняла на телефон 30-секундный ролик. Исходный файл занимает 60 МБ и имеет разрешение 1920 на 1080 пикселей. После отправки и скачивания из чата файл занимает 9 МБ, а его разрешение равно 1280 на 720 пикселей. На листьях и волосах пропали мелкие детали, при движении появились смазанные пятна. Для расчёта предположим, что в обоих файлах звуковая дорожка имеет средний битрейт 128 кбит/с.
Битрейт показывает, сколько данных в среднем приходится на одну секунду. Один байт содержит 8 бит, поэтому 60 десятичных МБ за 30 секунд дают общий поток 60 × 8 / 30 = 16 Мбит/с. После вычитания 0,128 Мбит/с звука на видео остаётся 15,872 Мбит/с. Для копии расчёт такой же: 9 × 8 / 30 = 2,4 Мбит/с всего и 2,272 Мбит/с для видео.
Эти значения можно воспроизвести в калькуляторе битрейта и размера видео. Выберите «Битрейт по размеру», укажите 30 секунд, сначала 60 МБ, затем 9 МБ, а для звука оставьте 128 кбит/с. Калькулятор считает так, будто указанный размер занят только видео и звуком. Он не отделяет контейнер, метаданные, субтитры и другие возможные потоки. Их доля без анализа самого файла неизвестна, поэтому видеобитрейт служит ориентиром.
Полученная копия несёт примерно в семь раз меньше видеоданных за каждую секунду. Одновременно число пикселей в кадре уменьшилось более чем вдвое: 1920 × 1080 дают 2 073 600 пикселей, 1280 × 720 дают 921 600. Значит, сервис или приложение создало другую версию ролика. По этим двум числам ещё нельзя восстановить точные настройки обработки, зато причину ухудшения уже не приходится искать в экране телефона.
Меньший файл быстрее доходит до получателя и расходует меньше трафика. Насколько именно, можно оценить в калькуляторе времени передачи файла по размеру готовой копии и полезной скорости соединения.
Камера уже сохраняет видео в сжатом виде. Она превращает последовательность кадров и звук в файл, который занимает разумное место. Когда мессенджер готовит ролик к показу в чате, он может повторить эту работу с другими настройками.
Повторное преобразование называется транскодированием. Программа читает готовое видео, восстанавливает кадры и кодирует их снова. На этом этапе она может уменьшить ширину и высоту, изменить частоту кадров, выбрать другой способ сжатия и ограничить средний битрейт, то есть количество данных на секунду.
Есть и более бережный вариант. Приложение может только переложить готовые аудио- и видеопотоки в другой контейнер без нового кодирования. Контейнер можно представить как коробку, где лежат видео, звук, субтитры и служебные сведения. Замена коробки сама по себе не обязана портить содержимое.
Сервисы создают облегчённые версии, чтобы ролик открывался при разной скорости соединения и на разных устройствах. В руководстве W3C по веб-видео описан распространённый подход: из одного исходника готовят несколько версий, а проигрыватель выбирает подходящую.
Конкретный мессенджер может обрабатывать личные чаты, каналы и отправку файлов по-разному. Правила также меняются после обновлений. Поэтому полезнее проверить собственный путь файла, чем запоминать чужую инструкцию с кнопкой, которая через полгода переедет в другое меню.
Битрейт показывает, сколько данных в среднем достаётся одной секунде видео. Если длительность осталась прежней, а поток сократился почти в семь раз, кодировщику приходится описать те же события гораздо короче.
На спокойном кадре с однотонной стеной это может пройти почти незаметно. Сложнее упаковать воду, листву, конфетти, дым, волосы, мелкий текст и быстрый поворот камеры. Соседние кадры сильно меняются, а мелкие элементы требуют данных. При жёстком ограничении они превращаются в пятна, ступеньки на границах, цветные полосы или заметные блоки.
Снижение разрешения действует иначе. В кадре физически остаётся меньше пикселей. Если версию 1280 × 720 растянуть обратно до 1920 × 1080, экран добавит промежуточные пиксели, но не вернёт ресницы, травинки и буквы, которых уже нет в уменьшенном файле.
Повторное кодирование добавляет ещё одну причину потерь. Исходник с телефона уже приблизительно описал картинку. Следующий кодировщик работает не с реальной сценой, а с первым сжатым результатом и снова решает, какие детали можно отбросить. Поэтому цепочка «снял, экспортировал, отправил, скачал, переслал ещё раз» иногда старит ролик быстрее, чем семейный архив на антресоли.
При этом более низкий битрейт не всегда означает худшую картинку. Новый способ сжатия, или кодек, может использовать данные эффективнее старого, а разговор у неподвижной стены требует меньше потока, чем футбольный матч. Сравнивать нужно один и тот же фрагмент, а не два разных видео по одному числу.
Проигрыватель может начать с облегчённой версии, чтобы видео открылось сразу. После загрузки он переключается на более качественную. Если ролик сначала мутный, а через несколько секунд становится резче, это похоже на выбор качества по соединению, а не на окончательную порчу файла.
На результат также влияют режим экономии трафика, ручная настройка качества и качество связи у получателя. Два человека могут открыть одно сообщение и увидеть разные версии. Скриншот их экранов в таком случае сравнивает режимы просмотра, а не обязательно файлы.
Проверка простая. Дождитесь полной загрузки, выберите высокое качество, если такая настройка есть, затем скачайте ролик на устройство и откройте его обычным видеоплеером. Сравните длительность, размер кадра и размер файла с оригиналом. Если скачанная версия сохранила длительность, разрешение и близкий размер, а вне мессенджера выглядит хорошо, это сильный признак проблемы предпросмотра. Но такие свойства не доказывают, что файлы одинаковы: видео можно заново закодировать с тем же разрешением и длительностью. Точное совпадение подтверждает только побайтовое сравнение или одинаковая контрольная сумма файлов. Если скачался меньший файл с другим разрешением, изменилась сама доступная копия.
Иногда сервис хранит оригинал, но кнопка обычного скачивания отдаёт версию для просмотра. Иногда оригинал удаляется или вообще не загружается. По картинке в чате эти варианты не различить, поэтому важный ролик нельзя доверять единственной копии в переписке.
Возьмите короткий фрагмент, где есть лицо, движение, мелкий текст и тёмный участок. По такому ролику легче заметить упрощение деталей, чем по белой стене. Дальше пройдите одну последовательность:
Для семейного ролика, который должны быстро посмотреть в чате, облегчённая копия может быть удачным обменом. Для исходника монтажа, видео с мелкими надписями, доказательства состояния вещи или материала для печати важнее сохранить каждый доступный пиксель. Тогда выбирайте режим, который прямо обещает передачу файла без изменения, либо отправляйте ссылку на скачивание оригинала из хранилища.
Отправка как файл не является волшебной защитой для всех сервисов. У неё бывают ограничения по размеру, сроку хранения и формату, а отдельные приложения всё равно создают собственный предпросмотр. Проверять нужно скачанный файл, который получит адресат.
Если мессенджер всё равно перекодирует видео, лучше готовить одну аккуратную версию из исходника. Не сохраняйте ролик из чата и не загружайте его снова несколько раз. Каждый новый проход может добавить потери, а улучшить уже выброшенные детали ползунком качества не получится.
Файл 9 МБ не обязан выглядеть в 6,7 раза хуже файла 60 МБ. Размер складывается из длительности, видео, звука и служебных данных. На вид результата влияют кодек, разрешение, частота кадров, сложность сцены и настройки кодировщика.
Средний битрейт тоже прячет распределение данных. Кодировщик может отдать спокойной заставке мало, а сцене с движением больше. Два файла с одинаковым средним значением способны выглядеть по-разному. Поэтому калькулятор битрейта видео честно связывает поток, длительность и размер, но не подписывает результат словами «хорошо» или «плохо».
Надёжный вывод строится на паре одного и того же ролика. Сначала сравните свойства, затем одинаковые кадры, потом способ отправки. И обязательно сохраните исходник вне чата. Мессенджер хорошо доставляет сообщения, но должность единственного хранителя семейного архива ему никто не выдавал.
Напишите своё мнение, комментарий или предложение.