Есть только несколько стандартных частот видеокадров?

11

В современном цифровом видео можно ли пометить видеофайл с произвольной частотой кадров? Или широко поддерживается только несколько конкретных частот кадров? Под «современным» я подразумеваю программные плееры, такие как Quicktime, VLC, Roku, игровые приставки и т. Д. Мне любопытно как то, что сами стандарты видео говорят о допустимой частоте кадров, так и то, что на самом деле работает на практике.

Я понимаю, что широко поддерживаемые стандарты - 24 к / с, 25 к / с, 30 к / с, 50 ​​к / с и 60 к / с. HandBrake также предлагает 5, 10 и 15; это стандартные варианты? Могу ли я использовать любой номер FPS, который я хочу? А как насчет нецелых ставок, таких как 23,976 и 29,97; они на самом деле обрабатываются по-разному с помощью программного обеспечения, чем 24 и 30? Также я вижу ссылки на «переменную частоту кадров» в потоках H.264; это на самом деле работает, и если да, то что его использует?

Мой конкретный вопрос заключается в том, как лучше всего кодировать некоторые 8-мм пленки. Источник - 16 кадров в секунду, стандарт 8-мм пленки. Прямо сейчас я удваиваю каждый второй кадр, чтобы довести его до 24 кадров в секунду, что работает нормально, но мне интересно, почему я не могу просто отметить видео как 16 кадров в секунду. Я создал файлы H.264 mp4 с ручным тормозом со скоростью 15 кадров в секунду и обнаружил, что они правильно воспроизводятся только в VLC. Mac Quicktime проигрывал их слишком быстро, вероятно, 24 кадра в секунду.

нельсон
источник

Ответы:

11

Существует несколько «стандартных» частот кадров, но их становится так много, что поддерживать произвольные частоты кадров проще, чем конкретно поддерживать многие конкретные. Это особенно верно для программных плееров, таких как VLC.

Все больше поддержки существует для ПЕРЕМЕННЫХ fps. (VFR, переменная частота кадров). Здесь интервал между кадрами в одном и том же видео не является постоянным. Многие форматы файлов контейнеров видео (такие как Matroska ( .mkv) или MPEG-4 ( .mp4тесно связанные с Apple .mov)) даже не хранят число FPS, а скорее базу времени (например, 1/30 секунды), а затем каждый кадр имеет метку времени, кратную этой временной базе. Просто так получилось, что интервал между каждым кадром составляет одно или небольшое целое число единиц временной базы в видео CFR (с постоянной частотой кадров).

Видеозапись с камеры слежения с пропущенными почти дублированными кадрами была бы очевидным вариантом использования VFR. Более того, если он сжимается с помощью упрощенного видеокодека, который не пользуется хорошим преимуществом временной избыточности (с интер (p и b) кадрами). ( Поиграйте с ним, чтобы пропустить почти дуплексные ffmpeg -vf mpdecimateкадры. Используйте -vsync 2при выводе в mp4, потому что по какой-то причине он не используется по умолчанию для этого мультиплексора, но для mkv.)

Еще один случай - современные смартфоны. Например, мой брат Moto G (2nd gen) записывает видео VFR. Это снижает частоту кадров, когда сенсору нужно больше света. Некоторые из результатов работы mediainfo на mp4, созданной программным обеспечением телефона, записаны в помещении:

Bit rate                                 : 9 999 Kbps
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Rotation                                 : 90°
Frame rate mode                          : Variable
Frame rate                               : 16.587 fps
Minimum frame rate                       : 14.985 fps
Maximum frame rate                       : 30.030 fps

Воспроизведение одного видеопотока VFR не сложно. Программное обеспечение просто готово к отображению следующего кадра, спит до тех пор, пока оно не будет отображено, затем просыпается и отображает его

Все становится немного сложнее, если принять во внимание тот факт, что люди могут видеть видеокадры только тогда, когда их отображает монитор. VFR мониторы существуют, но все еще редки. (Google для G-Sync Freesync).

Изменение отображаемого изображения во время его сканирования на монитор приводит к ужасному разрыву видео (обычно это наблюдается при игре в игру с отключенным vsync). Это ограничивает игрока изменением отображаемого изображения на частоте 50 или 60 Гц. (ЭЛТ поддерживают произвольные частоты обновления в пределах диапазона, но сложно готовить режимы с правильной синхронизацией, поэтому большинство людей просто использовали несколько фиксированных частот обновления. И теперь у людей есть ЖК-дисплеи, которые в любом случае поддерживают только фиксированную частоту обновления. Мониторы freesync более распространены в любом случае. Я очень жду этого :)

