PunchAbducted Plateau varsity student freed, hospitalisedBollywood HungamaRamayana: Bombay High Court grants anti-piracy protection to Ranbir Kapoor starrer ahead of November 5 releaseInquirer16 areas to experience dangerous heat levels Tuesday — PagasaThe Jerusalem PostShin Bet expands election interference probe to suspected Palestinian Authority funding - reportZDF heuteAktuelle Pressemitteilungen des ZDFCNN TürkBaşkan Topak, Avrupa Konseyi'nde Türkiye ve Ergene'yi anlattıThe South AfricanAmericans vote in midterms set to upend Donald Trump presidencyEuronewsRhodes floods: Cars swept away after torrential rain in Greece01net1 400 km d’autonomie et propulsion : la future Renault Mégane prépare une vraie révolution contre TeslaCNN بالعربيةهجوم سيبراني غير مألوف.. قراصنة يعبثون بثلاجات المتاجر بأوروبا ويتلفون الطعامInteriaNauczyciele powinni sprawdzać plecaki uczniów? Polacy zabrali głosABC NewsMidterm elections live updates: Voters heading to polls today for midterms
The Daily Newsstand · Free, Always
Tuesday, November 3, 2026

Как посчитать реальную цену секунды AI-видео: оплаченная и принятая секунда, лог дублей на Python

Translate

На странице тарифов видеомодели написано «около $0,10 за секунду». Ролик на 30 секунд, значит три доллара. Потом приходит счёт в два-три раза больше, и дело не в скрытых комиссиях. Прайс считает каждую секунду, которую модель сгенерировала. В ролик попадает только та, что пережила отбор и монтаж.

Я генерирую короткие ролики и рекламу через Gemini API и OpenRouter и по каждой генерации веду лог. В статье покажу, из чего складывается цена одного дубля, как вести лог дублей в CSV и как за минуту получить по нему цену принятой секунды по сценам. В конце мои цифры по трём проектам, из реальных счетов.

Три цены одной секунды

У одной секунды видео три цены, и путать их дорого.

  1. Цена из прайса. То, что написано на странице тарифов: у Gemini Omni Flash это около $0,10 за секунду 720p. У Seedance 2.0 через OpenRouter по моим счетам выходит около $0,15 за секунду со звуком.

  2. Оплаченная. Сколько реально списали за секунду сгенерированного видео. Она выше цены из прайса: кроме видео ты платишь за вход (картинки и промпт), а у Omni ещё и за размышления модели.

  3. Принятая. Всё, что ушло на видеодубли, делённое на секунды, которые вошли в готовый ролик. Это единственная цена, по которой стоит считать смету.

Связывает их коэффициент расхода:

коэффициент = оплаченные секунды / принятые секунды
цена принятой секунды = сумма за все дубли сцены / принятые секунды

Коэффициент растёт от двух вещей: от брака (дубль целиком в корзину) и от обрезки (дубль принят, но из 5 секунд в монтаж ушли 3). Обрезку часто забывают, а на длинных клипах она съедает больше, чем брак.

Шаг 1. Цена одного дубля по полю usage

Omni тарифицируется по токенам, и у каждого вида токенов своя ставка. На октябрь 2026 по тарифу Gemini API без налогов:

Что

$ за миллион токенов

Вход: текст и картинки

1,50

Видео на выходе

17,50

Текст на выходе, включая размышления модели

9,00

Секунда видео 720p - 5792 токена, то есть $0,101. Клип на 4 секунды по прайсу стоит $0,405. По счёту у меня такие клипы с картинкой на входе стоили $0,42-0,43: разницу дают вход и примерно 1700 токенов размышлений.

Счётчики токенов приходят в ответе Interactions API в поле usage. Функция, которая превращает их в деньги:

# Ставки Gemini Omni Flash, $ за миллион токенов (октябрь 2026)
PRICE = {"input": 1.50, "video": 17.50, "text": 9.00}

def take_cost(input_tokens, video_tokens, text_tokens):
    """Цена одного дубля по счётчикам токенов из поля usage ответа."""
    return (input_tokens * PRICE["input"]
            + video_tokens * PRICE["video"]
            + text_tokens * PRICE["text"]) / 1e6

