> Для получения чистого Markdown любой страницы добавьте .md к URL страницы.  
> Для полного индекса документации см. https://api.vega.chat/docs/llms.txt.  
> Для полного содержания документации см. https://api.vega.chat/docs/llms-full.txt.  
> Для интеграции AI‑клиентов (Claude Code, Cursor и др.) подключитесь к серверу MCP по адресу https://api.vega.chat/docs/_mcp/server.

# Ввод видео

VEGA поддерживает отправку видеофайлов совместимым моделям через API. Это руководство покажет, как работать с видео, используя наш API.

VEGA поддерживает как **прямые URL**, так и **data URL, закодированные в base64**, для видео:

* **URL**: Эффективно для публично доступных видео, так как не требует локального кодирования  
* **Data URL в base64**: Требуется для локальных файлов или приватных видео, которые недоступны публично  

**Важно:** Поддержка URL видео различается у провайдеров. VEGA отправляет URL видео только тем провайдерам, которые явно поддерживают их. Например, Google Gemini в AI Studio поддерживает только ссылки YouTube (не Vertex AI).

**Только API:** Ввод видео в настоящее время поддерживается только через API. Загрузка видео недоступна в интерфейсе чата VEGA на данный момент.

## Ввод видео

Запросы с видеофайлами к совместимым моделям доступны через API `/api/v1/chat/completions` с типом содержимого `video_url`. Параметр `url` может быть как обычным URL, так и data URL, закодированным в base64. Обратите внимание, что только модели с возможностями обработки видео смогут обработать такие запросы.

Вы можете искать модели, поддерживающие видео, отфильтровав по модальности ввода видео на нашей [странице моделей](/models?fmt=cards\&input_modalities=video).

### Использование URL видео

Вот как отправить видео, используя URL. Обратите внимание, что для Google Gemini в AI Studio поддерживаются только ссылки YouTube:

```typescript title="TypeScript SDK"
import { OpenRouter } from '@openrouter/sdk';

const client = new OpenRouter({
  apiKey: '{{API_KEY_REF}}',
});

const result = await client.chat.send({
  model: "{{MODEL}}",
  messages: [
    {
      role: "user",
      content: [
        {
          type: "text",
          text: "Please describe what's happening in this video.",
        },
        {
          type: "video_url",
          videoUrl: {
            url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
          },
        },
      ],
    },
  ],
  stream: false,
});

console.log(result);
```

```python
import requests
import json

url = "https://api.vega.chat/api/v1/chat/completions"
headers = {
    "Authorization": f"Bearer {API_KEY_REF}",
    "Content-Type": "application/json"
}

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": "Please describe what's happening in this video."
            },
            {
                "type": "video_url",
                "video_url": {
                    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
                }
            }
        ]
    }
]

payload = {
    "model": "{{MODEL}}",
    "messages": messages
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())
```

```typescript title="TypeScript (fetch)"
const response = await fetch("https://api.vega.chat/api/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY_REF}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "{{MODEL}}",
    messages: [
      {
        role: "user",
        content: [
          {
            type: "text",
            text: "Please describe what's happening in this video.",
          },
          {
            type: "video_url",
            video_url: {
              url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
            },
          },
        ],
      },
    ],
  }),
});

const data = await response.json();
console.log(data);
```

### Использование видео, закодированных в Base64

Для локально хранимых видео вы можете отправлять их, используя кодирование base64 в виде data URL:

```typescript title="TypeScript SDK"
import { OpenRouter } from '@openrouter/sdk';
import * as fs from 'fs';

const client = new OpenRouter({
  apiKey: '{{API_KEY_REF}}',
});

async function encodeVideoToBase64(videoPath: string): Promise<string> {
  const videoBuffer = await fs.promises.readFile(videoPath);
  const base64Video = videoBuffer.toString('base64');
  return `data:video/mp4;base64,${base64Video}`;
}

// Read and encode the video
const videoPath = 'path/to/your/video.mp4';
const base64Video = await encodeVideoToBase64(videoPath);

const result = await client.chat.send({
  model: '{{MODEL}}',
  messages: [
    {
      role: 'user',
      content: [
        {
          type: 'text',
          text: "What's in this video?",
        },
        {
          type: 'video_url',
          videoUrl: {
            url: base64Video,
          },
        },
      ],
    },
  ],
  stream: false,
});

console.log(result);
```

```python
import requests
import json
import base64
from pathlib import Path

def encode_video_to_base64(video_path):
    with open(video_path, "rb") as video_file:
        return base64.b64encode(video_file.read()).decode('utf-8')

url = "https://api.vega.chat/api/v1/chat/completions"
headers = {
    "Authorization": f"Bearer {API_KEY_REF}",
    "Content-Type": "application/json"
}

# Read and encode the video
video_path = "path/to/your/video.mp4"
base64_video = encode_video_to_base64(video_path)
data_url = f"data:video/mp4;base64,{base64_video}"

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": "What's in this video?"
            },
            {
                "type": "video_url",
                "video_url": {
                    "url": data_url
                }
            }
        ]
    }
]

payload = {
    "model": "{{MODEL}}",
    "messages": messages
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())
```

