4 ms·
Show HN: Termplay: Play videos in your terminal
- rnmp 9y agoFrom the creators of April Fools day…
- Retr0spectrum 9y agoMplayer can do this by default e.g. $ CACA_DRIVER=ncurses mplayer -quiet -vo caca video.avi Here's the Silicon Valley intro in glorious ASCII: http://i.imgur.com/YKP6nfP.png http://i.imgur.com/YKP6nfP.png I had some audio sync issues with mplayer, and it sounds like termplay avoids that. I'm also not sure if there's a way to use true colour with mplayer.
- tbodt 9y agoYeah the mplayer colors are pretty bad. TRUE COLOR MASTER RACE
- anonova 9y agompv has a true color terminal renderer.[1] It's not the fastest though: http://i.imgur.com/919Rez5.png http://i.imgur.com/919Rez5.png $ mpv --vo tct https://www.youtube.com/watch\?v\=PA4InNa0NSQ [1]: https://mpv.io/manual/master/#video-output-drivers-tct https://mpv.io/manual/master/#video-output-drivers-tct
- jakeogh 9y agoI had to --vo=tct (xterm was not happy around the letterbox borders!)
- LEGOlord208 9y agoYep, it does avoid sync issues... well, partly. It doesn't know anything about the audio as that is handled by a pretty high level library. But it does make sure the frames goes at the speed they should. So assuming the audio isn't lagging behind or ahead (which I haven't encountered yet), the image and audio should be synced.
- tobyjsullivan 9y agoGreat! Now can we get this integrated with Lynx so that can be my default browser?
- tbodt 9y agoI can't wait
- tilpner 9y agoI see these every so often, but they never mention Sixels, which could be used to display videos with much more detail (like with https://github.com/saitoha/FFmpeg-SIXEL https://github.com/saitoha/FFmpeg-SIXEL ). Sixels aren't widely supported, and the implementations I tried were lacking in stability, but they offer some interesting possibilities, like embedding images into your text browser (and not with a hack like w3m uses), or playing Battle for Wesnoth inside your terminal [ https://github.com/saitoha/libsixel https://github.com/saitoha/libsixel ]
- tbodt 9y agoHonestly, the main reason I like this is the way videos look with huge pixels.
- LEGOlord208 9y agoI was looking for image libraries. I couldn't really find more than /dev/fb0. Cool, I'll look into sixel!
- LEGOlord208 9y agoUpdate: Sixels now work. I just need to fix scaling. The image turns out REALLY small.
- jakeogh 9y agoCool. https://github.com/saitoha/libsixel https://github.com/saitoha/libsixel
- jitl 9y agoYou should allow the user to specify a pixel ratio that describes the width/height of each character of their terminal font. Otherwise, your images will be distorted, because your output pixels are not square. Here's a screenshot demonstrating this issue, when converting a GIF to text in a terminal: https://monosnap.com/file/HwrGbSHEwxWlTQCCeXyd9qcFxwL38V.png https://monosnap.com/file/HwrGbSHEwxWlTQCCeXyd9qcFxwL38V.png On the left, the original image. In the center, a ratio-perserved resized render in a terminal On the left, a pixel-ratio aware resized render.
- LEGOlord208 9y agoI'll look into it, thanks! EDIT: Done :) https://github.com/legolord208/termplay/commit/2263a5c5e385cb9f6042eaab2c37722ae11582d1 https://github.com/legolord208/termplay/commit/2263a5c5e385c...
- name_for_now 9y agoI've written something similar myself in C++ before, but I'm curious if people actually have interest in using something like this regularly. I had thought I would do something like configure lynx to use it but the novelty quickly wore off and instead I went and started playing with the Mandelbrot set in the terminal and forgot all about it.
- LEGOlord208 9y agoCool! I think that playing YouTube in the terminal today is just a fun idea because the videos look so goofy. But like people say... Sixel... Everything is apparently possible! Someday, somebody will make the whole YouTube platform.
- mfukar 9y agoIt's 2017 and we still don't have a single decent bitmap terminal.
- majewsky 9y agoxterm and Konsole allow to display images in the terminal. To check it out, install w3m with the w3m-img patch (in Debian, the "w3m-img" package; in Arch Linux, the "w3m" and "imlib2" packages) and open a webpage that contains plain <img src="..." /> tags. Example screenshot from Konsole: https://imgur.com/a/D98Kl https://imgur.com/a/D98Kl (showing https://en.wikipedia.org/wiki/xterm https://en.wikipedia.org/wiki/xterm) The rendering is really buggy. Images glitch away all the time, possibly until w3m issues a redraw event, but it kinda sorta works. Some day, I'll have to dig into either the w3m source or the Konsole source and figure out which ANSI escapes are being used for that. (If someone has a link to a spec or sth, that'd be much appreciated.)
- LEGOlord208 9y agoYou could do like the "fbi" tool, which uses the framebuffer (/dev/fb0) to draw to the screen. And that works for the TTY, but doesn't in Konsole. Others have also told me about Sixels, so I'll probably add support for that at least.
- LEGOlord208 9y agoUpdate: Sixels are now supported :) Try it out with one of the terminals listed in https://github.com/saitoha/libsixel#terminal-requirements https://github.com/saitoha/libsixel#terminal-requirements