PunchPolice arrest three over woman’s murder in BauchiBollywood HungamaEXCLUSIVE: Border 2 fame Medha Rana joins Ahan Shetty in Tinu Suresh Desai's SankiThe Jerusalem PostTehran refuses to accept 'excessive' US demands, deal to end war still distant, Iran official saysDaily MaverickVIDEO: Poll Dancing: Watch Politically Aweh’s elections comedy special before you voteInquirer16 areas to experience dangerous heat levels Tuesday — PagasaZDF heuteAktuelle Pressemitteilungen des ZDFStraits Times SportAsian Cup latest event in Saudi Arabia to be postponed over safetyPremium Times2027 Politics Watch: Battle for place on ballot, Kano question INEC yet to answerVanguardPolice rescue 11 kidnapped victims, arrest 19 suspectsהידעןכוכב הלכת TOI-561 b היה אמור לאבד את האטמוספרה שלו לפני מיליארדי שניםThe South AfricanBeloved member of All Blacks management team diesRMF24Paraliż komunikacyjny w Krakowie. Ciężarówka zerwała sieć trakcyjną
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.