Я следую

Увеличение скорости воспроизведения
https://trac.ffmpeg .org/wiki/Как%20to%20speed%20up%20/%20slow%20down%20a%20video

Однако, когда я увеличу скорость воспроизведения в 1,5 раза, я ожидаю уменьшения размера видео на уровне/примерно на том же уровне, но вот что я получил:

-rwxrwxr-x 1 me me 10000000 2021-10-10 16:56 original_video.mp4*
-rwxrwxr-x 1 me me 10060896 2022-01-02 16:27 speed_up_output.mkv*

То есть размер файла еще больше.

Можно ли ускорить воспроизведение и уменьшить размер видео примерно в той же степени?

0
xpt 3 Янв 2022 в 01:15

1 ответ

Лучший ответ

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

Фильтр minterpolate может уменьшить количество кадров, но это процесс с большими потерями.
Вы можете пропустить каждый второй кадр, но большинство людей замечают частоту кадров ниже 24 кадров в секунду.

Уменьшение количества кадров уменьшит объем данных. Для несжатых видео можно ожидать линейную корреляцию. Эта статья содержит несколько примеров. Обратите внимание, что графики дерьмовые, так как x-тики распределены неравномерно.

В большинстве сценариев для конечных пользователей используются сжатые видео. H264 — широко распространенный компрессор. Он использует дифференциал ака. прогнозируемые кадры. Пропуск кадров будет мешать обнаружению оптического потока, что усложнит сжатие видео (при условии, что вы хотите сохранить то же качество для каждого кадра). По этой причине уменьшение частоты кадров приведет к нелинейному уменьшению размера файла. Связано: https://superuser. com/questions/283515/video-encoding-сколько-увеличивается-размер-видео-файла-с-fps

Я только что попробовал это, используя фильтр decimate ffmpeg:

ffmpeg -i raw_footage.ts -an -c:v libx264 -crf 21 30fps.mkv
ffmpeg -i 30fps.mkv -filter:v decimate=cycle=2 -c:v libx264 -crf 21 -t 30 15fps.mkv

Размеры файлов:

  • 30fps.mkv 9,4M
  • 15fps.mkv 8,2M

С уменьшенной частотой кадров видео ужасно дергается и его трудно смотреть. Совсем забито, на мой взгляд. При этом размер файла уменьшился всего на 12 %. Не очень хорошая сделка.

В большинстве случаев гораздо проще сохранить количество кадров и снизить качество изображения для каждого кадра.

ffmpeg -i original_video.mp4 -c:v libx264 -crf 31 -c:a aac -b:a 64k -movflags +faststart output.mp4

crf — настройка качества. Большее число означает «больше сжимать».

В зависимости от того, что вы делаете, также может помочь переключение на более высокий профиль. Также помогает уменьшение геометрического разрешения. Вы можете использовать лучший компрессор, такой как libx265, если он доступен.

2
Hermann 5 Янв 2022 в 00:49
Спасибо за ответ, но я действительно хочу увеличить скорость воспроизведения, это моя цель №1. Вопрос заключался в том, как уменьшить размер файла соответственно.
 – 
xpt
3 Янв 2022 в 20:40
Вы не можете ожидать многого с точки зрения уменьшения размера файла. Я расширил свой ответ объяснением.
 – 
Hermann
4 Янв 2022 в 00:33
Громко и ясно. Спасибо!
 – 
xpt
4 Янв 2022 в 23:45