Screencast a salas de jitsi con SSR y jack
Grabar las salas de jitsi en un screencast puede ser problemático en GNU/Linux, sobre todo por la parte del sonido usando PulseAudio.
Soluciones como OBS lo pueden hacer perfectamente, sin embargo, es demasiado exigentes para máquinas con pocos recursos, por eso en esta entrada te voy a mostrar como usar SimpleScreenRecorder (SSR desde ahora) y jack como servidor de sonido para ese fin.
Cualquiera que use GNU/Linux conoce la dificultad de grabar el sonido de la PC y micrófono al mismo tiempo con PulseAudio, que es (por ahora) el servidor de sonido por defecto en la mayoría de las distribuciones. Por suerte existe JACK (JACK Audio Connection Kit) un servidor de sonido profesional para GNU/Linux.
JACK Audio Connection Kit
JACK elimina estas restricciones, además de darnos infinitas posibilidades para manejar el audio en conjunto con un manejador para JACK como Studio Controls y algunas herramientas como Carla para realizar conexiones, colocar plug-ins y mucho más.
No es la idea de este post extendernos en el funcionamiento de JACK, pero es importante que comprendas como funciona, para eso hicimos antes esta entrada donde te lo explicamos. También haremos uso de Studio Controls para manejar JACK y crear los puentes con PulseAudio necesarios para grabar un screencast con sonido bidireccional con SSR. En esta entrada te mostramos como funciona Studio Controls.
Grabar salas de Jitsi con SSR
SSR es un gran programa para hacer Screencast y de los que consumen menos recursos si lo configuras bien. Para este tutorial hemos configurado mediante Studio Controls dos puentes de entrada con pulse SSR_in y pulse_in, a la hora de configurar de donde va a capturar el audio SSR vamos a decirle que lo haga mediante PulseAudio y del puente SSR_in como se ve en la siguiente imagen.
Los nombres de los puentes de entrada y salida con pulse son solo ilustrativos, los tuyos pueden llamarse de cualquier manera, pero vas a necesitar por lo menos dos de entrada y uno de salida, por defecto Studio Controls crea uno de entrada y uno de salida, por lo que deberías añadir uno más de entrada y no sería mala idea añadir alguno más de salida también.
Como funcionan los puentes entre JACK y PulseAudio
Si no existieran los puentes entre JACK y Pulse solo las aplicaciones que funcionen con JACK podrían reproducir sonido o capturar al iniciar el servidor de sonido JACK, ya que este toma el control. Mediante esos puentes de entrada y salida, las aplicaciones que funcionan con pulse (por ejemplo, navegadores, algunos reproductores, etc. etc.) pueden reproducir y grabar sonido a través de los mismos.
Vamos a ver en Carla que es cada cosa cuando usamos JACK.
En (1) tenemos system capture_1 y capture_2 que es el dispositivo de captura físico de nuestra tarjeta de sonido, el micrófono, en este caso con sus canales.
En (2) y (3) vemos los puentes de entrada con pulse, pulse_in y SSR_in en este caso que serán los puentes mediante los cuales las aplicaciones que funcionan con pulse podrán capturar audio o sea grabar audio.
En (4) y (5) están los puentes de salida con pulse salida-entrevistas y SalidaUSB en este caso, y es a través de cualquiera de ellos que las aplicaciones que usan pulse pueden emitir sonidos (por ejemplo un navegador cuando miramos un video)
Y por último (6) tenemos system playback_1 y playback_2 que es la salida de nuestra tarjeta de sonido con sus dos canales o lo que es lo mismo lo que conectemos ahí lo escucharemos.
Si prestas atención puedes deducir que el micro sistem capture_1 (es mono) está conectado a pulse_in y SSR_in o sea que cualquier aplicación pulse que capture sonido por cualquiera de estos dos puentes de entrada estará grabando el micro.
Al mismo tiempo el puente de salida salida-entrevistas está conectado a SSR_in y a system playback esto quiere decir que cualquier aplicación pulse que saque sonido por salida-entrevista lo estaríamos escuchando y también ese sonido estaría siendo grabado por cualquier aplicación pulse que usara el puente de entrada SSR_in.
Si miras la imagen 1 puedes darte cuenta de que le indicamos a SSR que grabara lo que entre en SSR_in, por lo tanto, estaría grabando nuestro micro y lo que salga por salida-entrevista.
Ya te debes haber dado cuenta que si queremos que SSR grabe tanto nuestra voz como lo que hablan los demás en una sala de Jitsi debemos decirle que el navegador o la aplicación de jitsi desktop saque el audio de la sala por salida-entrevista.
Configurando el audio de Jitsi
Espero ya comprendas como funcionan los puentes, según lo que vimos hasta ahora debemos decirle a jitsi que el sonido de lo que hablan en la sala salga por el puente de salida salida-entrevista y de esta forma sea grabado por SSR a través del puente de entrada SSR_in.
En la elección del micrófono vamos a decir que capture nuestro micro a través del puente de entrada pulse_in (ahora explicaré por qué ese puente y no SSR_in)
Para la salida de audio o sea lo que hablan los demás en la sala vamos a elegir como vimos antes el puente de salida salida-entrevistas, de este modo eso lo estaríamos grabando con SSR y escuchando también.
Te voy a explicar por qué elegimos pulse_in para que capture el micro y no SSR_in siendo que si miramos las conexiones en la imagen 2 el micro está conectado a ambas entradas.
Si miramos atentamente vemos que SSR está grabando el audio o los audios que entran a SSR_in ( ver imagen 1) y como queremos que se grabe tanto nuestro micro como lo que hablan los demás en la sala hemos conectado a ese puente de entrada tanto el micro como la salida de salida-entrevistas, entonces si nosotros le hubiésemos dicho a Jitsi que capturara el sonido que entra a SSR_in le estaríamos enviando además de nuestro micro también su propio audio a la gente de la sala y tendríamos una realimentación.
Por eso le dijimos a Jitsi que capturara desde pulse_in a donde solo va nuestro micro que es lo que debemos enviar a la sala. Observen con atención la imagen 2 y se darán cuenta.
Otra cosa que pueden deducir es que cualquier audio que metamos en pulse_in lo estarán escuchando en la sala, por lo mismo si por ejemplo queremos reproducir un audio o video con VLC y le decimos a VLC que saque el sonido por el puente de salida salidaUSB y lo conectamos en Carla a pulse_in estaríamos enviando ese audio a la sala.
Veamos un ejemplo de esto, voy a abrir un video con VLC y lo pongo a reproducir, luego abro el Control de volumen de PulseAudio (si no lo tienen instalan pavucontrol) y me voy a la pestaña Reproducción, ahí encontraré a VLC que está reproduciendo sonido, le digo que saque el sonido por el puente salidaUSB como se puede ver en la siguiente imagen.
Luego en Carla envío lo que sale por salidaUSB (VLC en este caso) a playback para escucharlo, a SSR_in para que SSR lo grabe en el screencast y también a pulse_in para que los demás lo escuchen en la sala. En la siguiente imagen se pueden ver en color claro estas conexiones que comentamos.
El uso de JACK requiere cierto aprendizaje, pero una vez comprendes como funciona, no lo abandonarás por todas las posibilidades que proporciona, aquí solo vimos lo básico para el objetivo de la entrada, pero además puedes con Carla añadir plug-ins como ecualizadores, compresores, filtros de ruido, mezcladores virtuales y un sin fin de cosas más como puedes ver aquí. Puedes guardar todo eso en un estudio y llamarlo cuando quieras, en otros post hemos hablado sobre esto, puedes mirarlos cuando ya comprendas el funcionamiento de jack, Studio Controls y Carla.
Para finalizar, como siempre, te dejo un video con lo tratado en este post para que no te queden dudas. Si tu conexión es lenta puedes visualizarlo en Fediverse TV a menor resolución.
Estamos migrando nuestros videos a Odysee una plataforma descentralizada y libre de censura y por supuesto también los mantendremos en Fediverse.TV.
Si quieres unirte a la comunidad de Odysee puedes hacerlo con nuestro enlace de invitación y de esta forma estarás apoyando nuestro contenido y al mismo tiempo ganando unos LBC extras.
Nos vemos en Odysee!!