Files
srt-streamer/electron/preload.js
T
admin 1f7dbc2a7d 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>
2026-04-16 00:37:40 +03:00

35 lines
1.4 KiB
JavaScript

const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('electronAPI', {
// Config
getConfig: () => ipcRenderer.invoke('get-config'),
saveConfig: (config) => ipcRenderer.invoke('save-config', config),
// Devices
getDevices: () => ipcRenderer.invoke('get-devices'),
getWindows: () => ipcRenderer.invoke('get-windows'),
// Streams
startStream: (config) => ipcRenderer.invoke('start-stream', config),
stopStream: (id) => ipcRenderer.invoke('stop-stream', id),
getActiveStreams: () => ipcRenderer.invoke('get-active-streams'),
// Tolbek receiver
startTolbek: (config) => ipcRenderer.invoke('start-tolbek', config),
stopTolbek: () => ipcRenderer.invoke('stop-tolbek'),
// Window controls
minimizeWindow: () => ipcRenderer.invoke('minimize-window'),
hideWindow: () => ipcRenderer.invoke('hide-window'),
updateTrayCount: (count) => ipcRenderer.send('update-tray-count', count),
// Event listeners
onStreamStatus: (cb) => ipcRenderer.on('stream-status', (_, data) => cb(data)),
onStreamLog: (cb) => ipcRenderer.on('stream-log', (_, data) => cb(data)),
onStreamError: (cb) => ipcRenderer.on('stream-error', (_, data) => cb(data)),
onStreamEnded: (cb) => ipcRenderer.on('stream-ended', (_, data) => cb(data)),
onAllStreamsStopped: (cb) => ipcRenderer.on('all-streams-stopped', () => cb()),
removeAllListeners: (channel) => ipcRenderer.removeAllListeners(channel)
})