feat: initial release — SRT Streamer v1.0.0

Cross-platform Electron + React + FFmpeg desktop app for sending
multiple SRT streams simultaneously.

Features:
- Multiple simultaneous SRT output streams
- Video sources: desktop, window capture, cameras, capture cards
- Audio sources: microphones, system loopback, sound cards
- H.264 encoding with HW acceleration (NVENC/QSV/AMF/VideoToolbox)
- SRT modes: caller / listener / rendezvous
- Frame profile presets (4K, 1080p, 720p, 480p, 360p)
- Tolbek SRT receiver with configurable mode
- System tray: minimize-to-tray, exit confirmation dialog
- Portable build via electron-builder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
admin
2026-04-16 00:37:40 +03:00
commit 1f7dbc2a7d
25 changed files with 10548 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
/**
* Run with: node assets/generate-icons.js
* Requires: npm install sharp (dev only)
* Generates PNG icons from SVG for all platforms.
* If sharp is not available, falls back to copying a placeholder.
*/
const fs = require('fs')
const path = require('path')
async function generate() {
const svgPath = path.join(__dirname, 'icon.svg')
const svgData = fs.readFileSync(svgPath)
try {
const sharp = require('sharp')
// PNG 512x512
await sharp(svgData).resize(512, 512).png().toFile(path.join(__dirname, 'icon.png'))
console.log('icon.png generated')
// Tray icon 32x32
await sharp(svgData).resize(32, 32).png().toFile(path.join(__dirname, 'tray-icon.png'))
console.log('tray-icon.png generated')
console.log('Done. For ICO/ICNS, use electron-icon-builder or convert manually.')
} catch (e) {
console.log('sharp not available, creating placeholder PNG...')
// Create a minimal 1x1 placeholder PNG (will work as fallback)
const minPng = Buffer.from(
'89504e470d0a1a0a0000000d49484452000000010000000108020000009001' +
'2e000000000c4944415408d76360f8cfc00000000200017e21bc330000000049454e44ae426082',
'hex'
)
fs.writeFileSync(path.join(__dirname, 'icon.png'), minPng)
fs.writeFileSync(path.join(__dirname, 'tray-icon.png'), minPng)
console.log('Placeholder icons created.')
}
}
generate().catch(console.error)