Show HN: 1-FPS encrypted screen sharing for introverts
1fps.video is a secure screen sharing platform for developers and IT teams, offering low frame rate video, end-to-end encryption, and integration with chat apps, promoting meeting-free collaboration.
Read original article1fps.video is a screen sharing platform designed for hassle-free and secure video sharing, particularly aimed at developers, IT teams, security professionals, and those who prefer meeting-free collaboration. The service operates on a low frame rate of 1 FPS, which is deemed sufficient for most coding and development tasks, while also utilizing WebSocket-based cursor tracking to ensure smooth pointer movement. This approach not only reduces CPU, memory, and network consumption but also enhances performance on older laptops, making it an environmentally friendly option. The platform emphasizes privacy and security, with all data being end-to-end encrypted and encryption keys generated client-side, ensuring that only users with the complete link can access the shared screen. 1fps.video is particularly suited for introverts and remote workers who wish to share their screens without the pressure of audio or video calls, and it integrates seamlessly with existing team chat applications.
- 1fps.video offers low FPS video sharing, sufficient for coding and development tasks.
- The platform is designed for privacy, with end-to-end encryption and client-side key generation.
- It reduces resource consumption, making it suitable for older devices and environmentally friendly.
- Ideal for remote workers and introverts, it promotes a meeting-free collaboration culture.
- The service integrates with existing team chat applications for enhanced usability.
Related
We increased our rendering speeds by 70x using the WebCodecs API
Revideo, a TypeScript framework, boosted rendering speeds by 70 times with WebCodecs API. Challenges overcome by browser-based video encoding. Limited audio processing and browser compatibility remain.
Ask HN: Share your FFmpeg settings for video hosting
A user is developing a video hosting site allowing MP4 uploads, utilizing H.264 for video and Opus for audio. They seek advice on encoding settings and challenges faced in the process.
- Several users raised concerns about cryptographic flaws and security vulnerabilities in the application, suggesting improvements to encryption methods.
- There is skepticism about the bandwidth efficiency of the 1fps approach compared to modern video compression techniques.
- Users appreciate the minimalist interface and its potential for remote collaboration, especially for introverted teams.
- Some commenters questioned the utility of screen sharing without audio and suggested alternative communication methods.
- Technical issues, such as cursor tracking problems and compatibility with operating systems like Windows, were also mentioned.
1) You generate a random key [0] and then feed it into PBKDF2 [1] to generate a 32-byte AES-GCM key. If you can generate 32 random bytes instead of 10 reduced-ASCII characters and a key stretch, just do that. PBKDF2 is for turning a password into a key, and it's far from the recommended algorithm nowadays; prefer scrypt if you need to do this sort of thing.
2) AES-GCM with random 12-byte nonces. Never use random IVs with GCM; this breaks the authentication [2] [3]. Given the pitfalls of AES-GCM with respect to random nonces, you might prefer switching to XSalsa20+Poly1305. The advantage of XSalsa is it has an extended nonce length, so you can use random nonces without fear.
3) Random key derivation with a restricted character set can make brute force attacks easier. You should have a 256-bit random key, and if you want that key to be within a certain character set, then encode the byte output from the CSPRNG using that character set.
4) 1fps achieves symmetric key distribution via a URL with a fragment identifier ("#") which IIRC is not sent to the server. Therefore it assumes you have a secure key distribution channel - the link contains the key, so it's important that only the intended recipient can view the part after the "#". If the server is truly malicious, it can deploy client-side Javascript to send the fragment to the server, allowing the server to access the key (and thus cleartext communication).
[0]: https://github.com/1fpsvideo/1fps/blob/main/1fps.go#L99
[1]: https://github.com/1fpsvideo/1fps/blob/main/1fps.go#L287
I recorded a one minute video clip of me editing some code in VS Code (1440p 10fps, using AV1 encoding) and it was about half the size of 60 JPEG screenshots of the same screen. I would be curious to see your numbers if you've done any tests.
Our workflow is built around removing the need for an office and technical infrastructure. We have live streams of our timeline output (video editing) and an open comms channel. Most of our team is pretty introverted, so it's a push to talk system. We mostly just leave notes in the chat if it doesn't warrant a full discussion.
Crude solutions are often the ones that get adopted.
FWIW, jitsi[0] is an open source[1] WebRTC based, full featured, video conference/meeting alternative to zoom, google-meet, slack, etc.
You can use it via the main site, or self-host it if you like.
[0]: https://meet.jit.si/ [1]: https://github.com/jitsi
https://github.com/go-vgo/robotgo?tab=readme-ov-file#require...
There are some prereqs not listed your page. On Mint 22 I had to install the libxtst-dev package.
Seems like this is a really good minimal interface - if I’m feeling wonky I might extend it with chat persistence somehow
I am assuming any additional synchronized text or voice is done elsewhere like calling someone on the phone or clarification via text on slack right?
Here's a pic, the ring is where my cursor actually is https://i.imgur.com/TvzskjS.png
The following was just inspired by the idea of yours "1fps screen sharing":
If you do 1FPS screen sharing - then create a private gallery on imgur.com - and have a thing update screenshots in a single gallery with a garbage collecting thread deleting a screenshot every 30 seconds/interval...
then have user have hidden gallery url and auto refresh browser tab.
This might work well actually if you have a small data connector and a device that can upload like only when event occurs.
Just upload that to replace the file in the imgur gallery - and you have a free cloud cam.
https://malware.opendns.com/main?url=1fps.video&server=nyc4&... - not sure if that's viewable elsewhere, but if so there's a report link there.
Was Rustdesk on-radar?
What makes all these newfangled language ecosystems think this is an acceptable way to distribute your software. No, I don't want to install yet another giant tree of language specific crap. Learn to distribute self-contained binaries please.
I really appreciate the discussion about the tech involved, especially non-go lang info and advice. peak HN imo
So you are either offering a slow and very limited free service, or you need to pay hand over fist and burn venture capital to basically compete with Zoom and WebRTC. Slowing the video stream to very low FPS does help somewhat with scaling, but makes for a niche product.
If you can crack P2P multiplexing and offer an unlimited free service, and tack on some fremium model on that, that this thing can take off like a rocketship, if for no other reason that every team leader in the world wants a continuous feed of their remote worker's desktop. A free and capable screen sharing app can become THE tool for collaboration, disrupting things like Slack if the right features are there.
I'm seriously interested to cofound something like that, let me know if anything I've said makes sense to you.
Related
We increased our rendering speeds by 70x using the WebCodecs API
Revideo, a TypeScript framework, boosted rendering speeds by 70 times with WebCodecs API. Challenges overcome by browser-based video encoding. Limited audio processing and browser compatibility remain.
Ask HN: Share your FFmpeg settings for video hosting
A user is developing a video hosting site allowing MP4 uploads, utilizing H.264 for video and Opus for audio. They seek advice on encoding settings and challenges faced in the process.