Слишком большой видеофайл, созданный с помощью FFmpeg

2

В моем проекте C # я делаю снимки экрана через равные промежутки времени (с таймером). Затем мне нужно преобразовать изображения в одно видео с помощью FFmpeg, поэтому я использую эту команду:

"-f image2 -framerate 9 -i E:\\REC\\Temp\\%06d.jpeg -r 30 E:\\REC\\Video\\" + s + ".mkv"

Это работает, но размер выходного видео большой, около 8 МБ всего за 1 минуту видео. Как я могу сделать видео меньше по размеру, не жертвуя качеством?

Магед Э Уильям
источник
Действительно ли 8MB настолько велики для видео в формате .mkv? Я не думаю, что это так. Как мало вы хотели бы, учитывая, что вы, вероятно, потеряете качество?
Мэтью Уильямс,
Хорошо, я буду снимать экран 10 часов в день каждый день, поэтому мне нужно, чтобы он был как можно меньше и "хорошего" качества, примерно 2 - 4 mbна 1 min?
Maged E William
Смена формата, вероятно, будет хорошей идеей. MKV хороший контейнер, но может быть большим. Попробуйте mp4 или что-то в этом роде.
Мэтью Уильямс,
Размер зависит не от контейнера, а от кодека. Также в каком разрешении есть скриншоты? Вам нужно, чтобы они были в полном разрешении?
STIB
да 1366x768 Я использовал код в ответе, но хочу сделать его менее качественным
Maged E William

Ответы:

2

Из того, что я знаю, MKV является контейнером, вам нужно использовать сжатие для видеопотока, например:

ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

В этом примере каждое изображение будет иметь продолжительность 5 секунд (обратное значение 1/5 кадров в секунду). Видеопоток будет иметь частоту 30 кадров в секунду, дублируя соответствующие кадры.

Для получения дополнительной информации см. Эту статью на вики FFmpeg .

Рабин
источник
хорошо, но что, если я хочу, чтобы это было менее качественным?
Maged E Уильям
1
используйте, -crf nгде n - это число, начинающееся с 1, для максимально возможного качества 20 соответствует качеству DVD, а 30 начинает выглядеть немного отвратительно. Размер будет меняться обратно пропорционально качеству.
STIB
спасибо за это @stib
E Уильям