Коэффициент преобразования знаменателя переполнения ошибки After Effects 17 18

Обновлено: 05.07.2024

Сообщество коллег по поддержке для профессионалов медиапроизводства.

Форумы › Adobe After Effects › Ошибка Adobe After Effects: знаменатель коэффициента преобразования переполнения

произведение искусства

Работа на Intel Mac с bootcamp. Я установил After Effects CS3 на обе платформы (OS x 10.4 и Windows XP). В системе 1 ГБ оперативной памяти и 15 ГБ свободного места на жестком диске.

Я столкнулся с серьезной проблемой в After Effects CS3, которой нет в After Effects 7.0 (на том же компьютере).

Я импортирую фильм Quicktime в новый проект, или я должен сказать, что пытаюсь импортировать. Я получаю следующую ошибку на обеих платформах:

Ошибка Adobe After Effects: знаменатели коэффициента преобразования переполнения ( 17 :: 19 )

Это файл .mov размером 1024 x 768, сжатый анимационным кодеком, 15 кадров в секунду, соотношение сторон квадратного пикселя, размер около 700 мегабайт.

Есть идеи? Кто-нибудь уже сталкивался с этой ошибкой?

" data-theme="likebtn" data-voting_enabled="false" data-style="" data-unlike_allowed="" data-show_copyright="" data-item_url="https://creativecow.net/forums /thread/adobe-after-effects-error-overflow-converting-rati/" data-item_title="Ошибка Adobe After Effects: знаменатели коэффициента преобразования переполнения" data-item_date="2007-09-22T10:52:15+00: 00" data-engine="WordPress" data-plugin_v="2.6.42" data-prx="https://creativecow.net/wp-admin/admin-ajax.php?action=likebtn_prx" data-event_handler=" likebtn_eh" >

Марк Лэндман

Я столкнулся с той же ошибкой при запуске CS3 на моем G5 на прошлой неделе. В итоге я завершил проект в версии 6.5.

Марк Лэндман
PM Productions
Шампейн, Иллинойс

" data-theme="likebtn" data-voting_enabled="false" data-style="" data-unlike_allowed="" data-show_copyright="" data-item_url="https://creativecow.net/forums /ответ/68006/" data-item_date="2007-09-22T13:53:20+00:00" data-engine="WordPress" data-plugin_v="2.6.42" data-prx="https:// creativecow.net/wp-admin/admin-ajax.php?action=likebtn_prx" data-event_handler="likebtn_eh" >

произведение искусства

Да, в основном это то, что я сделал, вернулся к 7.0. Вы получили какие-либо подсказки относительно того, что происходит? Я отправил отчет об ошибке в Adobe. Это не было исправлено в обновлении 8.01.

" data-theme="likebtn" data-voting_enabled="false" data-style="" data-unlike_allowed="" data-show_copyright="" data-item_url="https://creativecow.net/forums /reply/68007/" data-item_date="2007-09-22T14:50:16+00:00" data-engine="WordPress" data-plugin_v="2.6.42" data-prx="https:// creativecow.net/wp-admin/admin-ajax.php?action=likebtn_prx" data-event_handler="likebtn_eh" >

Марк Лэндман

Я делал слайд-шоу, используя 360-градусные изображения в формате JPEG. Как только я помогаю с ключевыми кадрами> распределяю слои, я получаю сообщение об ошибке. Поскольку у меня были сжатые сроки, у меня действительно не было времени возиться с этим. Тот же файл отлично работал в 6.5. Теперь, когда проект завершен, я могу вернуться и попытаться выяснить, в чем проблема.

Марк Лэндман
PM Productions
Шампейн, Иллинойс

" data-theme="likebtn" data-voting_enabled="false" data-style="" data-unlike_allowed="" data-show_copyright="" data-item_url="https://creativecow.net/forums /reply/68008/" data-item_date="2007-09-22T15:07:14+00:00" data-engine="WordPress" data-plugin_v="2.6.42" data-prx="https:// creativecow.net/wp-admin/admin-ajax.php?action=likebtn_prx" data-event_handler="likebtn_eh" >

произведение искусства

Я думаю, что выяснил источник этой проблемы, надеюсь, Adobe исправит это в какой-то момент, между тем, может быть, это поможет людям, которые сталкиваются с этой проблемой «ошибка переполнения коэффициента преобразования знаменателей».

Вот источник проблемы, потому что мой первоначальный пост был недостаточно конкретным.

<р>1. Я ввел фильм в формате QuickTime, а затем перетащил его на значок «Новая композиция». Это стандартная практика для быстрого создания композиции на основе свойств фильма.