```typescript title="TypeScript (fetch)"
import * as fs from 'fs';

async function encodeVideoToBase64(videoPath: string): Promise<string> {
  const videoBuffer = await fs.promises.readFile(videoPath);
  const base64Video = videoBuffer.toString('base64');
  return `data:video/mp4;base64,${base64Video}`;
}

// Read and encode the video
const videoPath = 'path/to/your/video.mp4';
const base64Video = await encodeVideoToBase64(videoPath);

const response = await fetch('https://api.vega.chat/api/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${API_KEY_REF}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: '{{MODEL}}',
    messages: [
      {
        role: 'user',
        content: [
          {
            type: 'text',
            text: "What's in this video?",
          },
          {
            type: 'video_url',
            video_url: {
              url: base64Video,
            },
          },
        ],
      },
    ],
  }),
});

const data = await response.json();
console.log(data);
```

## Поддерживаемые форматы видео

VEGA поддерживает следующие форматы видео:

* `video/mp4`
* `video/mpeg`
* `video/mov`
* `video/webm`

## Распространённые сценарии использования

Видео ввод открывает широкий спектр применений:

* **Суммирование видео**: Генерация текстовых резюме видеоконтента  
* **Распознавание объектов и действий**: Идентификация объектов, людей и действий в видео  
* **Понимание сцены**: Описание обстановки, окружения и контекста  
* **Анализ спорта**: Анализ игрового процесса, движений и тактики  
* **Наблюдение**: Мониторинг и анализ видеоматериалов наблюдения  
* **Образовательный контент**: Анализ обучающих видео и предоставление выводов  

## Лучшие практики

### Учёт размера файлов

Видеофайлы могут быть большими, что влияет как на время загрузки, так и на стоимость обработки:

* **Сжимайте видео** по возможности, чтобы уменьшить размер файла без значительной потери качества  
* **Обрезайте видео**, оставляя только релевантные сегменты  
* **Учитывайте разрешение**: Низкое разрешение (например, 720p вместо 4K) уменьшает размер файла, оставаясь пригодным для большинства задач анализа  
* **Частота кадров**: Низкая частота кадров может уменьшить размер файла для видео, где высокая временная разрешающая способность не критична  

### Оптимальная длительность видео

Разные модели могут иметь разные ограничения по длительности видео:

* Проверьте документацию модели на предмет максимальной длительности видео  
* Для длинных видео рассмотрите возможность разбивки на более короткие сегменты  
* Сосредоточьтесь на ключевых моментах, а не отправляйте весь длительный контент  

### Компромисс между качеством и размером

Сбалансируйте качество видео с практическими соображениями:

* **Высокое качество** (1080p+, высокий битрейт): Лучшее для детального визуального анализа, обнаружения объектов, распознавания текста  
* **Среднее качество** (720p, умеренный битрейт): Подходит для большинства общих задач анализа  
* **Низкое качество** (480p, низкий битрейт): Приемлемо для базового понимания сцены и распознавания действий  

## Специфическая поддержка URL видео у провайдеров

Поддержка URL видео значительно различается у провайдеров:

* **Google Gemini (AI Studio)**: Поддерживает только ссылки YouTube (например, `https://www.youtube.com/watch?v=...`)  
* **Google Gemini (Vertex AI)**: Не поддерживает URL видео — используйте data URL, закодированные в base64  
* **Другие провайдеры**: Проверьте документацию модели на предмет поддержки URL видео  

## Устранение неполадок

**Видео не обрабатывается?**

* Убедитесь, что модель поддерживает ввод видео (проверьте, что `input_modalities` включает `"video"`)  
* Если используете URL видео, подтвердите, что провайдер поддерживает URL видео (см. раздел «Специфическая поддержка URL видео у провайдеров» выше)  
* Для Gemini в AI Studio убедитесь, что используете ссылку YouTube, а не прямой URL видеофайла  
* Если URL видео не работает, попробуйте вместо него использовать data URL, закодированный в base64  
* Проверьте, поддерживается ли формат видео  
* Убедитесь, что видеофайл не повреждён  

**Ошибки из‑за большого файла?**

* Сожмите видео, чтобы уменьшить размер файла  
* Уменьшите разрешение видео или частоту кадров  
* Обрежьте видео до более короткой длительности  
* Проверьте ограничения размера файла для конкретной модели  
* Рассмотрите возможность использования URL видео (если поддерживается провайдером) вместо кодирования base64 для больших файлов  

**Плохие результаты анализа?**

* Убедитесь, что качество видео достаточно для задачи  
* Дайте чёткие, конкретные запросы о том, что анализировать  
* Оцените, подходит ли длительность видео для модели  
* Убедитесь, что содержимое видео ясно видно и хорошо освещено.