I have the ssh movie player back online!

This is running on a custom ssh server built using russh as the backend. To convert frames, I used the python tv package, subtitling and playback is all custom.

You'll need a terminal that supports 24 bit color.

Try it! ssh ansi.rya.nc

bonus video available: ssh rickroll@ansi.rya.nc
I need to add playback controls, lol.
@ryanc Love the rickroll, except that it is too obvious to rickroll someone :)
@leitmedium the comedy option would be to have that for username root, and disable ctrl-c...
@ryanc Haha, yes. So many opportunities. Thanks for the great project!

@ryanc @leitmedium If you set something less obvious here (say never@), I'll share it with my coworkers.

The root@ without Ctrl+C idea has legs too, as very few people know about the Enter,Tilde,Dot escape method (though they can just close their virtual terminal or kill the ssh session from another terminal).

@leitmedium @ryanc need to edit their hosts file without them noticing somehow... 🤔
@Jinx @ryanc an alias or ssh config file will do, too :)
@ryanc It's laudable that you're keeping the RealPlayer vibe alive. It just needs a scratchy, on-hold music rendition of the audio to go along with the video.
@xek someone suggested sending audio to e.g. pulse audio on linux via port forwarding, but it'd require more setup of the end user than I want for this demo
and yes, if you stay connected, it will play an entire two hour film for you
@ryanc What’s really fun for me is that I’m hearing snatches of the score in my head as the film plays.
This uses SSH to mostly to take advantage of compression (yes, it an be enabled by the server even if you set Compression=no), but it'll make some other features easier to implement.
@ryanc Feature request: at the other end of the status line (right-justified), an indicator of how many simultaneous streams are currently being served 😉
@ryanc see on one hand I've got people trying to justify that terminal apps should get direct access to the Wayland clipboard, on the other I've got you threatening features in your ssh-based streaming service…
If your client requires an explicit username, you can use sneakers or rickroll for a movie or a music video respectively.
@ryanc
For Windows, I use "End User", since it asks me to agree to an End User License Agreement.
@ryanc this is so cool! Definitely adding this to my "stupid things to do in a terminal on somebody else's computer" list with Star wars and nethack
@ryanc Wow! This is impressive and very interesting. A definite upgrade to the towel.blinkenlights.nl telnet version of Star Wars I remember from my early years. Kudos!
@ryanc That's fantastic.
@ryanc This is very cool. The frame timing is amazing, how did you do that?

@targetdrone Each frame is tagged with when it should display, with the start of playback taken as T=0.

When playback starts, the current time is captured, and then for each frame the server computes the target time and sleeps until then.

There is also some code to drop frames if it gets too far behind.

@ryanc I love Sneakers so much. In another life, I would be a pen tester. I'm too old and too far in my career to make a change now

@ryanc
Impressive! 😲

It does work with ssh in Windows 10, no other params needed.

Does not work with Putty on the same PC (or I'm missing something).

@nicolaottomano Yeah, PuTTY is known not to work. Not sure why, but it may not like the way the server does auth.
@ryanc is it still up?

@ryanc Still doesn't work for me unless I disable PK authentication. I have 7 keys. It fails after the second PK offer, for some reason.

One of those keys is a certificate for signing SSH keys, maybe that gets it all twisted up.

debug1: Authentications that can continue: publickey,keyboard-interactive,password,none
debug1: Offering public key: /home/<redacted>/.ssh/id_ed25519 ED25519-CERT SHA256:<redacted>
Connection closed by <redacted> port 22
@pq1r might be the certificate, idk
@pq1r if you tell me your IP I can check the log
@pq1r do you use kitty?
@ryanc No idea what kitty is. I am using openssh-clients-0:9.9p1-10.fc42.x86_64
@ryanc whoa this is super fucking cool!
@Viss Thanks! Will hopefully get around to posting the code and a writeup eventually.
@ryanc I just noticed they remastered Sneakers in 4k because of this so thanks (even though it’s the opposite of 4k it’s still pretty cool)
@ryanc Okay, that's pretty fun :) The results are pretty good too!
@ryanc Hmm just tried connecting from my Pixel 6a Android phone using JuiceSSH and Termius (had to try the rickroll username and neither would accept empty username) and both unable to establish a connection due to: Unable to exchange encryption keys
@rbairwell It only supports ed25519 and curve25519 key exchange, which your client may not support. I can enable P256 ECC which might work.
@rbairwell also sneakers@ will work as a username
@rbairwell alright, it has ecdh-p256 support now, that may help
@rbairwell
I got the same, but it looks like it's fundamentally a compression issue?
@ryanc
@ryanc wihihihi, reminds me of towel.blinkenlights.nl back... in the day.

@ryanc
Does it use Unicode? That might be why it didn't work well for me.

Also, I wouldn't have thought ANSI supported 24-bit color. ANSI was created in the 80s, yes?

@mytwobits01 Most modern terminal emulators support 24 bit color, it's been around for at least a decade.

Yes, the service uses unicode.

GitHub - termstandard/colors: Color standards for terminal emulators

Color standards for terminal emulators. Contribute to termstandard/colors development by creating an account on GitHub.

GitHub

@ryanc
Thanks, will peruse.

Looks like ANSI is 16 colors; something else must be at play for 24-bit.

@mytwobits01 the standards have been updated over time
@ryanc looks good with termux 😂
@kasiandra I tried turmux on my phone and it lagged bad, lol
@ryanc yes it is laggy as hell 😂 and it runs in the background cause I forget to kill the session.
@ryanc too cool! did not expect to watch a movie over ssh on my phone today