<р>2. Именно здесь я получил вышеупомянутую ошибку. Это полностью делает работу в CS3 невозможной, и опять же, в AE 7 этого нет.

<р>3. Что в итоге исправило, так это *не* перетаскивание файла фильма на новый значок композиции. Оказывается, у моего фильма была странная частота кадров 14,985 вместо 15. Не знаю, почему After Effects так интерпретировал мой фильм, я делаю необычный экспорт, потому что работаю с программным обеспечением для захвата экрана, так что это определенно не традиционный рабочий процесс. .

<р>4. Поэтому я решил сначала создать композицию из одного из пресетов AE, а затем немного изменить настройки, чтобы они соответствовали свойствам моего фильма. Добавление моего видеоклипа в эту композицию не приводит к ошибкам, и все готово.

Странное решение, но оно сработало. Теперь мы с AE CS3 можем быть друзьями. . .

" data-theme="likebtn" data-voting_enabled="false" data-style="" data-unlike_allowed="" data-show_copyright="" data-item_url="https://creativecow.net/forums /reply/68009/" data-item_date="2007-09-24T16:46:29+00:00" data-engine="WordPress" data-plugin_v="2.6.42" data-prx="https:// creativecow.net/wp-admin/admin-ajax.php?action=likebtn_prx" data-event_handler="likebtn_eh" >

Доминик Крей

Используя cs3, я только что столкнулся с этой проблемой при импорте f4v, который я переименовал в mov. На панели интерпретации отснятого материала показывался какой-то испорченный fps — я только что вернулся к исходному, в данном случае 25. Кажется, это исправлено.

" data-theme="likebtn" data-voting_enabled="false" data-style="" data-unlike_allowed="" data-show_copyright="" data-item_url="https://creativecow.net/forums /reply/68010/" data-item_date="2009-07-31T10:07:17+00:00" data-engine="WordPress" data-plugin_v="2.6.42" data-prx="https:// creativecow.net/wp-admin/admin-ajax.php?action=likebtn_prx" data-event_handler="likebtn_eh" >

Лукас Фельдман

Что исправить: измените частоту кадров композиции, в которой возникла эта проблема, на целое число.

IE: Мой комп был странно установлен 30.03. Установка его на 30 и нажатие возврата исправили это. Скорее всего, вам придется переместить все ключевые кадры обратно к ближайшим к ним кадрам, потому что они будут смещены на старые десятичные разряды в частоте кадров.

Джим Лефевр

Крики, я люблю Creative Cow.

Пять минут назад я кричал на экран. Теперь, прочитав и испробовав ваши исправления, я спокоен как огурец и снова влюблен в After Effects.

Изменена частота кадров в «интерпретировать кадры», по какой-то причине она была 23,5, а не 25.

Большое спасибо.

" data-theme="likebtn" data-voting_enabled="false" data-style="" data-unlike_allowed="" data-show_copyright="" data-item_url="https://creativecow.net/forums /reply/68012/" data-item_date="2010-02-18T18:33:07+00:00" data-engine="WordPress" data-plugin_v="2.6.42" data-prx="https:// creativecow.net/wp-admin/admin-ajax.php?action=likebtn_prx" data-event_handler="likebtn_eh" >

Ник Хилл

FWIW — эта ошибка по-прежнему возникает в CS5. Я копировал клип, ускоренный до 750%, из Premiere в AE. Не выдавало мне ошибку после того, как я поставил скорость клипа на 100% в Prem и попытался снова скопировать и вставить.


Переменные с плавающей запятой обычно имеют такое поведение. Это вызвано тем, как они хранятся в аппаратном обеспечении. Для получения дополнительной информации ознакомьтесь со статьей Википедии о числах с плавающей запятой.

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

Поскольку JavaScript использует стандарт IEEE 754 для математики, он использует 64-битные числа с плавающей запятой. Это приводит к ошибкам точности при выполнении вычислений с плавающей запятой (десятичной), короче говоря, из-за того, что компьютеры работают с основанием 2, а десятичное число — с основанием 10.

Простое объяснение: 1/10 периодична в двоичном (0,0 0011 0011 0011. ) точно так же, как 1/3 периодична в десятичном (0,333. ), поэтому 1/10 не может быть точно представлена ​​числом с плавающей запятой.

31 Ответ 31

Двоичная математика с плавающей запятой выглядит так. В большинстве языков программирования он основан на стандарте IEEE 754. Суть проблемы в том, что числа представлены в этом формате как целое число, умноженное на степень двойки; рациональные числа (такие как 0,1 , что равно 1/10 ), чей знаменатель не является степенью двойки, не могут быть точно представлены.

