Я пытаюсь изменить частоту кадров видео MP4 (это видео GoPro 120 кадров в секунду, я хочу воспроизвести его со скоростью 30 кадров в секунду для эффекта замедленного воспроизведения).
Я использую avconv для этого:
avconv -i SourceMovie.mp4 -vf setpts=4.0*PTS -r 30 DestMovie.mp4
Это технически работает, но перекодирует фильм. В дополнение к медленной, это, очевидно, проблема качества. Технически должен быть способ установить fps в заголовке видео, как я могу это изменить? (Любой инструмент, кроме avconv тоже подойдет.)
video
avconv
video-conversion
EboMike
источник
источник
MP4Box -add source.mp4#video -raw 1 -new test
), а затем снова сохраните его как MP4 (MP4Box -add test_track1.h264:fps=30 -new dest.mp4
). Вы также можете добавить туда звуковую дорожку (через #audio).-single
опцию для первой команды.MP4Box -single 1 -raw 1 SourceMovie.mp4
создает только один файлSourceMovie_track1.h264
вместо двух.Изменение частоты кадров в заголовке видео (контейнера) не влияет на сам видеопоток (или аудиопоток). Перекодирование является единственным вариантом.
Видеопотоки имеют временные метки, и в большинстве видео кадры взаимозависимы друг от друга из-за межкадрового сжатия. Некоторые плееры могут ускорять и замедлять видео, но не с помощью встроенных команд или чего-то еще. Ни один игрок не может изменить частоту кадров на лету, когда команда контейнера просит сделать это. Видеофайл будет не соответствовать спецификации (то есть не будет соответствовать стандартам), и 99,9% игроков откажутся соблюдать его. Совершенно невозможно сделать то, что вы хотите, без перекодирования. Конечно, вы можете подождать с перекодированием до последнего шага вашего редактирования.
источник
В случае, если ваша главная цель - воспроизвести его в замедленном режиме, а не сохранить файл в формате MP4, вы можете использовать инструмент MKVmerge GUI, чтобы смешать его в контейнере Matroska, который может легко изменить частоту кадров. Remuxing намного лучше, чем перекодирование, потому что он изменяет только метаданные, а не сам поток.
Сначала вы устанавливаете пакет
Затем вы запускаете MKVmerge GUI. Вы столкнетесь с таким окном
Просто нажмите кнопку «Добавить» и выберите свой файл или просто перетащите файл в область «Входные файлы». На этом этапе вы сможете выбрать видеопоток в вашем видео. Вы также можете удалить другие потоки, так как они все равно будут мешать.
После того, как вы выбрали его, вы должны увидеть, как активируются нижние вкладки:
Измените на «Форматировать определенные действия»
Вы можете видеть, что есть поле «FPS», где вы можете ввести значение кадров в секунду. Выглядело так, как будто вы планируете замедлить работу четыре раза, поэтому вашей целью будет около 7 кадров в секунду. Вы также можете использовать опцию «Растянуть по».
После этого вы можете просто изменить имя выходного файла (если хотите) и нажать «Начать мультиплексирование».
Программа запустится, и вы должны иметь свой файл.
источник
Я также хотел замедлить без потерь мои 120 кадров в секунду до 30 кадров в секунду. Я сделал скрипт, который делает это путем изменения темпа звука и изменения FPS непосредственно в контейнере MP4. Требуются следующие инструменты:
Скрипт, используемый для конвертации, находится здесь:
Этот скрипт создает копию MP4 с постфиксом _slow.
источник