Из-за чего видео отправляется не правильно для web версии Telegram?
Описание проблемы:
Сейчас ситуация такая: при отправке через Telethon видеофайлов весом более 50 МБ возникает проблема с их отображением в Web-версии Telegram. Видео отправляется с корректными атрибутами (указаны продолжительность и разрешение), однако оно не открывается для просмотра — остается некликабельным.
По вводным: при этом на других платформах (мобильные приложения и Desktop-версия) всё работает нормально. Видеофайлы размером менее 50 МБ также отправляются и воспроизводятся без нареканий. Сами видеофайлы, которые отображаются некорректно, полностью исправны: при ручной загрузке через интерфейс Telegram всё работает нормально.
Вопрос:
Из-за чего так происходит или с чем это связанно?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
У Telegram есть разные ограничения и особенности обработки видео в зависимости от клиента. Если файл через Telethon отправляется корректно в Desktop и мобильных клиентах, но в Web остаётся некликабельным, чаще всего проблема в атрибутах документа, MIME type, контейнере/кодеке или в том, что Web-клиент не может обработать способ загрузки большого файла как streamable video.
Сначала проверьте файл через ffprobe:
ffprobe -hide_banner video.mp4
Для максимальной совместимости обычно нужен MP4-контейнер, H.264 video, AAC audio, moov atom в начале файла. Если moov atom в конце, браузерный клиент может плохо стартовать воспроизведение. Исправляется так:
ffmpeg -i input.mp4 -c copy -movflags +faststart output.mp4
В Telethon важно отправлять видео как media/document с корректными атрибутами:
from telethon.tl.types import DocumentAttributeVideo await client.send_file( entity, 'output.mp4', supports_streaming=True, attributes=[ DocumentAttributeVideo( duration=duration, w=width, h=height, supports_streaming=True ) ], mime_type='video/mp4' )
Если файл больше 50 МБ, Web-клиент может вести себя иначе из-за способа предпросмотра и CDN. Ручная загрузка через интерфейс Telegram может добавлять или нормализовать атрибуты, которые вы не передаёте из Telethon. Поэтому сравните объект сообщения после ручной загрузки и после Telethon: attributes, mime_type, size, supports_streaming.
Ещё проверьте, что видео не HEVC/H.265. Мобильный клиент может его воспроизвести, а браузерный Telegram — нет. Для совместимости перекодируйте:
ffmpeg -i input.mov -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k -movflags +faststart output.mp4
Итог: делайте MP4/H.264/AAC,
+faststart, явно задавайтеmime_type='video/mp4',supports_streaming=Trueи корректныйDocumentAttributeVideo. Если после этого Web всё равно не открывает файл, сравните raw message с ручной загрузкой — отличие почти всегда видно в атрибутах документа.