jueves, 18 de junio de 2020

Cómo enviar audio y vídeo de GNU/Linux a Chromecast.

Mkchromecas es un programa para transmitir su audio Linux a sus dispositivos Google Cast.
También puede emitir archivos de video.

Está escrito para Python3, y puede transmitir a través de node.js, parec (Linux), ffmpeg o avconv. Mkchromecast es capaz de utilizar formatos de audio con pérdida y sin pérdida siempre que estén instalados ffmpeg, avconv (Linux) o parec (Linux).

También es compatible con la reproducción grupal de varias habitaciones y con una alta resolución de audio de 24 bits / 96 kHz.




Además, un menú de la bandeja del sistema está disponible. 


¿Cómo instalar y usar Mkchromecast?

En cualquier distro de Linux podemos instalar mkchromecast directamente desde su código fuente alojado en Github, para ello debemos realizar los siguientes pasos:

Clonar el repositorio oficial de la herramienta, o en su defecto descargar la versión estable de la aplicación desde aquí.



Los usuarios de Debian, Ubuntu y derivados pueden instalar la herramienta directamente desde los repositorios oficiales, sólo debe ejecutar desde la consola el siguiente comando:

sudo apt install mkchromecast
Como dijimos, Mkchromecast requiere de Pyhon3 y una serie de requisitos para que funcione.
Los usuarios de GNU/Linux pueden intentar instalar estos requisitos de Python utilizando los administradores de paquetes que vienen con sus distribuciones.

Ejemplo para distribuciones basadas en Debian:

sudo apt install python3.6 python3-pip python3-pychromecast python3-flask python3-psutil python3-setuptools python3-mutagen python3-gi vorbis-tools sox lame flac faac opus-tools ffmpeg libav-tools pavucontrol python3-pyqt5 
Uso
Audio
Abra una terminal y ejecute:
mkchromecast
Esto lanzará Mkchromecast usando "parec" (Parec Reproduce o graba secuencias de audio sin formato o codificadas en un servidor de sonido PulseAudio en Linux), y realizará la parte de transmisión junto con el formato de codificación de audio mp3.

En Linux, debe seleccionar con "pavucontrol" el receptor llamado Mkchromecast para transmitir a menos que esté utilizando ALSA. Vea la wiki para más información.

Nota: el proceso de conversión es independiente de pulseaudio. Esto significa que Mkchromecast le dirá al dispositivo de transmisión que escuche su computadora, pero no se escuchará ningún sonido hasta que seleccione el receptor. Para los usuarios de ALSA, esto no se aplica.












Otros ejemplos usando el paquete instalado desde debian de  Mkchromecast 

Para transmitir usando parec y el formato wav de codificación de audio:

 mkchromecast -c wav 
También hay una opción para cambiar la tasa de bits, y en este caso con ffmpeg:
 mkchromecast --encoder-backend ffmpeg -c ogg -b 128 
y otro para cambiar la frecuencia de muestreo:
 mkchromecast --encoder-backend ffmpeg -c ogg -b 128 --sample-rate 48000 
Nota: para usar avconv simplemente reemplace de ffmpeg a avconv en los comandos anteriores.

 
Usando  Mkchromecast  desde la bandeja del sistema
Para lanzarlo:

 mkchromecast -t 

La aplicación de la bandeja del sistema puede realizar todas las acciones de los comandos mencionados anteriormente.
Para tener una idea, acá un video en Youtube.



Reproducción de URL de YouTube en dispositivos Google Cast

Puede reproducir URL de YouTube (u otros sitios)  desde la línea de comandos:
 mkchromecast -y https://www.youtube.com/watch\?v\=J1LmiKO03S0 --video --control 
Para usar esta función, necesita instalar youtube-dl. En distribuciones basadas en Debian:
 apt install youtube-dl 
Nota: es posible que deba encerrar la URL entre comillas, y solo se admiten URL a través de https.

Reproducción de URL de origen en dispositivos Google Cast

Puede reproducir cualquier URL de origen desde la línea de comandos:
 mkchromecast --source-url SOURCE_URL 
Esta opción es útil para:

  1. Transmitir usando MPD en el caso de que ya tenga una fuente de transmisión http.
  2. Lanzar una estación de radio.

Una lista de estaciones para probar : http://www.radio-browser.info/gui/#!/bycountry/Argentina

Ejemplo "Los 40 principales de Argentina":
 mkchromecast --source-url http://18733.live.streamtheworld.com:3690/LOS40_ARGENTINA_SC -c ogg --control 
Como se puede ver arriba, el códec debe especificarse con la bandera -c.

Nota: .m3u o .pls aún no son compatibles.

Controlar el volumen de Google Cast y las opciones de pausa / reanudar:

Puede controlar el volumen de su dispositivo Google Cast iniciando  Mkchromecast  con la opción --control:

 mkchromecast --encoder-backend ffmpeg -c ogg -b 320 --control 