Для 0,1 в стандартном формате binary64 представление можно записать точно так же, как

  • 0,1000000000000000055511151231257827021181583404541015625 в десятичной системе или
  • 0x1.999999999999ap-4 в шестнадцатеричном формате C99.

Наоборот, рациональное число 0,1, равное 1/10, можно записать точно так же, как

  • 0,1 в десятичном формате или
  • 0x1.99999999999999. p-4 в аналоге шестнадцатеричной записи C99 с плавающей запятой, где расширение . представляет собой бесконечную последовательность девяток.

Константы 0,2 и 0,3 в вашей программе также будут приближениями к их истинным значениям. Бывает, что ближайший к 0,2 двойник больше рационального числа 0,2, но ближайший двойник к 0,3 меньше рационального числа 0,3. Сумма 0,1 и 0,2 оказывается больше рационального числа 0,3 и, следовательно, не соответствует константе в вашем коде.

Достаточно всестороннее рассмотрение проблем арифметики с плавающей запятой приведено в разделе Что должен знать каждый компьютерный ученый об арифметике с плавающей запятой. Более простое объяснение см. на сайте float-point-gui.de.

Примечание: все позиционные (с основанием N) системы счисления разделяют эту проблему с точностью

Простые старые десятичные числа (с основанием 10) имеют те же проблемы, поэтому такие числа, как 1/3, заканчиваются как 0,333333333.

Вы только что наткнулись на число (3/10), которое легко представить в десятичной системе, но которое не подходит для двоичной системы. Это работает в обоих направлениях (в некоторой степени): 1/16 — уродливое число в десятичном (0,0625), но в двоичном виде оно выглядит так же аккуратно, как десятитысячная в десятичном (0,0001)** — если бы мы были в привычка использовать систему счисления с основанием 2 в нашей повседневной жизни, вы даже смотрите на это число и инстинктивно понимаете, что можете получить его, разделив что-то пополам, снова пополам, и снова, и снова.

** Конечно, числа с плавающей запятой хранятся в памяти не совсем так (они используют форму экспоненциальной записи). Тем не менее, это иллюстрирует тот факт, что двоичные ошибки точности с плавающей запятой имеют тенденцию возникать, потому что числа «реального мира», с которыми нам обычно интересно работать, часто представляют собой степени десяти — но только потому, что мы используем десятичную систему счисления. сегодня. Именно поэтому мы будем говорить такие вещи, как 71% вместо "5 из каждых 7" (71% является приблизительным, поскольку 5/7 не может быть точно представлено каким-либо десятичным числом).

Поэтому нет: двоичные числа с плавающей запятой не ломаются, просто они такие же несовершенные, как и любая другая система счисления с основанием N :)

Боковое примечание: работа с числами с плавающей запятой в программировании

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

Вам также необходимо заменить тесты на равенство сравнениями, которые допускают некоторую степень допуска, что означает:

Не не делать, если (x == y)