# 4 секунды 720p: 3000 токенов входа (для примера), 4 x 5792 токена видео, около 1700 токенов размышлений
print(f"${take_cost(3000, 4 * 5792, 1700):.3f}")  # $0.425

Имена полей внутри usage у разных версий API отличаются, поэтому один раз сохрани сырой ответ без самого видео и посмотри, как они называются у тебя. И не считай все выходные токены по ставке видео: размышления стоят вдвое дешевле, и цена выйдет завышенной.

С OpenRouter проще: видео там генерируется задачей, и при опросе статуса (GET /api/v1/videos/{id}) готовая задача приходит с полем usage.cost, уже в долларах. Так я получаю цену дублей Seedance.

Шаг 2. Лог дублей

Цена дубля сама по себе ничего не говорит. Нужно знать, сколько из него вошло в ролик. Для этого после монтажа я заполняю простую таблицу, одна строка на дубль:

scene,model,seconds,cost,accepted,reason
1-hands,omni-flash,4,0.42,0,рука поплыла
1-hands,omni-flash,4,0.42,0,камера уехала
1-hands,omni-flash,4,0.43,4,
2-face,omni-flash,5,0.52,3,обрезал хвост на монтаже
3-duo,omni-flash,6,0.63,6,
  • seconds - фактическая длина файла, а не заказанная. Omni не принимает параметр длительности, длину задаёт промпт, и модель может выдать от 3 до 10 секунд.

  • cost - цена из шага 1 или usage.cost от OpenRouter.

  • accepted - сколько секунд этого дубля ушло в монтаж. Брак - 0.

  • reason - почему не принял или обрезал. Через месяц по этой колонке видно, какой брак у тебя самый дорогой.

Это учебный пример: три сцены небольшого ролика, цены взяты из моих настоящих счетов за клипы такой длины.

Шаг 3. Отчёт по сценам

Скрипт читает лог и считает по каждой сцене коэффициент и цену принятой секунды:

import csv, sys
from collections import defaultdict

scenes = defaultdict(lambda: {"paid_s": 0, "accepted_s": 0, "cost": 0.0, "takes": 0})
for row in csv.DictReader(open(sys.argv[1], encoding="utf-8")):
    s = scenes[row["scene"]]
    s["takes"] += 1
    s["paid_s"] += float(row["seconds"])
    s["accepted_s"] += float(row["accepted"])
    s["cost"] += float(row["cost"])

print(f"{'сцена':<10}{'дублей':>7}{'оплачено':>10}{'принято':>9}{'коэф.':>7}{'$/принятую с':>14}")
total = {"paid_s": 0, "accepted_s": 0, "cost": 0.0}
for name, s in scenes.items():
    for k in total:
        total[k] += s[k]
    if not s["accepted_s"]:
        print(f"{name:<10}{s['takes']:>7}{s['paid_s']:>9.0f}с{'0':>9}{'-':>7}{'не принята':>14}")
        continue
    k = s["paid_s"] / s["accepted_s"]
    print(f"{name:<10}{s['takes']:>7}{s['paid_s']:>9.0f}с{s['accepted_s']:>8.0f}с{k:>7.2f}{s['cost'] / s['accepted_s']:>14.3f}")
if not total["accepted_s"]:
    sys.exit("ни одна сцена не принята")
k = total["paid_s"] / total["accepted_s"]
print(f"{'итого':<10}{'':>7}{total['paid_s']:>9.0f}с{total['accepted_s']:>8.0f}с{k:>7.2f}{total['cost'] / total['accepted_s']:>14.3f}")

Вывод на логе из шага 2:

сцена      дублей  оплачено  принято  коэф.  $/принятую с
1-hands         3       12с       4с   3.00         0.318
2-face          1        5с       3с   1.67         0.173
3-duo           1        6с       6с   1.00         0.105
итого                   23с      13с   1.77         0.186

Что тут видно. Сцена с руками стоит втрое дороже прайса: два дубля из трёх ушли в корзину. Сцена с лицом прошла с первого раза, но всё равно в 1,7 раза дороже, потому что две секунды я отрезал. Сцена с двумя героями по цене почти совпала с прайсом. В среднем по ролику принятая секунда стоит $0,186, почти вдвое дороже обещанных $0,10.

Три дубля, принят один: платишь за 12 секунд, в ролик идут 4