Esto le permitirá presionar las teclas  para subir y bajar el volumen respectivamente.

La bandeja del sistema tiene una ventana con un control deslizante de volumen para subir y bajar el volumen.

Audio de alta calidad

 Mkchromecast  te permite transmitir usando una resolución de audio de 24 bits / 96 kHz. Esta es la capacidad máxima de audio de Chromecast.
Los códecs compatibles son: wav y flac. A pesar de que aac puede usar una frecuencia de muestreo de 96000Hz, la tasa de bits corresponde a la de un formato de compresión de datos con pérdida. Por lo tanto, las siguientes combinaciones pueden lograr esta capacidad de 24 bits / 96 kHz:
  • wav + 96000Hz frecuencia de muestreo.
  • flac + frecuencia de muestreo de 96000Hz.

Video

Ahora puede transmitir videos a su Chromecast usando  Mkchromecast  . Esta característica funciona con ffmpeg y desde la línea de comandos.
  • Transmita un archivo desde su computadora a su Chromecast:
 mkchromecast --video -i "/path/to/file.mp4" 
Nota: el formato del archivo puede ser el que sea compatible con ffmpeg y no exclusivamente mp4.

  • Subtítulos:
 mkchromecast --video -i "/tmp/Homeland.S06E01.Fair.Game.1080p.AMZN.WEBRip.HEVC.DD5.1.x265.mkv" --subtitles /tmp/Homeland.S06E01.Fair\ Game.HDTV.x264-BATV.en.HI.srt 
Nota: Asegúrese que los subtítulos no tengan errores en la codificación de caracteres (UTF-8, Windows-1252... etc), dado que de ser así ffmpeg fallará, truncando la transmisión. En el caso que esto sucediese, los subtítulos se pueden arreglar mediante Aegisub (Aegisub es una herramienta gratuita de código abierto multiplataforma para crear, modificar, recodificar y exportar a otros formatos de subtítulos muy interesantes como SSA/ASS  más avanzado que el SRT.)
  • Establecer la resolución:
 mkchromecast --video --resolution 4k -i /path/to/myvideo.something --subtitles /path/to/my.srt 
  • Transmitir desde una URL de origen:
 mkchromecast --source-url http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4 -c mp4 --volume --video 
  • Video de Youtube
 mkchromecast -y https://www.youtube.com/watch\?v\=J1LmiKO03S0 --video --control 
Nota: Asegúrese de tener la última versión de la librería youtube-dl. En mi caso obtuve un error al querer reproducir videos de youtube (del tipo "ERROR:J1LmiKO03S0:YouTube said:Invalid parameters.") el cual se solucionó luego de actualizar youtube-dl.

  • ¿Cómo actualizo youtube-dl ?
 sudo youtube-dl -U 
Si ha usado pip, una simple instalación de sudo pip -U youtube-dl es suficiente para actualizar.
sudo pip install -U youtube-dl 
Si ha instalado youtube-dl usando un administrador de paquetes como apt-get o yum, use el mecanismo de actualización del sistema estándar para actualizar. Tenga en cuenta que los paquetes de distribución a menudo están desactualizados. 
Como regla general, youtube-dl se publica al menos una vez al mes y, a menudo, semanalmente o incluso a diario. Simplemente vaya a https://yt-dl.org para averiguar la versión actual. Desafortunadamente, no hay nada que los desarrolladores de youtube-dl puedan hacer si su distribución sirve una versión realmente desactualizada. Puede (y debe) quejarse de su distribución en su bugtracker o foro de soporte.
  •  Matar a la aplicación:
Para eliminar  Mkchromecast  cuando lo ejecutas desde la consola, simplemente presiona la tecla  Ctrl-C  para salir (cuando se pasa --control de control).
Al iniciar desde la bandeja del sistema, use el botón Salir en la bandeja del sistema.


Más ayuda

Para obtener más ayuda:
 mkchromecast -h 
  • Problemas conocidos
General

     Las versiones de Mkchromecast inferiores a 0.3.7 no pueden funcionar con versiones más recientes de pychromecast.
     Cuando se transmiten videos usando el nodo backend, no es posible usar ni las marcas --subtitle ni --seek.
     Al transmitir a Sonos, los únicos códecs compatibles son: mp3 y aac. No le daré soporte a wma. Aparentemente hay una forma de jugar wav y ogg que intentaré implementar más tarde.

Cuando se utiliza el codificador parec y lame, el retraso entre el audio reproducido y escuchado puede ser de hasta 8 segundos. Te sugiero que uses algo diferente a mp3.

También puede consultar las preguntas frecuentes para obtener más información.


Visite el sitio web de Mkchromecast.
Creado por: Muammar El Khatib.



viernes, 29 de mayo de 2020

Volviendo a rodar.

Las autoridades locales ya permiten
que salgamos a hacer ciclismo en Rio Gallegos.

Mas de un mes sin casos positivos de covid.
Cuidémosnos entre todos con responsabilidad.