LINUX.ORG.RU

Аппаратное кодирование video streaming в SPICE — как добиться?

 , , , ,


1

1

Debian buster. Из bullseye втащил qemu 4.1.1, собрал libspice-server1 с поддержкой gstreamer, собственно gstreamer с плагинами good, bad, ugly установлен. На хосте vainfo указывает наличие кодировщиков:

      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
      VAProfileH264ConstrainedBaseline:	VAEntrypointFEI
      VAProfileH264ConstrainedBaseline:	VAEntrypointStats
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264Main               :	VAEntrypointFEI
      VAProfileH264Main               :	VAEntrypointStats
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointFEI
      VAProfileH264High               :	VAEntrypointStats

Тем не менее при подключении через remote-viewer к ВМ вижу лишь mjpeg формат видео стримов. Есть ли какое-нибудь описание, как добиться h264 формата потока?

Имеется ещё такой кусочек дебага remote-viewer, но это же скорей о декодировщиках, т.е. о клиенте:

(remote-viewer:11834): Spice-DEBUG: 18:59:25.037: channel-display-gst.c:635:gstvideo_debug_available_decoders: From 236 video decoder elements,  3 can handle caps   image/jpeg: jpegdec, avdec_mjpeg, vaapijpegdec
(remote-viewer:11834): Spice-DEBUG: 18:59:25.037: channel-display-gst.c:635:gstvideo_debug_available_decoders: From 236 video decoder elements,  4 can handle caps  video/x-vp8: vaapidecodebin, vaapivp8dec, vp8dec, avdec_vp8
(remote-viewer:11834): Spice-DEBUG: 18:59:25.037: channel-display-gst.c:635:gstvideo_debug_available_decoders: From 236 video decoder elements,  3 can handle caps video/x-h264: vaapidecodebin, avdec_h264, vaapih264dec
(remote-viewer:11834): Spice-DEBUG: 18:59:25.037: channel-display-gst.c:635:gstvideo_debug_available_decoders: From 236 video decoder elements,  3 can handle caps  video/x-vp9: vaapidecodebin, vp9dec, avdec_vp9

Ответ на: комментарий от olegkrutov

нет, он предлагает заключить договор поддержки.

//spice это такая штука которая уже лет 15 работает так что ух - но, только у избранных. у меня ничего сверхестественного никогда не получалось соорудить. чтоб там на 3х экранах видосы игры и еще хз что как на ролике создателей (старом ролике)

mos ★★☆☆☆ ()
Ответ на: комментарий от anonymous

У разработчиков спайса пилится такая штука, как spice-streaming-agent (гуглится), которая компиляется, ставится на ВМ, запускается, грабит фреймбуфер иксов (весь) и жмёт его (штатно в mjpeg, но в комплекте идёт плагин, который юзает gstreamer, и тут уже можно заюзать кодеки с поддержкой имеющегося в ВМ железа, например, NVENC или упаковщики от интел/амд). Этот сжатый поток оно шлёт серверу spice на хосте, а тот его шлёт тебе как второй дисплей. Есть минусы:

  • нужна аппаратная поддержка изнутри ВМ, например, проброшенная видюха Nvidia/AMD/Intel или откушенный через mediated device кусок видюхи intel Broadwell или новее (у них это зовётся GVT-g). Ну или нарезай Nvidia GRID, хехе :)
  • ОС на ВМ – только линукс (если винда, то десятка+RDP: требования по железу почти те же, чудес не бывает, разве что более вылизано по жручести проца, зато десяточный RDP умеет h264 нативно и даже в полном цветовом разрешении 4:4:4)
  • шлётся не адаптивно кусочек экрана с видео, а всегда весь экран
  • смотреть это можно только remote viewer
  • геморно, нестабильно это всё. Этот агент (я работаю с нвидией) жрёт примерно 70% ядра 2.3GHz проца и около 500М видео ОЗУ. Обещали допилить, но когда то будет. В стабильный gstreamer опять же впиливать NVENC, например, та ещё пляска…
olegkrutov ()