Какой MP4 выбрать из поста X
X публикует одно и то же видео в нескольких MP4-версиях. Часто они совпадают по разрешению и различаются битрейтом, поэтому верхняя строка списка — не всегда то, что вам нужно.
Вставьте ссылку на пост — и вы получите версии видео в том порядке, в каком их перечисляет X, от большего разрешения к меньшему. Этот порядок — отправная точка, а не приговор: разрешение — лишь размер кадра, и два файла одного размера кадра могут колоссально различаться объёмом данных на каждую секунду картинки.
Что читает резолвер
X не требует входа для этого. Резолвер запрашивает публичный эндпоинт синдикации X (cdn.syndication.twimg.com/tweet-result) для поста, используя ту же схему подписанного токена, что и встраиваемая лента. Ответ несёт текст поста, его автора и массив videos со всеми MP4-версиями, которые X для него хранит.
Сохраняются только видео и GIF. В X анимированный GIF отдаётся как файл MP4, поэтому пост с GIF скачивается как видео без звука — ровно то, что хранила платформа. Посты, где единственное видео — прямой эфир, или где X вообще не возвращает смикшированный MP4, отвечают no_video.
Как строятся подписи
- Если URL файла называет размер кадра (
…/1280x720/…), подпись — этот размер. - Если нет, подпись — битрейт, округлённый до кбит/с.
- Если нет ни того ни другого, строка — просто
MP4. - Строки отсортированы по ширине, от большей к меньшей, а не по битрейту.
Последний пункт важен. Версии X — не гладкая лестница: пост может нести файл 1280 пикселей с низким битрейтом и файл 720 пикселей с куда более высоким. Более широкий файл крупнее на экране; меньший может выглядеть лучше в движении, потому что на каждый пиксель тратится больше бит.
Наглядное сравнение
| Строка | Кадр | Для чего годится |
|---|---|---|
| 1280×720 при низком битрейте | Широкий кадр, мало данных на пиксель | Экраны, где нужен полный кадр и можно принять мягкое движение. |
| 720×720 при высоком битрейте | Квадратный кадр, много данных на пиксель | Более чистое движение и детали, но меньшая картинка. |
| 480×270 (мобильная нарезка) | Маленький кадр | Единственная версия у некоторых старых постов; примите размер или пропустите. |
Практическое правило: выбирайте самую широкую строку, если только она заметно не выглядит кашей по сравнению со следующей. Сомневаетесь — скачайте две и сравните размеры файлов: файл вдвое тяжелее при половинном размере кадра тратит биты на движение и детали.
Почему скачивание — переход, а не прогресс-бар
Файлы видео живут на video.twimg.com, который не отправляет заголовки CORS для такого запроса. Поэтому страница не может прочитать байты скриптом, и кнопка скачивания открывает ссылку CDN напрямую, а файл сохраняет ваш браузер. Плюс в том, что ничто из видео не проходит через этот сайт; минус — нет счётчика процентов.
Что скачать нельзя
Закрытые аккаунты, удалённые посты и посты с возрастным ограничением возвращают ошибку, потому что сам X скрывает их от анонимных читателей. Резолвер никогда не входит в аккаунт и не обходит это. URL video.twimg.com тоже нельзя вставить сами по себе: резолвер начинает со ссылки на пост, поскольку только полезная нагрузка поста называет версии.
Коротко
- Строки отсортированы по ширине кадра, а не по качеству.
- Две версии могут совпадать по разрешению и различаться битрейтом; более тяжёлый файл обычно выглядит лучше.
- Посты с GIF приходят как файлы MP4, потому что именно это хранил X.
- Только публичные посты — закрытые и удалённые остаются скрытыми.
- Ничего не сохраняется и не перекодируется; файл идёт прямо с CDN X.
Вопросы
Почему верхняя строка выглядит не лучшей?
Потому что список отсортирован по ширине кадра, а более широкий кадр не обязательно тяжелее. Если меньшая строка несёт больше бит на пиксель, она может выглядеть чище в движении. Сравните размеры файлов, прежде чем считать верхнюю строку победителем.
Можно ли скачать видео из закрытого аккаунта X?
Нет. X не показывает закрытые посты анонимным читателям, а этот инструмент не входит в аккаунт и не обходит это. Разрешаются только публичные посты.
Почему для скачивания из X нет прогресс-бара?
`video.twimg.com` не отправляет заголовки CORS, поэтому страница не может прочитать байты видео. Кнопка ведёт по ссылке CDN, и файл скачивает ваш браузер сам.