Как уменьшить потребление ресурсов процессора с помощью avconv и направить его в avplay?

Смотрите окончательное редактирование.

Мне нужно захватить второй монитор и показать на главном дисплее в небольшом окне. Мне не нужно качество, но производительность.

Таким образом, (рабочая) команда для захвата второго монитора 1280x1024 и показа его в окне 640x480 со скоростью 15 кадров в секунду и переворачивания по горизонтали будет (из askUbuntu):

avconv -f x11grab -r 15 -s 1280x1024 -i :0.1 -c:v mpeg4 \
  -b:v 1000k -s 640x480 -vf "hflip" -f avi - | avplay -i -
  • Как масштабировать с интерполяцией "Нет"?
  • Я использовал "-c:v mpeg4" и "-b:v 1000k", чтобы иметь хорошее качество изображения, но... есть ли другой формат / битрейт, чтобы уменьшить при минимальном потреблении процессора?
  • Я знаю, что горизонтальное переворачивание является основным эффектом, но есть ли способ сказать avconv уменьшить загрузку процессора с помощью опции -vf?
  • Когда игровое окно показывает звезду, его 15fps соблюдается. Но затем он постепенно становится все ниже и ниже, пока не застрянет... пока я не нажму на окно. Затем он увеличивается до 15 кадров в секунду и снова становится ниже. Почему так и как этого избежать? Я пытался использовать "nice -n-20" как с avconv, так и с avplay, но это не имеет значения.

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

Я на Ubuntu-Mate 14.04.

Спасибо!

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: команда будет:

avconv -f x11grab -r 30 -s 1280x1024 -i :0.0+1920 -c:v mpeg4 \
-b:v 1000k -vf "hflip" -vf "scale=640:480" -sws_flags "neighbor" \
-f avi - | avplay -i -

Но проблема частоты кадров не решена, и он потребляет 16-18% процессорного времени. В этом вопросе есть опция Gstreamer с gst-launch: она потребляет 2-4% CPU. Таким образом, опция avconvert/avplay для меня бесполезна.

1 ответ

Попробуйте с помощью framerate вариант для x11grab.

Другие вопросы по тегам