惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
B
Blog RSS Feed
A
About on SuperTechFans
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 司徒正美
D
Docker
F
Fortinet All Blogs
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
H
Help Net Security
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
博客园 - Franky
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Blog — PlanetScale
Blog — PlanetScale
L
LangChain Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
I built a screen recorder with no backend - and 3 browser...
Drábek Jan · 2026-06-15 · via DEV Community

Drábek Jan

A while back I needed to send a teammate a 30-second screen recording. Every tool wanted me to install an app or create an account first. For half a minute of video. So I built the thing I actually wanted: open a tab, hit record, get an MP4. No install, no signup, nothing uploaded unless you choose to share. It's YoRecord, and it runs entirely in the browser.

Capture is the easy part - getDisplayMedia() for the screen, getUserMedia() for webcam+mic, MediaRecorder to encode. The hard part is everything after "stop."

The hard part: a real, edited MP4, client-side - trimming, a draggable webcam overlay, AI subtitles, then a clean MP4 - normally a server job. I used ffmpeg.wasm + WebCodecs so nothing leaves the device.

Bug #1 - export dies when the tab is backgrounded (main-thread captureStream+MediaRecorder gets throttled). Fix: encode in a Web Worker with WebCodecs.

Bug #2 - the webcam froze for ~1s in exports. captureStream(30) is change-driven, not clock-driven: a static screen drops to ~1fps, freezing the moving webcam. Fix: a fixed 30fps loop holding the latest frames.

Bug #3 - audio drifted ~100ms late (WebAudio mixing latency). Fix: measure and compensate (and never use adelay).

...plus an honest "what I didn't do in the browser" section (subtitles use a cloud Whisper API; Chrome/Edge/Firefox desktop only; small free-tier watermark), and a closing yorecord.com try-it link.