Hacker Newsnew | past | comments | ask | show | jobs | submit | charlesding2024's commentslogin

Hi HN,

I built Video to JPG because extracting the perfect frame from a video usually requires scrubbing through timelines manually, which is tedious.

This tool runs entirely in the browser. It uses a hybrid approach: prioritizing the native Canvas API for performance, and falling back to FFmpeg (WASM) for formats that browsers don't natively support (like AVI or MOV). It also includes a blur detection feature to automatically select the sharpest images.

Key features:

Smart Selection: Automatically detects and filters out blurry frames.

100% Private: All processing happens client-side; no video is uploaded.

Format Support: Handles MP4, MOV, AVI, and other common formats.

I'd love to hear your feedback on the detection accuracy!


I dug into the repo – the 'self-healing' logic (automatically switching from CMD to PowerShell on failure) is genuinely clever. Much smarter than just dumping a stack trace.

A technical question on the v6 offline support (Phi-2): Does the CLI keep the model loaded in RAM in the background (daemon mode), or does it have to load the weights from disk every time an error occurs? I'm curious about the latency trade-off for that 'instant fix' feel.


Thanks for the kind words regarding the self-healing logic!

To answer your question about v6/Phi-2: It uses a session-based RAM residency approach rather than a background daemon or per-request loading.

When you toggle the offline mode (or if it starts in that mode), the OfflineModelManager class loads the weights into memory once. Since the shell runs in a continuous while True loop, the model stays 'hot' in RAM for the duration of that session.

This eliminates the cold-start latency for every error correction, making the 'self-healing' feel instantaneous. The trade-off is, of course, the sustained RAM usage while the shell is open, but I found this preferable to waiting 10+ seconds for a re-load on every command failure.


That makes total sense. In a shell environment, breaking the flow for 10+ seconds would definitely be more painful than the memory overhead. The 'instant' feel is crucial for UX here. Thanks for the detailed explanation!


Thanks, glad it resonates. For interactive tools like shells, I think perceived latency matters more than raw resource efficiency. Once the flow breaks, UX is already lost — a few extra MBs are a small price for that instant feel.


I like the intent of keeping the flow state. Have you considered making this a CLI hook (e.g., a post-commit hook) rather than a web dashboard? I feel like I'd be even more likely to use it if I could just run git commit and have it prompt me in the terminal to confirm the tweet draft.


I've been using Cloudflare's ecosystem heavily for my video tools and can share some thoughts:

For your use case (40s clips, 10-50K plays/day), Cloudflare Stream's per-minute pricing model could be significantly cheaper than GCP, especially as you scale. Their ABR quality is quite good for 1080p/720p - I haven't noticed quality issues in practice.

One consideration: Cloudflare Stream has a 30s minimum charge per video, so for 40s clips you're paying for 60s. This might eat into the cost savings vs GCP.

Backblaze B2 + Cloudflare has free egress which is huge, but make sure you're using the Bandwidth Alliance properly to avoid surprise charges.

Have you considered keeping source files in B2 and only using Cloudflare Stream for delivery? That hybrid approach might give you more flexibility.


I see, yes I am planning to keep the raw video files in B2.

So about the 30 second minimum charge, my current scenario is users can record and upload videos of any length between 5-60 seconds max if they are recording from the app's camera. On average I have found its 40 second videos. But if uploading from their gallery max is videos of 3minute length or lower.

Thank you for the reply as well. Glad the quality of cloudflare stream is good


Makes sense. Just a heads-up on the hybrid approach: storing raw files in B2 while also ingesting to Stream means you're paying for storage twice.

Also, for the mobile app, definitely look into Direct Creator Uploads. You can generate a signed URL on your backend and let the phone upload straight to Cloudflare. It saves a ton of headache handling bandwidth on your own servers.

Merry Christmas!


thank you for this, will definitely look into the Director Creator Uploads. For storing raw files dont know if I have an alternative if Cloudflare stream isnt keeping the raw file. Merry Christmas to you too!!


The character consistency is impressive. How are you achieving the product preservation technically? ControlNet, IP-Adapter, or something else?

Also, does the 2.1s generation time include queue wait, or is that pure inference time?


PowerToys is an incredibly useful suite of utilities that significantly enhances productivity on Windows.


good, it's best if a video tutorial exists.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: