Найти в Дзене
ДзенФорматор

Видео для Telegram-чата.

TL;DR — видео: Baseline 3.0 640x360 ~800 кбит/с VBR, однопроходный аудиофайл aac 128 VBR .. есть официальное заявление... ... различия видеокодеков H265 и H265... Telegram использует H.264\H.265, а MPEG-4 является обязательным контейнером.
Если вы загружаете видеофайл с компьютера, то в случае, если размер файла превышает 10 МБ, он будет помечен как file и не будет воспроизводиться в веб-приложении или приложении для Android. Однако его можно будет воспроизвести на iPhone. В этом конкретном случае битрейт и разрешение не имеют значения. При загрузке видеофайла с телефона, если вы не выберете upload as uncompressed file специально, что отключит воспроизведение, приложение Android закодирует ваше видео (даже если вы использовали более качественную кодировку) в следующий формат:
Видео: Baseline 3.0 640x360 ~800 VBR за один проход
Аудио aac 128 VBR
Что вы можете сделать?
Вы можете создать файл на компьютере, отправить его себе в виде file и загрузить в Telegram с помощью телефо

TL;DR — видео: Baseline 3.0 640x360 ~800 кбит/с VBR, однопроходный аудиофайл aac 128 VBR

.. есть официальное заявление...

https://www.nic-tech.ru/blog/istoriya-videonablyudeniya/.....
https://www.nic-tech.ru/blog/istoriya-videonablyudeniya/.....

... различия видеокодеков H265 и H265...

Telegram использует H.264\H.265, а MPEG-4 является обязательным контейнером.
Если вы загружаете видеофайл с
компьютера, то в случае, если размер файла превышает 10 МБ, он будет помечен как file и не будет воспроизводиться в веб-приложении или приложении для Android. Однако его можно будет воспроизвести на iPhone. В этом конкретном случае битрейт и разрешение не имеют значения.

При загрузке видеофайла с телефона, если вы не выберете upload as uncompressed file специально, что отключит воспроизведение, приложение Android закодирует ваше видео (даже если вы использовали более качественную кодировку) в следующий формат:
Видео: Baseline 3.0 640x360 ~800 VBR за один проход
Аудио aac 128 VBR
Что вы можете сделать?
Вы можете создать файл на компьютере, отправить его себе в виде file и загрузить в Telegram с помощью телефона.

Примера видео с использованием этого метода:

Исходное видео:
1:04:02, Main 3.1, 1280x720, 700 kbps VBR double pass, AAC 128 VBR общий размер файла - 379 МБ
После загрузки в Telegram:
1:04:02, Baseline 3.0 640x360 798 kbps VBR (
возможно, одинарный проход), AAC 125 VBR, общий размер файла - 424,2 МБ

В результате видео потеряло часть качества и увеличилось в размере на 11,87%, но воспроизводится Telegram-плеером, что удобно, ибо он поддерживает режим «картинка в картинке».

Размеры могут быть установлены по видеоформату режима.
В качестве кодека и контейнера можно использовать H.264\
H.265 и MPEG-4.
Пример с понижением качества видео и аудио:
fmpeg -i input_video_file.mp4 -c:v libx264 -c:a aac -ar 22050 -ac 2 -b:a 64k -s 640x360 output_video_file.mp4
fmpeg -i input_video_file.mp4 -c:v libx265 -c:a aac -ar 22050 -ac 2 -b:a 64k -s 640x360 output_video_file.mp4
... все форматы разрешения видеоизображений

После преобразования видео и разрешения(контейнер .mp4) Telegram начал показывать его как видео, которое можно воспроизводить, а не просто как файл для скачивания (как в web и android).

При таком разрешении размер видеофайла также уменьшился, но не точно, что Telegram ориентирован именно на размер файла.

Использование разрешение 848x480 для сохранения 16:9 соотношение сторон.

ffmpeg -i input.mp4 -c:v libx264 -s 848x480 output.mp4
отмасштабирует только видео до разрешения 848:480(FWVGA)

Рекомендации по командам ffmpeg для оптимизации видео для воспроизведения в Telegram-плеере.

Видеокодек: x264 (avc) или x265 (hevc)
аудиокодек: aac
аудиоканалы: до 2

Параметр scale позволяет масштабировать и одно видео. Например, команда
х264
ffmpeg -i input.mp4 -c:v libx264 -scale 1920:1080 output.mp4
масштабирует видео до разрешения 1920:1080
х265
ffmpeg -i input.mp4 -c:v libx265 -scale 1920:1080 output.mp4
масштабирует видео до разрешения 1920:1080

Рекомендация:
max_muxing_queue_size 9999 - предотвращает ошибку выделения памяти при кодировании видео с высоким разрешением. (Слишком много пакетов в буфере выходного потока)

c:v libx264 - кодек x264 требует меньше ресурсов процессора, предотвращая сбои на старых смартфонах

maxrate 4.5M - Устанавливает максимальную пиковую скорость передачи данных в сложных сценах, чтобы избежать сбоев при слабом интернет-соединении.

crf 23 - Устанавливает постоянный коэффициент качества. Может быть переопределен настройкой битрейта

preset faster — предустановки фильтра оптимизации изображений при кодировании, которые влияют на конечный размер в обратной зависимости от времени обработки. «Быстрее» обеспечивает наилучшее соотношение цены и качества, по мнению тренера и автора Яна Озера

flags +global_header - Добавляет в файл глобальные метаданные, полезные для проигрывателя

pix_fmt yuv420p - Большая совместимость со старыми смартфонами

profile:v baseline - Большая совместимость со старыми смартфонами

movflags +faststart - Переупорядочивает выходной файл таким образом, чтобы важные метаданные располагались в начале файла

c:a aac - Аудиокодек, требуемый Telegram

ac 2 — Ограничение до 2 аудиоканалов (стерео). При превышении этого значения Telegram не запустит файл.

Пример: ffmpeg -i "input.mkv" -max_muxing_queue_size 9999 -c:v libx264 -crf 23 -maxrate 4.5M -preset faster -flags +global_header -pix_fmt yuv420p -profile:v baseline -movflags +faststart -c:a aac -ac 2 "output.mp4"

Для пакетной оптимизации видео
VIDQA — библиотека Python для пакетной оптимизации видео, совместимая с Telegram

Чтобы создать видео, которое будет распознаваться внутренним проигрывателем Telegram (и вы сможете воспроизводить его на месте), вы можете использовать инструмент для обработки мультимедиа FFMPEG для преобразования видео следующим образом:

ffmpeg -i INPUT_FILE.mkv \
-c:v libx264 -profile:v baseline -c:a aac -ar 44100 -ac 2 -b:a 128k \
-vf format=yuv420p \
OUTPUT_TELEGRAM_VIDEO.mp4