Je cherche un moyen de regarder des vidéos YouTube dans un terminal (pas dans un navigateur ni dans une autre fenêtre, mais juste là, lors d'une session bash).
Y a-t-il un moyen simple de faire cela?
J'imagine quelque chose comme ça:
$ youtube <video-url>
Je sais déjà comment lire une vidéo en utilisant mplayer
:
$ mplayer -vo caca local-file.avi
Cependant, cela ouvre une nouvelle fenêtre. Ce serait cool de le jouer en terminal.
En outre, il devrait être compatible avec les tmux
sessions.
J'ai posé une autre question pour savoir comment empêcher l'ouverture d'une nouvelle fenêtre .
Pour ceux qui se demandent où j'ai besoin d'une telle fonctionnalité, j'ai démarré un projet expérimental nommé TmuxOS - avec le concept selon lequel tout devrait s'exécuter dans une tmux
session .
Donc, en effet, j'ai besoin d'un lecteur vidéo pour les vidéos locales et à distance. :-)
la source
mpv <youtube url>
. Cela fonctionne également pour un tas d'autres sites vidéo. Mais cela ouvre une nouvelle fenêtre.Réponses:
Vous pouvez télécharger des vidéos et / ou simplement l'audio, puis les regarder / les écouter avec
youtube-dl
. Le script est écrit en Python et utiliseffmpeg
je crois.Pour télécharger des vidéos, vous devez simplement lui donner l'URL de la page sur laquelle vous souhaitez afficher la vidéo et le script se charge du reste:
Vous pouvez ensuite utiliser
vlc
oumplayer
regarder ces sites localement:OK mais je veux regarder ces vidéos en streaming et en ASCII
J'ai trouvé cet article de blog intitulé: sur ascii, youtube et lâcher prise qui illustre la méthode dont j'ai parlé dans le chatroom, utilisant principalement
youtube-dl
le "backend" permettant de télécharger le flux YouTube, puis de le rediriger vers une autre application.Cet article montre que cela se fait avec
mplayer
:La vidéo en cours de téléchargement par
youtube-dl
est redirigé via STDOUT ci - dessus,-o -
. Il y a une démonstration de l'effet ici .Avec l'installation de bibliothèques supplémentaires, la vidéo ASCII peut encore être améliorée.
OK mais je veux la vidéo dans mon terminal actuel?
J'ai trouvé cette astuce qui permet de jouer une vidéo dans un article
xterm
du O'Reilly intitulé: Watch Videos in ASCII Art .Ce qui précède
xterm
ouvre une fenêtre dans laquelle la vidéo est lue.Alors j'ai pensé, pourquoi ne pas associer le beurre de cacahuète et le chocolat comme suit:
Cela fonctionne presque! Je ne suis pas sûr de savoir pourquoi la vidéo ne peut pas être lue dans la fenêtre, mais il semblerait qu'elle devrait pouvoir le faire. La fenêtre se lève et commence à jouer, puis se ferme. Je vois la vidéo pendant quelques secondes, puis rien.
Peut-être que ce qui précède vous rapprochera de votre solution ultime, ou peut-être qu’il faut simplement modifier un peu les options.
Bibliothèques supplémentaires
Si vous avez
libcaca
installé (la version colorisée deaalib
) et que vous réduisez la taille de la policegnome-terminal
à quelque chose de vraiment petit, comme par exemple 3, la commande suivante affichera une vidéo ASCII bien plus esthétique directement dans le terminal:Terminaux
Il semblerait que le choix du terminal puisse avoir un impact important sur la
mplayer
possibilité de jouer directement à l'intérieur du terminal ou d'ouvrir une fenêtre séparée. La mise en cache a égalementmplayer
fait toute la différence pour pouvoir jouer directement dans les terminaux.En utilisant cette commande, je pouvais jouer
terminator
, au moins pour le premier quart de la vidéo avant de la couper:La version colorée utilisait cette commande:
Ces mêmes commandes pourraient jouer dans
gnome-terminal
etxterm
aussi.NOTE: C'est (de gauche à droite)
xterm
,terminator
,gnome-terminal
etterminology
.la source
terminology
- et pas seulement avec les libs caca. Vous pouvez utiliser des échappements de terminal pour spécifier une partie mappée de la fenêtre terninale et la lire directement en haute définition. Vous pouvez même définir la vidéo sur votre arrière-plan et travailler dessus.terminology
comprend également les URI - obtenez un lien WebM vers votre vidéo youtube et affichez-printf
le à l'écran comme une invite de terminal.tybg my.avi
n'est-ce pas?printf
méthode. Alleztybg somefile | sed -n l
voir comment cela fonctionne - il utilise simplement des échappées de terminal étendues. Ils sont documentés dans laman
page. Vous pouvez faire la même chose avecty{ls,cat}
. Mais ces petites applications ne sont que de vieilles pages de démonstration et ne sont peut-être pas aussi performantes. Quoi qu'il en soit, si votre version a été construite au cours des deux derniers mois, vous aimerez peut-être autant le mini-affichage que moi - faites ctrl + shift + h. Toute l'illumination est à peu près aussi bonne - c'est pourquoi j'ai suggéré de l'essayer récemment. C'est aussi fou rapide.Donc, avec Terminology (probablement la meilleure chose qui soit jamais arrivée à un émulateur de terminal, en passant) au moment de l'écriture de cet ouvrage, les travaux suivants:
Le
terminology
bit spécifique est lethen
bloc dansplay()
laprintf \033}...
ligne.terminology
accepte les échappées de terminal étendues pour l'impression de supports sur l'écran - un peu comme les couleurs rapides, mais aussi la vidéo haute définition et tout ce que vous voulez.Le reste est un peu de
curl | sed
script qui:ytplay 'https://www.youtube.com/watch?v=${id}'
etc...curl "$yturl" | grep url_encoded_fmt_stream_map
pour voir le bloc entier.grep
précède, vous trouverez la liste dans le champ"
délimité par des devis...stream_map: "
.%[[:hexdigit:]]\{2\}
codage en liens de travail./tmp/vid.${mime-type}
mais siytplay
est appelé avec un deuxième argument, il sera interprété comme le nom de fichier à télécharger ciblé - tout en ajoutant l'extension en fonction du type mime.terminology
l » endroit des médias en arrière - plan maintenant d'échappement terminal, sinon il donne juste et vous laisse avec un message d'erreur tout en majuscules.\033}bt[LINK/FILE]\0
pour jouer en pleine fenêtre.pn
apparaîtrait dans une nouvelle fenêtre. Il en existe d’autres pour limiter géométriquement l’aire de jeu, par exemple pour une partie seulement de la fenêtre.Cela n’a subi qu’un peu plus que des tests très minimes , mais a jusqu’à présent fonctionné sans faute pour tous les liens - et comme je n’étais pas intéressé par regarder celui qui n’a pas joué, je n’ai pas essayé de le savoir. Pourquoi.
Alors qu'il a travaillé pour tous, il n'a pas nécessairement jouer chacun - et cela est parce que d'abord je aveuglément apposé l'
.mp4
extension du fichier cible sans vérifier si elle était correcte. Il est possible que celui que je n'ai pas examiné auparavant ne soit que cela aussi. En tout cas, je l'ai changé pour gérer ça.Comme je l'ai déjà mentionné, le seul élément
terminology
spécifique est dans la toute dernière fonction -play()
et vous pouvez donc le modifier pour qu'il veuille faire tout ce que vous voulez avec le fichier vidéo à télécharger / téléchargé - comme l'utiliser avecmplayer
les bibliothèques CACA dans un autre terminal, ou bien le sortir dans unevlc
fenêtre ou autre chose. Mais si vous vous aimez, vous le regarderez en haute définitionterminology
.Oh, et enfin, c'est généralement très rapide - à chaque tentative, ma vitesse de bande passante a été maximale pour ma bande passante, mais je n'ai
terminology
pas besoin de tout le fichier pour commencer à le lire.Ici ça marche:
la source
/tmp/vid.mp4
peut - être que vous devriez utilisermktemp --suffix=.mp4
, non?terminology
legstreamer
moteur ne puisse exécuter accidentellement du code exécutable dans un fichier vidéo ... Peut-être. J'en doute, mais je n'en ai pas assez pour en être sûr. Quoi qu'il en soit, je préfère toujours écrire par-dessus le même fichier, sauf si je dis le contraire, mais si je peux améliorer le contenu - comme le choix de la taille et autres - je vais certainement régler ce problème également.terminology
tout - ceux qui vonttmux
« spty
parce quetmux
propriétaire du côté maître de ceux qui interviennentpty
s et estterminology
propriétaire du côté maître detmux
» spty
. Pour gérer que vous pouvez faire comme ...PTTY=$(tty) tmux ...
puis à latmux
séance comme ...tybg >"$PTTY"
. En fait , je viens de répondre le même problème que vous rencontrez ici hier. Le script ci-dessus devrait juste fonctionner commeytplay ... >"$PTTY"
dans un multiplexeur de cette manière.Il existe un tutoriel pour cela sur youtube:
https://www.youtube.com/watch?v=QCuq0_nY3Xk
Selon cette vidéo, les éléments suivants devraient fonctionner:
Vous pouvez créer une fonction simple à cet effet:
la source
mplayer <(youtube-dl -o - "https://www.youtube.com/watch?v=QCuq0_nY3Xk")
mplayer
choisit automatiquement le meilleur pilote de sortie, et si vous utilisez Xorg, il choisira probablement lexv
pilote. Essayez d' ajouter l'option suivante àmplayer
choisir le pilote ASCII art de la console:-vo caca
.De https://github.com/mps-youtube/mps-youtube
la source