Вместо этого выполните if (abs(x - y) .

где абс — абсолютное значение. myToleranceValue необходимо выбрать для вашего конкретного приложения - и это будет во многом связано с тем, сколько «пространства для маневра» вы готовы предоставить, и каким может быть наибольшее число, которое вы собираетесь сравнивать (из-за потери точности вопросы). Остерегайтесь констант стиля "эпсилон" в выбранном вами языке. Их не следует использовать в качестве значений допуска.

Я думаю, что "некоторая константа ошибки" является более правильным, чем "Эпсилон", потому что не существует "Эпсилон", который можно было бы использовать во всех случаях. В разных ситуациях нужно использовать разные эпсилоны. И машинный эпсилон почти никогда не является подходящей константой для использования.

Это не совсем верно, что вся математика с плавающей запятой основана на стандарте IEEE [754]. До сих пор используются некоторые системы со старой шестнадцатеричной FP, например, IBM, и все еще есть графические карты, которые не поддерживают арифметику IEEE-754. Однако в разумных пределах это верно.

Я думаю, вам следует добавить кое-что к этому ответу о том, что вычисления с деньгами всегда, всегда должны выполняться с арифметикой с фиксированной точкой над целыми числами, потому что деньги квантуются. (Возможно, имеет смысл выполнять внутренние бухгалтерские расчеты в мельчайших долях цента или в любой другой наименьшей денежной единице — это часто помогает, например, уменьшить ошибку округления при преобразовании «29,99 долларов в месяц» в дневную ставку — но это должно по-прежнему будет арифметикой с фиксированной точкой.)

Интересный факт: эта самая 0.1, не представленная точно в двоичном формате с плавающей запятой, вызвала печально известную ошибку программного обеспечения ракеты Patriot, в результате которой во время первой войны в Ираке погибло 28 человек.

Я считаю, что мне следует добавить к этому точку зрения разработчика оборудования, поскольку я разрабатываю и создаю оборудование с плавающей запятой. Знание источника ошибки может помочь в понимании того, что происходит в программном обеспечении, и, в конечном счете, я надеюсь, что это поможет объяснить причины возникновения и накопления ошибок с плавающей запятой с течением времени.

1. Обзор

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

2. Стандарты

Большинство процессоров соответствуют стандарту IEEE-754, но некоторые используют денормализованные или другие стандарты. Например, в IEEE-754 существует денормализованный режим, который позволяет представлять очень маленькие числа с плавающей запятой за счет точности. Однако далее будет рассмотрен нормализованный режим IEEE-754, который является типичным режимом работы.

В стандарте IEEE-754 разработчикам оборудования разрешено любое значение ошибки/эпсилон, если оно меньше половины одной единицы на последнем месте, а результат должен быть меньше половины одной единицы. в последнюю очередь за одну операцию. Это объясняет, почему при повторяющихся операциях ошибки складываются. Для двойной точности IEEE-754 это 54-й бит, поскольку 53 бита используются для представления числовой части (нормализованной), также называемой мантиссом, числа с плавающей запятой (например, 5.3 в 5.3e5). В следующих разделах более подробно рассматриваются причины аппаратных ошибок при различных операциях с плавающей запятой.

3. Причина ошибки округления при делении

Основной причиной ошибки при делении с плавающей запятой являются алгоритмы деления, используемые для вычисления частного. Большинство компьютерных систем вычисляют деление, используя умножение на обратное, в основном в Z=X/Y , Z = X * (1/Y) . Деление вычисляется итеративно, т. е. каждый цикл вычисляет некоторые биты частного до тех пор, пока не будет достигнута желаемая точность, что для IEEE-754 означает что-либо с ошибкой менее одной единицы на последнем месте. Таблица обратных величин Y (1/Y) известна как таблица выбора частных (QST) в медленном делении, а размер в битах таблицы выбора частных обычно равен ширине системы счисления или числу битов системы счисления. частное, вычисляемое на каждой итерации, плюс несколько защитных битов. Для стандарта двойной точности IEEE-754 (64-бита) это будет размер основания делителя плюс несколько защитных битов k, где k>=2 . Так, например, типичная таблица выбора частного для делителя, который вычисляет 2 бита частного за раз (основание 4), будет 2 + 2 = 4 бита (плюс несколько необязательных битов).

3.1 Ошибка округления при делении: аппроксимация обратной величины

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

4. Ошибки округления в других операциях: усечение

Другой причиной ошибок округления во всех операциях являются различные режимы усечения окончательного ответа, разрешенные IEEE-754. Есть усечение, округление до нуля, округление до ближайшего (по умолчанию), округление вниз и округление вверх. Все методы вносят элемент погрешности менее одной единицы на последнее место для одной операции. Со временем и повторными операциями усечение также увеличивает результирующую ошибку. Эта ошибка усечения особенно проблематична при возведении в степень, которое включает некоторую форму повторного умножения.

5. Повторяющиеся операции

Поскольку аппаратное обеспечение, выполняющее вычисления с плавающей запятой, должно выдавать результат с ошибкой менее половины одной единицы на последнем месте для одной операции, ошибка будет увеличиваться при повторных операциях, если за ней не следить. По этой причине в вычислениях, требующих ограниченной ошибки, математики используют такие методы, как округление до ближайшей четной цифры в последнем разряде IEEE-754, потому что со временем ошибки с большей вероятностью компенсируют друг друга. out и Interval Arithmetic в сочетании с вариантами режимов округления IEEE 754 для прогнозирования ошибок округления и их исправления. Из-за низкой относительной погрешности по сравнению с другими режимами округления округление до ближайшей четной цифры (на последнем месте) является режимом округления по умолчанию IEEE-754.

Обратите внимание, что режим округления по умолчанию, округление до ближайшей четной цифры на последнем месте, гарантирует ошибку менее половины одной единицы на последнем месте для одной операции. Использование только усечения, округления и округления в меньшую сторону может привести к ошибке, превышающей половину единицы в последнем разряде, но меньше единицы в последнем разряде, поэтому эти режимы не рекомендуются, если они не используется в интервальной арифметике.

6. Резюме

Короче говоря, основной причиной ошибок в операциях с плавающей запятой является сочетание аппаратного усечения и обратного усечения в случае деления.Поскольку стандарт IEEE-754 требует только ошибки менее половины одной единицы в последнем разряде для одной операции, ошибки с плавающей запятой при повторяющихся операциях будут суммироваться, если они не будут исправлены.

Читайте также: