Захватите терминал на Ubuntu с помощью OBS

Я пытаюсь захватить терминал на моем компьютере Ubuntu 16.04 LTS с OBS 21.0.1, однако, когда я выбираю окно терминала, используя метод "Window Capture (XComposite)", я просто получаю черный экран. С помощью этого метода я могу запечатлеть любое другое окно, и, похоже, проблема только с терминалом.

Любые предложения по исправлению этого, или мне придется перейти на другой эмулятор терминала, например, эмулятор терминала PuTTY?

1 ответ

Решение

Старайтесь не использовать эмуляторы терминала с альфа-каналами (например, поддержкой прозрачности), например, включенными в ваш дистрибутив. (В моем случае это KDE Konsole.)

Вместо этого используйте терминал без поддержки прозрачности, такой как XTerm или UXTerm, который должен быть включен как часть любой чистой дистрибутивной установки.

Поначалу он может выглядеть не так хорошо или иметь такой же набор функций, но я могу подтвердить, что OBS может захватить источник и правильно отобразить его. (Я подтвердил это прошлой ночью во время 4,5-часового потока.)

Чтобы это выглядело лучше, вы можете нажать и удерживать Ctrl + R-Click, чтобы получить контекстное меню терминала и изменить размер шрифта, установить для него использование шрифтов TrueType и т. Д. Это определенно помогает и настоятельно рекомендуется.

описание проблемы

Вчера я столкнулся с этой проблемой и после дополнительных поисков обнаружил, что это известная ошибка в OBS, о которой сообщалось здесь 31 октября 2014 года, а последнее обновление (до закрытого состояния) 26 ноября 2016 года.

Проблема в том, что OBS не может захватывать данные из источника, имеющего альфа-канал. Если вы запустите OBS из терминала, вы увидите вывод ниже, когда попытаетесь добавить новый источник Window Capture (XComposite) для захвата из терминала. На моей системе несколько минут назад соответствующий вывод был:

info: User added source 'Terminal' (xcomposite_input) to scene 'Code - Mono'
info: xcompcap: [window-capture: 'Terminal'] update settings:
        title: Desktop — Plasma
        class: plasmashell
error: glCopyImageSubData failed, glGetError returned 0x502
error: device_copy_texture (GL) failed
error: glCopyImageSubData failed, glGetError returned 0x502
error: device_copy_texture (GL) failed
error: glCopyImageSubData failed, glGetError returned 0x502
error: device_copy_texture (GL) failed
error: glCopyImageSubData failed, glGetError returned 0x502
...

Терминал имеет альфа-канал, который используется для прозрачности, и это то, что заставляет OBS отключаться всякий раз, когда вы пытаетесь захватить из этого источника.

Как вы можете видеть из моего терминала ниже (KDE Konsole: Настройки → Редактировать текущий профиль... → Внешний вид (вкладка) → Редактировать...), вы можете установить значение альфа-канала (прозрачность) на 0%, но вы не можете на самом деле удалите канал, чтобы получить терминал без самого альфа-канала.

Судя по всему, кажется, что у них нет никакого способа (или намерения) исправить эту ошибку, что в любом случае неудачно.

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