Перейти к основному содержанию

Краткий ответ

[InvalidParameter] Failed to download https://… означает, что сервис модели не смог загрузить медиафайл по переданной вами ссылке. Это не сбой шлюза APIYI и не связано с вашим ключом, параметрами или повреждённым файлом. Обычно причина в том, что ваш источник находится слишком далеко от материкового Китая или соединение нестабильно, поэтому загрузка не завершается до истечения отведённого времени.

Во-первых, мы не загружаем медиафайл

API передаёт input.media[].url в сервис модели как есть, а сервис модели напрямую загружает файл из вашего источника. Поэтому:
  • В журналах нашего шлюза не будет записи о загрузке этого MP4; отсутствие такой записи с нашей стороны — ожидаемое поведение;
  • Запросы на загрузку, которые вы видите в nginx вашего источника, поступают от загрузчика сервиса модели, а не от серверов APIYI.

Какая из трёх причин применима

Если один и тот же файл (с идентичным SHA-256) и загружался успешно, и завершался ошибкой, можно предположить, что применима первая причина.

Измерения

Мы одновременно загрузили один и тот же эталонный видеофайл размером 1,5 МБ: Срок загрузки на стороне модели составляет примерно 3 минуты (180 с), поэтому файл размером 1,5 МБ оказывается на границе: при немного более высокой пропускной способности загрузка проходит, при немного более низкой — завершается с ошибкой. Именно поэтому один и тот же файл то загружается, то нет. Файлы большего размера с гораздо большей вероятностью не загружаются.

Как это исправить

1. Разместите исходные медиафайлы ближе к материковому Китаю

В порядке предпочтения:
  1. CDN или объектное хранилище в Гонконге, Сингапуре или Японии (лучшее качество трансграничной загрузки, регистрация ICP не требуется)
  2. Международный CDN с POP-узлами в Азии (подойдут Cloudflare, Bunny и CloudFront — выберите Гонконг, Сингапур или Токио)
  3. Прямая доставка с исходного сервера из Европы или Америки — худший вариант, именно в этом сценарии возникает текущая проблема
Примечание: для CDN в материковом Китае требуется регистрация ICP домена. У зарубежных доменов, таких как .ru или .com, обычно такой регистрации нет, поэтому узлы в материковом Китае недоступны; на практике подходят Гонконг, Сингапур и Япония.

2. Уменьшите размер медиафайла

Эталонное видео длительностью 10 секунд в разрешении 720P обычно занимает всего 1–2 МБ. Если ваш файл весит десятки мегабайт, снизьте битрейт или разрешение. Судя по приведённым выше измерениям, загрузка файлов размером более 3 МБ редко успевает завершиться вовремя.

3. Проверьте саму ссылку

  • Доступна публично, без сессии, cookies или списка разрешённых Referer;
  • Возвращает ответ 200 с полным Content-Length и поддерживает Range;
  • Не используйте краткосрочные подписанные URL либо убедитесь, что срок их действия превышает время выполнения задачи.

4. Повторные попытки не помогут

Повторная попытка лишь добавит ещё 3 минуты ожидания. Скорость передачи данных не изменилась, поэтому вероятность успеха останется такой же, как при первой попытке.

Когда обращаться в службу поддержки

Если ваш медиафайл уже находится на узле в Гонконге, Сингапуре или Японии, его размер не превышает 3 МБ, но запрос по-прежнему стабильно завершается ошибкой, отправьте нам:
  • ID задачи (task_id)
  • Полный URL медиафайла
  • Время возникновения ошибки (с указанием часового пояса)
Мы повторно проверим маршрут с узла в материковом Китае и передадим проблему поставщику модели.