Estoy buscando una manera de ver videos de YouTube en la terminal (no en un navegador u otra ventana, sino allí mismo, en cualquier sesión de bash).
¿Hay una manera simple de hacer esto?
Me imagino algo como esto:
$ youtube <video-url>
Ya sé cómo reproducir un video usando mplayer:
$ mplayer -vo caca local-file.avi
Sin embargo, esto abre una nueva ventana. Sería genial jugarlo en la terminal.
Además, debería ser compatible con las tmuxsesiones.
Hice otra pregunta sobre cómo evitar abrir una nueva ventana .
Para aquellos que se preguntan dónde necesito dicha funcionalidad, comencé un proyecto experimental llamado TmuxOS , con el concepto de que todo debería ejecutarse dentro de una tmuxsesión .
Entonces, de hecho necesito un reproductor de video para videos locales y remotos. :-)
terminal
video
adobe-flash
Ionică Bizău
fuente
fuente

mpv <youtube url>. También funciona para muchos otros sitios de videos. Pero esto abre una nueva ventana.Respuestas:
Puede descargar videos y / o solo el audio y luego verlos / escucharlos usando
youtube-dl. El script está escrito en Python y hace uso deffmpegcreo.Para descargar videos, simplemente dele la URL de la página en la que desea el video y el script hace el resto:
Luego puede usar
vlcomplayerpara verlos localmente:OK, pero quiero ver estos videos mientras se transmiten y en ASCII
Encontré este artículo del blog titulado: En ascii, youtube y dejarlo ir, eso demuestra el método que discutí en la sala de chat, principalmente
youtube-dlcomo el "backend" que podría descargar el flujo de YouTube y luego redirigirlo a alguna otra aplicación.Este artículo muestra que se está haciendo con
mplayer:El vídeo está descargando por
youtube-dlse redirige a través de la salida estándar anterior,-o -. Hay una demostración del efecto aquí .Con la instalación de bibliotecas adicionales, el video ASCII se puede mejorar aún más.
OK pero quiero el video en mi terminal actual?
Encontré este truco que permite reproducir videos en un
xtermartículo de O'Reilly titulado: Ver videos en ASCII Art .Lo anterior hace
xtermque se abra una ventana donde se reproduce el video.Entonces pensé, ¿por qué no poner la mantequilla de maní y el chocolate juntos de esta manera:
Esto casi funciona! No estoy seguro de por qué el video no se puede reproducir en la ventana, pero parece que debería poder hacerlo. La ventana aparece y comienza a jugar pero luego se cierra. Veo video por unos breves segundos y luego nada.
Quizás lo anterior lo acerque a su solución definitiva, o tal vez solo necesite modificar un poco las opciones.
Bibliotecas adicionales
Si ha
libcacainstalado (la versión coloreada deaalib) y reduce el tamaño de la fuentegnome-terminala algo realmente pequeño, como por ejemplo 3, el siguiente comando mostrará un video ASCII mucho mejor directamente en el terminal:Terminales
Parece que la elección del terminal puede hacer un gran problema en cuanto a si
mplayerpuede jugar directamente dentro del terminal o si abre una ventana separada. El almacenamiento en caché tambiénmplayermarcó una diferencia dramática al poder jugar directamente en los terminales.Usando este comando pude jugar
terminator, al menos durante el primer cuarto del video antes de que se cortara:La versión coloreada utiliza este comando:
Estos mismos comandos podrían jugar en
gnome-terminal&xtermtambién.NOTA: Eso es (de izquierda a derecha)
xterm,terminator,gnome-terminal, yterminology.fuente
terminology, y no solo con las bibliotecas de caca. Puede usar escapes de terminal para especificar una parte asignada de la ventana terninal y reproducirla allí en alta definición. Incluso puedes configurar el video como fondo y trabajar sobre él.terminologytambién comprende los URI: obtenga un enlace webm a su video de youtube y soloprintfa la pantalla como un indicador de terminal.tybg my.avi¿no?printfmétodo. Hagatybg somefile | sed -n lpara ver cómo funciona: solo usa escapes de terminal extendidos. Están documentados en lamanpágina. Puedes hacer lo mismo conty{ls,cat}. Pero esas pequeñas aplicaciones son solo viejos envoltorios de demostración de lo real y tal vez no tan capaces. De todos modos, si su versión se ha creado en los últimos dos meses, es posible que le guste la miniview tanto como a mí: ctrl + shift + h. Toda la iluminación es igual de buena, es por eso que te sugerí que la probaras recientemente. También es una locura rápida.Entonces, con Terminología (probablemente lo mejor que le haya pasado a un emulador de terminal, por cierto) en el momento de escribir este artículo, funciona lo siguiente:
El
terminologybit específico es elthenbloque enplay()laprintf \033}...línea.terminologyacepta escapes de terminal extendidos para imprimir medios en la pantalla, algo así como colores rápidos, pero también video de alta definición y, básicamente, cualquier otra cosa que desee.El resto es un poco de
curl | sedscript que:ytplay 'https://www.youtube.com/watch?v=${id}'y así...curl "$yturl" | grep url_encoded_fmt_stream_mappara ver todo el bloque.grepanterior, encontrará la lista en el campo"delimitado por comillas...stream_map: ".%[[:hexdigit:]]\{2\}codificación en enlaces de trabajo./tmp/vid.${mime-type}pero siytplayse llama con un segundo argumento, lo interpretará como el nombre de archivo de descarga específico, a la vez que agrega la extensión según el tipo MIME.terminologylos medios colocados en segundo plano ahora escape de terminal, de lo contrario simplemente se da por vencido y le deja un mensaje de error en mayúsculas\033}bt[LINK/FILE]\0para jugar a ventana completa.pnlo abriría a una nueva ventana. Hay otros para limitar geométricamente el área de juego, por ejemplo, solo para una parte de la ventana.Esto ha experimentado solo un poco más que pruebas muy mínimas , pero hasta ahora ha funcionado para cada enlace sin falta, excepto uno, y debido a que no estaba realmente interesado en ver el que no se jugó, no intenté averiguarlo por qué.
Si bien funcionó para todos ellos, no necesariamente se reprodujo cada uno, y esto se debe a que al principio adjunté ciegamente la
.mp4extensión al archivo de destino sin verificar si era correcta. Es posible que el que no examiné antes fuera solo esto también. En cualquier caso, lo cambié para manejar eso.Como mencioné antes, el único
terminologybit específico está en la última función,play()por lo que puede modificarlo fácilmente para hacer lo que quiera con el archivo de video descargado / descargado, como usarlo conmplayerlas bibliotecas CACA en otro terminal, o salta a lavlcventana o lo que sea. Pero si te gustas, lo verás en alta definiciónterminology.Ah, y por último, esto suele ser muy rápido : mis velocidades han maximizado mi ancho de banda hasta el momento en cada intento, pero de
terminologytodos modos no necesito el archivo completo para comenzar a reproducirlo.Aquí está funcionando:
fuente
/tmp/vid.mp4tal vez deberías usarmktemp --suffix=.mp4, ¿no?terminologyelgstreamerbackend accidentalmente pueda ejecutar código ejecutable en un archivo de video ... Tal vez. Lo dudo, pero no tengo suficiente para decir con certeza. De todos modos, prefiero que siempre escriba sobre el mismo archivo a menos que diga lo contrario, pero si consigo mejorarlo, como la selección de tamaños y tal, definitivamente lo arreglaré también.terminologyen todos - los que van atmux'sptyporquetmuxposee el lado del maestro de los que intervienenptys yterminologypropietaria de la parte principal detmux' spty. Para manejar eso se puede hacer, como ...PTTY=$(tty) tmux ...entonces en latmuxsesión como ...tybg >"$PTTY". De hecho, acabo de responder el mismo problema que tienes aquí ayer. La secuencia de comandos anterior debería funcionar comoytplay ... >"$PTTY"dentro de un multiplexor de esa manera.Hay un tutorial para esto en youtube:
https://www.youtube.com/watch?v=QCuq0_nY3Xk
De acuerdo con ese video, lo siguiente debería funcionar:
Puede crear una función simple para este propósito:
fuente
mplayer <(youtube-dl -o - "https://www.youtube.com/watch?v=QCuq0_nY3Xk")mplayerelige automáticamente el mejor controlador de salida, y si tiene Xorg ejecutándose, probablemente elegirá elxvcontrolador. Trate de añadir la siguiente opción demplayerelegir el controlador de la consola arte ASCII:-vo caca.Desde https://github.com/mps-youtube/mps-youtube
fuente