Конвертировать 29,970030 кадров в секунду .mp4 в 29,970000

Я работаю над веб-проектом, в котором положение мыши пользователя запускает воспроизведение видео вперед и назад.

Вот моя проблема : код, который я использую для этого, требует, чтобы видеофайл имел ровно 29,97000 кадров в секунду, но экспорт моей работы из Photoshop/Premiere дает мне 29,970030 кадров в секунду. Повторное кодирование видео с помощью Handbrake дало мне тот же результат. В настоящее время используется OSX 10.11.6.

Есть ли способ «заставить» приложения Adobe Suite/Handbrake экспортировать видео со скоростью ровно 29,97000 кадров в секунду, или мне нужно использовать более простой метод (VirtualDubMod, AviSynth, ffmpeg и т. д.) для достижения этого?

Любая помощь/совет очень ценится!

Если ваш код буквально требует 29,97, используйте ffmpeg с аргументом -r 29.97.

Ответы (2)

Правильное определение «29,97» — это 30 * (1000/1001), что равно 29,97002997. Вот что у вас есть. Я не знаю, почему вы думаете, что вам нужно именно 29,97000, но, вероятно, это недоразумение.

Спасибо за разъяснение! В моем случае, когда я просматривал видеофайл, который собираюсь заменить на VLC, на панели информации о медиа была указана его частота кадров как 29,970000, а файл, который я создал для его замены, отображается как 29,970030. оригинал - - замена
В заключение, есть идеи, почему точная частота кадров, о которой сообщают эти два файла, будет отличаться?
@Андробаут Понятия не имею. Во многих случаях «частота кадров» фактически сохраняется как интервал кадров, обратный частоте. Таким образом, истинное 29,97 может храниться как 33,36666... ​​(мс на кадр), где 29,970000 будет храниться как 33,36670. Но это не объясняет, где возникла ошибка. Как я уже сказал, возможно, это чье-то недоразумение, неверное предположение, что «29,97» означает именно 29,97. Это также может быть преждевременное округление или передача числа с двойной точностью в виде числа с плавающей запятой или... что-то еще.
Спасибо, что вернулись ко мне! Итак, чтобы решить это раз и навсегда, скажем, я поставил перед собой цель (какой бы донкихотской она ни была) сделать так, чтобы видеофайл, который я визуализировал, отображался как 29,970000 при просмотре в VLC (как и другой файл, на который я ссылался выше) вместо 29.970030. Есть ли способ изменить интервал кадров (с 33,36666 до 33,36670)?
@Androbaut Это зависит от того, какой кодек и контейнер вы используете. Я не вижу упоминания об этом ни в вашем посте, ни в комментариях. Если контейнер (скажем) MP4, вам нужно будет получить макет заголовка MP4, найти поле (поля), которое содержит это значение, и использовать двоичный/шестнадцатеричный редактор, чтобы изменить поле (поля). В видеоданные не нужно вносить никаких изменений. Также могут быть доступны инструменты для редактирования заголовка, такие как MP4Box или mp4ui.sourceforge.net или, возможно, avconv или ffmpeg. Google "частота кадров изменения заголовка видео" для получения дополнительной информации.

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