2016-09-02 12 views
0

1. Нам нужно записывать скриншоты в видео со скоростью 2-3 кадра в секунду. Качество - минимально возможный текст на экране, читаемый, 256 цветов. Важно максимально уменьшить размер выходного видеофайла.запись на экране и кодирование видео с помощью ffmpeg

2.we've сделал много испытаний, и в настоящее время наиболее подходящий способ сделать скриншоты каждый 300-500msec, сохранять их в формате PNG, а затем запустить FFmpeg кодировать H.267 с этим Params:

ffmpeg -f image2 -i "C:\png5min\image%04d.png" -y -an -vcodec libx264 -preset veryfast -crf 30 "C:\output.mp4" 

3.Есть ли это лучший способ получить минимальный размер выходного файла с помощью скринкаста 2-3fps?

4. выходной файл воспроизводится очень быстро, кодек по умолчанию касается того, что изображения представляют 25 кадров в секунду. Но они на самом деле 2fps. Хорошо, но если мы попытаемся уменьшить выходную частоту кадров, размер выходного файла увеличивается примерно в два раза! (от 3 мб до 6 мб для видео 3 м: 26 с). И если мы устанавливаем частоту кадров выходного сигнала в 2 - видео не воспроизводится кадров на всех или играет только 2 кадров для 3mins ...:

-r 2 -f image2 -i "C:\png5min\image%04d.png" -y -an -vcodec libx264 -preset veryfast -crf 30 -r 2 "C:\image5min_2fps_crf30_test__R2-2.mp4" 

так, как мы можем просто добавить некоторую задержку после каждого кадра без увеличения размер выходного файла ???

+0

Кстати, если попытаться записать экран непосредственно с FFmpeg, мы получаем гораздо больше выходного файла: FFmpeg -f DShow -r -i 2 видео = "экран захвата-рекордер" -vcodec libx264 -crf 30 - preset ultrafast c: \ output3.mkv так, похоже, что кодек работает намного лучше сжимает предопределенный набор изображений, да? –

+0

http://stackoverflow.com/a/43464269/6180077 Посетите эту ссылку для работы с программой FFMPEG C++ mp4. –

ответ

1

Попробуйте использовать низкую скорость ввода и более высокую скорость вывода.

Прямой захват:

ffmpeg -f dshow -framerate 2 -i video="screen-capture-recorder" -c:v libx264 -r 12 -crf 30 -preset fast c:\output3.mkv 

Преобразование изображения:

-framerate 2 -i "C:\png5min\image%04d.png" -y -c:v libx264 -preset medium -crf 30 -r 6 -x264opts ref=5:min-keyint=300:keyint=600:rc-lookahead=150 "C:\image5min_2fps_crf30_test__R2-2.mp4" 

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

+0

Ваша команда прямого захвата лучше, чем наш прямой захват, но все еще не так хороша, как наше преобразование изображения с 2 кадрами в секунду -> 25 кадров в секунду .... И преобразование изображения, которое вы предлагаете, делает похожие вещи, которые мы пробовали с выходом 10fps ... 6-7Mb-файл вместо 3Mb ... –

+0

Итак, правильно ли мы, что если размер файла и скорость конвертации \ скорость критически важны для нам лучше сделать это, как и в случае с 2 -> 25fps (очень быстрое видео, 16 секунд вместо 3мин), а не просто делать медленное воспроизведение в проигрывателе? (мы будем использовать наш плеер html5, не будем играть в эти скринкасты у других сторонних игроков) –

+0

будет проблемой для воспроизведения видео H.264 mp4 во всех популярных браузерах с 12-кратным медленным воспроизведением (25 кадров в секунду -> 2 кадра в секунду) ? –