Таким образом, с частотой кадров видео, которая не кратна или не является фактором частоты обновления монитора, некоторые кадры будут отображаться для трех обновлений монитора, а некоторые для 2, например, даже если предполагается, что видео имеет постоянную частоту 25 кадров в секунду. (на мониторе 60 Гц).

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

Вот почему NLE (такие как kdenlive или pitivi, чтобы выбрать случайные примеры бесплатного программного обеспечения), с большей вероятностью заставят вас установить фиксированный FPS и отбросить / дублировать кадры из ваших клипов, чтобы они соответствовали этой частоте кадров. Выбранный вами CFR может быть произвольным, но обычно он должен быть постоянным для всего «проекта».

(Любые NLE полностью работают с клипами VFR, и производят выход VFR в этом случае?)

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

Если вам интересно, надоедливые нецелочисленные частоты кадров 29,970 (на самом деле 30000/1001) и 23,976 (на самом деле 24000/1001, из телецининга) являются ошибкой цвета NTSC. поиск 1.001 . Если бы только они были готовы рискнуть несколькими черно-белыми наборами, не способными обработать дополнительную частоту 0,1% для звуковой поднесущей, мир был бы избавлен от этой чепухи. (Думаю, я где-то видел другую статью, в которой это звучало более похоже на то, что многие комплекты были бы хорошими, но они не были уверены в идеальном компатите. Википедия заставляет звучать так, будто ни один из наборов не обработал бы аудио поднесущую на 0,1% выше. IDK факты.)

Однако раздражающая частота кадров - один из меньших грехов вещания. Это действительно чередование, которое было проклятием качества видео на современных (все пиксели освещены одновременно) экранах, и это не изменилось бы. Я до сих пор не понимаю, почему чересстрочная развертка сохранялась для HDTV. Почему было определено разрешение 1080i60 вместо использования 720p60 для получения одинакового временного разрешения для спорта и прочего? Это похоже на 1920x540p60, но с глупым вертикальным смещением между нечетными и четными полями, которое требует много вычислений на приемном конце, чтобы не выглядеть ужасно.

редактировать:

Для вашего случая использования я бы абсолютно рекомендовал архивировать на родном FPS. Не выбрасывайте информацию, отбрасывая кадры. Не дублируйте кадры и не делайте ваши файлы больше (или заставьте ваш кодер h.264 тратить больше времени, замечая дубликаты и выводя кадр, полный пропущенных макроблоков, который занимает всего 20 байтов для всего кадра).

В будущем, когда мы надеемся, что у всех будут дисплеи freesync, способные воспроизводить любую частоту кадров, вы захотите отменить подтягивание до 24 кадров в секунду, чтобы ваше видео воспроизводилось более плавно! Или если freesync каким-то образом не завоевывает популярность, или дисплей, который появляется после LCD, имеет CFR, тогда преобразование скорости, вероятно, лучше всего делать во время воспроизведения. Это не то же самое, что 24fps даже отлично воспроизводится на мониторе 60 Гц. (Я визуально не замечаю тот факт, что некоторые кадры отображаются для 3 * 1/60-го, а некоторые отображаются для 2 * 1/60-го, но это правда).

Если у вас проблемы с Quicktime, тогда IDK. Возможно, убедитесь, что Handbrake создает файлы с правильной частотой кадров, заданной в потоке битов h.264, а также в контейнере. (Да, заголовки h.264, очевидно, могут хранить частоту кадров, отдельную от того, что говорит контейнер. См. Документацию для mkvmerge --fix-bitstream-timing-information. И попробуйте использовать его с, --default-duration 16fpsчтобы создать файл mkv. Затем передайте обратно в mp4 и посмотрите, исправляет ли это quicktime? ) Или, может быть, есть способ сделать это с помощью инструментов mp4. См. Например: /ubuntu/370692/how-to-change-the-framerate-of-a-video-without-reencoding

Я могу гарантировать, что произвольная частота кадров mp4 действительна, и даже переменная частота кадров mp4 действительна. Если Quicktime играет неправильно, это может быть ошибка Quicktime. Или, возможно, вина Ручного тормоза в том, что файл был неверным. Я обычно просто использую ffmpeg напрямую, потому что я командная строка ниндзя.

Питер Кордес
источник
2

Чтобы ответить на ваш вопрос - да, вы обычно можете кодировать видеофайл с любой частотой кадров, которую хотите. (Хотя некоторые программы могут ограничить вас, чтобы сделать программу проще.) Вопрос в том, будет ли выбранный формат доставки поддерживать его, и будет ли устройство воспроизведения поддерживать его?