Три дубля, принят один: платишь за 12 секунд, в ролик идут 4

Мои цифры по трём проектам

Это уже не учебный лог, а счета. Цены на октябрь 2026, тарифы Google API и OpenRouter, без налогов и комиссий.

Проект

Модель

Оплачено

Принято

Коэффициент

$ за принятую секунду

Ролик за вечер: реклама копчёной рыбы, 6 планов

Veo 3.1 Fast

24 с

24 с

1

0,10

8 движений камеры, по клипу на движение

Veo 3.1 Fast

40 с

32 с

1,25

0,125

Реклама товара из одного фото

Seedance 2.0

27 с

15 с

1,8

0,27

Пояснения к строкам.

Ролик за вечер прошёл без единого второго дубля. Все сервисы вместе (кадры, видео, голос, музыка) по сегодняшним ценам около $2,86 на 26,5 секунды готового ролика, то есть примерно 11 центов за секунду. Это везение, а не норма. Помогли две вещи: стартовые кадры я утверждал до видео, а движение камеры в каждом клипе было одно и простое.

Движения камеры: два клипа из восьми пришлось переснять с другого стартового кадра.

Реклама товара: первый дубль на 15 секунд со звуком стоил $2,27, три пересъёмки плана по 4 секунды без звука ещё $1,83. Первый дубль вместе с кадрами и промптом стоил $2,42, исправления почти столько же. На товаре это типично: клиент простит скучный план, но не поплывшую этикетку, поэтому план с браком упаковки переснимается без вариантов.

Veo 3.1 с 22 октября для разработчиков отключён, эти проекты я снимал до этой даты. Omni Flash по прайсу стоит примерно столько же, около $0,10 за секунду 720p, так что и цена принятой секунды на Omni получится почти той же.

Что сбивает коэффициент

Утверждай стартовый кадр до видео. Картинка 1K в Gemini 3.1 Flash Image стоит около 7 центов, клип на 4 секунды около 42. Проверять лицо, руки и одежду дешевле на картинке.

Одно движение на клип. Каждое лишнее действие в промпте - лишний шанс на брак. «Поднимает чашку, пьёт и смотрит в окно» ломается чаще, чем «поднимает чашку».

Заказывай длину по монтажу. Если в ролик пойдут 3 секунды, не генерируй 6. Обрезка - такой же расход, как брак, просто незаметный.

Стоп после трёх одинаковых дублей. Не вышло за три - меняй одну переменную: промпт, стартовый кадр или модель. Четвёртый дубль с тем же промптом обычно просто сжигает деньги.

Черновик движения на дешёвой модели. Композицию и темп можно проверить на модели подешевле, а финальный дубль снять на той, которой доверяешь. Только проверь финал отдельно: удачный промпт не всегда переносится между моделями.

Выбирай модель по цене принятой секунды, а не по прайсу. На сложном кадре сделай по дублю на двух моделях и сравни не цену, а коэффициент. Модель вдвое дороже, которая принимается с первого раза, выходит дешевле той, что берёт три дубля.

Если у тебя подписка, а не API

В подписке цена секунды спрятана в кредитах, но считается так же, в два шага:

номинальная цена кредита = цена подписки / выданные кредиты
фактическая цена кредита = всё, что заплатил за месяц / реально потраченные кредиты

Подписка $20, выдано 1000 кредитов, потрачено 500: номинально 2 цента за кредит, фактически 4. Цена дубля - его кредиты, умноженные на фактическую цену. Дальше тот же лог и тот же отчёт: в колонку cost пишешь цену дубля в долларах.

Итог

Цена из прайса - нижняя граница: столько ты заплатишь, только если каждый дубль войдёт в ролик целиком. Для сметы нужны две колонки после монтажа: сколько секунд оплатил и сколько принял. На простых сценах у меня коэффициент 1-1,3, на рекламе товара около 2. Руки, вода и мелкие предметы ломаются на любой модели, там закладывай около 3. Поэтому в смете клиенту я закладываю на переделки столько же, сколько на первый дубль, а после первого теста пересчитываю по логу.

Лог дублей заполняется за пять минут после монтажа, а через пару проектов показывает, какие сцены у тебя дорогие и на чём экономить.

Разборы роликов с промптами, браком и счётом за каждую секунду выкладываю в Telegram-канале @tairantino.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.