Перейти к содержимому

YouTube to MP4 API

Автор Команда TunelioОпубликовано

YouTube to MP4 API превращает ссылку на видео в прямую ссылку на MP4, которую приложение может использовать сразу — вплоть до 4K. В этом руководстве показано, как выбрать разрешение и получить готовую ссылку на MP4 одним запросом к Tunelio API.

Как работает YouTube to MP4 API

Вы отправляете ссылку на YouTube и нужное разрешение, а API возвращает подписанную ссылку на скачивание собранного MP4 (видео и аудио вместе). Нет очереди рендеринга и опроса статуса — ссылка приходит в том же ответе.

Сначала список разрешений, потом загрузка

Вызовите GET /info, чтобы узнать, какие разрешения есть у видео и сколько весит каждый MP4, затем вызовите GET /create с выбранным quality. Пример ниже запрашивает 1080p:

# Доступные разрешения MP4 и размеры (6 кредитов)
curl "https://tunelio.dev/info?url=https://youtu.be/dQw4w9WgXcQ" \
  -H "Authorization: Bearer tnl_your_api_key"

# Прямая ссылка на MP4 1080p (10 кредитов)
curl "https://tunelio.dev/create?url=https://youtu.be/dQw4w9WgXcQ&quality=1080p" \
  -H "Authorization: Bearer tnl_your_api_key"

Ответ create содержит url на MP4, предлагаемое имя файла, итоговый file_size в байтах и метку expires, показывающую, как долго действует подписанная ссылка.

Доступные разрешения MP4

  • 144p, 240p, 360p, 480p — небольшие файлы для превью и пользователей с медленным каналом.
  • 720p и 1080p — обычные «HD»-загрузки для большинства приложений.
  • 2160p (4K) — доступно на тарифе Mega для источников с высоким разрешением.

Пример на Node.js

const res = await fetch(
  "https://tunelio.dev/create?" + new URLSearchParams({
    url: "https://youtu.be/dQw4w9WgXcQ",
    quality: "1080p",
  }),
  { headers: { Authorization: "Bearer " + process.env.TUNELIO_KEY } }
);
const { url, filename, file_size_str } = await res.json();
console.log(filename, file_size_str, url);

Сохраните MP4 в своё хранилище

Поскольку /create возвращает обычную HTTPS-ссылку, MP4 можно стримить прямо на диск или в объектное хранилище, не буферизуя весь файл в памяти. Получив url из ответа /create, делаете обычный GET:

import requests

with requests.get(download_url, stream=True) as r:
    r.raise_for_status()
    with open("video.mp4", "wb") as f:
        for chunk in r.iter_content(1 << 20):
            f.write(chunk)

Если ссылка пережила свою метку expires, вызовите GET /create ещё раз за свежей — метаданные из GET /info не изменились, так что повторяется только последний шаг, а не повторный разбор видео.

Дальше

Смотрите полную документацию API с полной схемой ответа, кодами ошибок и лимитами — или заберите 100 бесплатных кредитов и запросите первую ссылку на MP4.

Частые вопросы

Умеет ли API скачивать 4K MP4 с YouTube?

Да. Запросите quality=2160p на тарифе Mega, чтобы получить ссылку на 4K MP4, если у исходного видео есть 4K-версия.

MP4 — это один файл со звуком?

Да. /create возвращает собранный MP4 с видео и аудио вместе, так что скачанный файл играет сразу, без отдельного слияния.

Как долго действует ссылка на скачивание?

Подписанная url содержит метку expires — обычно несколько часов, — после чего вы просто запрашиваете свежую.

Похожие руководства