Если у вас есть 8-миллиметровая пленка с частотой 16 кадров в секунду, я бы закодировал ее со скоростью 16 кадров в секунду, если бы знал, что воспроизводимые устройства, которые я хочу поддерживать, могут справиться с этим. Если нет, я бы, вероятно, использовал программное обеспечение, которое поддерживало оптический поток (иногда называемый оценкой движения), для кодирования его со скоростью 24 кадра в секунду, что, вероятно, является ближайшей частотой кадров, которая, вероятно, будет поддерживаться программным обеспечением кодирования, программным обеспечением декодирования и большинством аппаратного обеспечения воспроизведения.

Программное обеспечение (или аппаратное обеспечение), которое поддерживает оптический поток, будет генерировать промежуточные кадры на основе движения объектов в вашем видео. Вместо того, чтобы повторять кадр или даже смешивать 2 кадра, он генерирует новый кадр, который обычно довольно близок к тому, что было бы фактически записано, если бы вы записали с выходной частотой кадров.

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

По истории 24 FPS происходят из кино (кино). Пленка была в фотокассете, и скорость была выбрана, чтобы сделать движения плавными.

25 FPS происходят от частоты питания в Европе, 50 Гц (50 FPS от того же источника, но фактически удваивают его). На самом деле телевидение в Европе было 50 кадров в секунду, но половина кадров, они чересстрочные

30 FPS происходят от частоты питания в США, 60 Гц (60 FPS от того же источника, но фактически удваивают его). На самом деле телевидение в США было 60 кадров в секунду, но половина кадров, они чересстрочные

16 FPS не так широко распространен как стандарт для профессиональных целей, поэтому, возможно, по этой причине он не используется в большинстве современных программ. Более того, такой FPS не будет «сглаживать» достаточно быстрое движение. У меня есть одна сумасшедшая идея, как вы можете сделать 16 FPS для лучшего соответствия 24. Джуты получают каждые четные и нечетные кадры и делают что-то среднее между ними :)

Ромео Нинов
источник
Спасибо за помощь, но она не отвечает на мой вопрос. Я знаю о происхождении 24, 25, 50 и 60. Я спрашиваю, будут ли работать другие частоты кадров.
Нельсон
1

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

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

Вы можете использовать нестандартную частоту кадров, и она должна хорошо воспроизводиться на ПК, но она не будет соответствовать стандартному видео для таких вещей, как Bluray, и может не воспроизводиться хорошо на некоторых телевизорах. (И даже на тех, на которых он работает, он, скорее всего, будет выполнять опускание в режиме реального времени, чтобы соответствовать стандартной частоте кадров, тогда как предварительное опускание, скорее всего, приведет к повышению качества.)

А. Дж. Хендерсон
источник
@ user1118321 да, и спасибо за указание, это может быть более ясным.
AJ Henderson
-1

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

Расти ядро
источник
Нет, мой вопрос касался общих ставок. И получил адекватный ответ много лет назад.
Нельсон
-3

Несколько других заметок. Во-первых, 48 кадров в секунду становятся все более популярными и популярными благодаря Хоббиту и поддержке YouTube для частоты кадров. Во-вторых, 30 кадров в секунду обычно составляют 29,97 кадров в секунду, а 60 - около 59,94.

К.С. Маклафлин
источник
2
На самом деле, 30 не всегда означает 29,97. Иногда это действительно 30. То же самое относится к 24. 23.98, 24, 29.97, 30, 50, 59.94 и 60 - все это совершенно правильные, часто используемые частоты кадров. Предполагается, что те, в которых есть десятичные дроби, должны быть совместимы с вещательным телевидением в разных странах, но они по-прежнему справедливы и для веб-сетей. Однако некоторые производители видеокамер "лгут" о своих частотах. Камера с маркировкой 24p может на самом деле дать 23,98, чтобы избавить потребителя как от головной боли из-за проблем с полосами, так и от технических деталей, стоящих за ней.
Джейсон Конрад
@JasonConrad Частота кадров - это не всегда округленные десятичные дроби, но для большинства потребительских камер они есть.
KC McLaughlin
@KCMcLaughlin - на самом деле, на устройствах с прогрессивной разверткой становится все более вероятным сбросить пропущенный кадр и просто увеличить целочисленную частоту кадров. На данный момент 29.97 и 23.976 являются чисто устаревшими и все чаще заменяются чистыми целочисленными частотами кадров.
AJ Хендерсон
@KCMcLaughlin Цвет NTSC никогда не был 29,97 кадров в секунду. Это было и остается 30000/1001. Аналогично, контент 24p, транслируемый на цветной NTSC, фактически будет 24000/1001. Кроме того, моя цифровая камера (lumix) записывает 30 кадров в секунду, а не 30 / 1.001. Аудио / видео будет рассинхронизировано, если я воспроизведу другое количество кадров на 48 сэмплов аудио.
Питер Кордес