- 1fps.video adalah alat berbagi layar berbasis tautan yang dapat langsung dijalankan dari satu binary, cocok untuk kolaborasi yang lebih membutuhkan melihat layar daripada rapat, seperti bagi developer, tim IT, dan profesional keamanan
- Berangkat dari asumsi bahwa FPS rendah sering kali sudah cukup untuk kolaborasi coding, alat ini mengurangi penggunaan CPU, memori, dan jaringan serta meringankan beban laptop lama
- Layar dibagikan pada 1 FPS, tetapi pelacakan kursor berbasis WebSocket membuat gerakan pointer terlihat mendekati 30 FPS untuk melengkapi demo yang presisi
- Menyediakan enkripsi end-to-end, dan kunci yang dibuat di klien ditempatkan setelah
#pada URL sehingga tidak dikirim ke backend - Berfokus pada sesi panjang dan berbagi bertrafik rendah melalui dukungan multi-monitor, pengaturan kualitas gambar dan ukuran tangkapan, serta melewati pengiriman layar yang tidak berubah
Cara kerja berbagi layar 1 FPS
- 1fps.video adalah alat untuk memulai berbagi layar dengan cepat, dan binary-nya dapat diunduh dari Download
- Target utamanya adalah developer, tim IT, profesional keamanan, dan pengguna yang lebih menyukai kolaborasi tanpa rapat
- Berbagi layar dengan FPS rendah sering kali dianggap cukup untuk sebagian besar pekerjaan kolaboratif, terutama bagi developer yang menghabiskan banyak waktu menulis kode
- Pendekatan ini berfokus pada pengurangan resource dan trafik
- Tidak memerlukan audio sehingga mendorong budaya tanpa rapat
- Sangat mengurangi penggunaan CPU, memori, dan jaringan
- Laptop lama pun bisa bekerja lebih baik saat sedang berbagi layar
- Penggunaan resource yang rendah membuatnya lebih ramah lingkungan
- Lingkungan berbagi dapat disesuaikan dengan kondisi jaringan
- Mendukung berbagi multi-monitor
- Kualitas gambar dapat diatur untuk mengoptimalkan penggunaan trafik
- Pada layar besar, ukuran tangkapan layar dapat disesuaikan untuk lebih mengurangi trafik
- Menggunakan perbandingan layar cerdas untuk menghindari pengiriman data yang tidak perlu saat layar tidak berubah
Keamanan, privasi, dan model berbagi
- Untuk sebagian besar pekerjaan coding dan development, 1 FPS dianggap cukup, sementara gerakan kursor disediakan mendekati 30 FPS melalui pelacakan berbasis WebSocket
- Cocok untuk pengguna introvert dan pekerja jarak jauh yang hanya ingin berbagi layar tanpa panggilan audio atau video
- Dapat digunakan bersama aplikasi chat tim yang sudah ada, dengan opsi multi-monitor, kualitas gambar, dan penyesuaian ukuran layar agar pengalaman berbagi sesuai dengan kondisi jaringan
- Struktur privasi dan keamanannya didasarkan pada tautan serta pengelolaan kunci di sisi klien
- Semua data dienkripsi dengan end-to-end
- Kunci enkripsi dibuat di sisi klien dan tidak dikirim ke server
- Kunci disertakan setelah
#pada URL sehingga tidak diteruskan ke backend - Hanya orang yang memiliki tautan lengkap yang dapat mengakses layar yang dibagikan
- Perbandingan layar meminimalkan transmisi data untuk memperkuat privasi
- Saat ini sedang dikerjakan enkripsi koordinat kursor
- Kode sumber tersedia di Source Code
1 komentar
Komentar di Hacker News
Bagus sudah merilis proyek ini. Idenya keren dan sangat minimalis, tetapi di sumbernya terlihat beberapa cacat kriptografis, jadi sebaiknya jangan dipakai untuk situasi ketika enkripsi adalah inti utamanya
[0]: https://github.com/1fpsvideo/1fps/blob/main/1fps.go#L99
[1]: https://github.com/1fpsvideo/1fps/blob/main/1fps.go#L287
[2]: https://eprint.iacr.org/2016/475.pdf
[3]: https://soatok.blog/2020/05/13/why-aes-gcm-sucks/
Dalam kasus ini, saya penasaran apakah alasan utama Anda tidak menyarankan sekadar memperbaiki masalah nonce adalah karena jebakan dalam implementasinya, atau karena ini terkait lebih halus dengan masalah umum yang dibahas di tulisan-tulisan di atas
Secara naif, AES-GCM dipakai di banyak tempat seperti TLS atau SRTP, jadi orang yang tidak terlalu paham kriptografi bisa mengira ini pilihan yang bagus
Dari kodenya, tampaknya ini bekerja dengan mengambil dan mengirim screenshot (.jpg) setiap detik. Saya penasaran apakah cara ini benar-benar menghemat bandwidth dibanding kompresi video modern yang memakai ulang informasi dari frame sebelumnya
Saya merekam video 1 menit saat mengedit kode di VS Code pada 1440p 10fps dengan encoding AV1, dan ukurannya sekitar setengah dari 60 screenshot JPEG untuk layar yang sama. Kalau ada angka hasil pengujian, saya ingin tahu
Screenshot itu memakan banyak ruang disk, dan setelah melihat bahwa hampir tidak ada yang berubah di antara gambar, saya terpikir algoritma yang hanya menyimpan perbedaan dengan gambar berikutnya. Beberapa menit kemudian saya sadar bahwa saya sedang menciptakan ulang kompresi video
Jadi saya mengubah urutan gambar menjadi mp4 dengan ffmpeg, dan ukuran filenya berkurang kira-kira 95%. Dengan ImageMagick saya menanamkan nama file timestamp ke dalam gambar, jadi pada dasarnya saya mereplikasi fungsi TimeSnapper Classic dengan 2 perintah
Di satu sisi ada penggunaan CPU, di sisi lain ada jaringan. Menurut saya jaringan itu murah, tetapi encoding itu mahal. Saya tidak punya bukti selain eksperimen lokal, tetapi mulai melakukan pengukuran benar-benar ide bagus
Ada juga ide lain: memindai layar dan hanya mengirim bagian yang berubah. Bahkan jika hanya mengirim setengah layar, dari sisi jaringan rasanya bisa mengalahkan encoding video. Namun algoritma diff-nya harus sangat cepat. Untuk 1280x720 ada 914400 piksel, dan jika masing-masing 4 byte, berarti harus memproses 3,49 MB informasi per detik
Saya juga penasaran pada efisiensi encoding video dan biaya membuat 60 JPEG. Apakah keduanya mirip?
Kalau mau, keduanya mungkin bisa dilakukan dengan mudah, tetapi saya tidak yakin apakah kerepotannya sepadan. Saya setuju bahwa jika skalanya membesar dari IP yang sama, pendekatan ini bisa kewalahan
Suka
Alur kerja kami memang dirancang untuk menghilangkan kebutuhan akan kantor dan infrastruktur teknis. Kami melakukan streaming real-time atas output timeline, yaitu hasil edit video, dan menyediakan kanal komunikasi terbuka. Sebagian besar anggota tim cukup introvert, jadi kami memakai cara push-to-talk, dan kalau tidak perlu diskusi bersama, biasanya cukup meninggalkan catatan di chat
Solusi yang kasar justru sering kali diadopsi
Apa use case berbagi layar tanpa audio? Saya kurang paham kapan ini berguna. Bagaimanapun bukankah harus tetap berkomunikasi dengan lawan bicara dengan suatu cara?
Dalam rapat panjang, kadang screen sharing tetap perlu terus berjalan. Ada kalanya saya ingin coding daripada duduk mendengarkan rapat 1–2 jam
Dan ini juga cocok untuk orang seperti saya yang tidak suka audio. Ada banyak mahasiswa yang ingin saya bantu, tapi saya tidak ingin ikut-ikutan memakai audio. Voice chat saya bukan resource yang mudah diparalelkan
Ini terlihat lebih dekat ke chat teks sambil mengirim screenshot daripada “berbagi layar saat panggilan suara”. Saya bisa mengerti kenapa ada orang yang menyukainya
Terkait bagian “lelah berbagi layar karena Google Meet dibatasi 1 jam dan Zoom 40 menit”, jitsi[0] adalah alternatif konferensi video open source[1] berbasis WebRTC. Fiturnya cukup lengkap sebagai pengganti Zoom, Google Meet, Slack, dan semacamnya
Bisa dipakai lewat situs utamanya, atau di-host sendiri kalau mau
[0]: https://meet.jit.si/
[1]: https://github.com/jitsi
[1] https://github.com/strukturag/nextcloud-spreed-signaling
Mungkin menarik untuk membuat heuristic untuk memilih frame mana yang dipakai. Selalu memilih frame terbaru secara membabi buta kemungkinan besar tidak ideal; mungkin lebih baik memilih frame dengan sedikit gerakan, tanpa animasi yang sedang berjalan, atau metrik serupa
Kalau ingin lebih canggih, bisa juga dianalisis per jendela lalu disusun menjadi bentuk agregasi untuk keseluruhan frame
Idenya keren, dan saya dengar dalam catur gagasan serupa disebut quiescence search[1], tapi mungkin tidak sepadan dengan usahanya
[0] https://old.reddit.com/r/Android/comments/11nzrb0/samsung_sp...
[1] https://en.wikipedia.org/wiki/Quiescence_search
Meski begitu, terdengar seperti ide bagus sekaligus masalah yang menarik
Muncul error kompilasi di
github.com/go-vgo/robotgokarenaX11/extensions/XTest.htidak adahttps://github.com/go-vgo/robotgo?tab=readme-ov-file#require...
Ada prasyarat yang tidak tertulis di halaman itu. Di Mint 22, saya harus memasang paket libxtst-dev
robotgopunya beberapa masalah di Windows, jadi saat ini saya sedang meninjau sebagian di antaranyaHari ini saya memang sedang mencari sesuatu seperti ini. Saya sedang memantau jarak jauh event pengujian fisik, dan membiarkan Google Meet dengan perekaman menyala itu berantakan, tapi saya tetap butuh chat teks untuk antarmuka
Kelihatannya seperti antarmuka minimalis yang sangat bagus. Kalau sedang bersemangat, mungkin bisa ditambahkan persistensi chat dengan suatu cara
Selain itu, apakah teks atau suara yang tersinkron dianggap dilakukan di tempat lain, seperti panggilan telepon atau penjelasan teks lewat Slack?
Untuk kebutuhan saya, Moonlight Game Streaming hampir menggantikan VNC. Tinggal perlu fitur seperti transfer file dan berbagi clipboard yang sedikit lebih baik
Ada masalah pada pelacakan kursor. Entah apakah karena saya memakai beberapa monitor
Di gambar ini, cincin menunjukkan posisi kursor sebenarnya https://i.imgur.com/TvzskjS.png