borg-docs/Studio/Podcasts/TECHNICAL.md
2025-04-03 11:29:37 +00:00

80 lines
2.1 KiB
Markdown

# Podcast Upptökur - Tæknilegt yfirlit
## Yfirlit
Podcast Upptökur er byggt á Next.js 14 með TypeScript og notar nýjustu tækni fyrir hljóðupptökur og spilun. Kerfið notar Web Audio API fyrir hljóðvinnslu og Socket.IO fyrir rauntíma samskipti.
## Tæknileg uppbygging
### Hljóðupptaka
- Notar `MediaRecorder` API fyrir upptökur
- Stuðningur við mörg hljóðsnið (webm, ogg, mp4)
- 48kHz upptökuhraði með 1 rás
- Hljóðgæði: 510kbps
- Upptökutími: Allt að 50 mínútur
### Hljóðspilun
- Notar `AudioContext` og `AnalyserNode` fyrir línurit
- Stuðningur við spilun, hlé, stöðvun og tímasetningu
- Sýnir tímalengd og núverandi spilunartíma
- Vísar hljóðbylgjuform í rauntíma
### Gagnagrunnur
Upptökur eru vistaðar með eftirfarandi upplýsingum:
```typescript
interface PodcastRecording {
id: string;
filename: string;
createdAt: string; // ISO date string
size: number;
duration?: number | null;
mimetype: string;
}
```
## API Endapunktar
### GET /api/studio/podcasts
- Sækir lista af öllum upptökum
- Skilar `PodcastRecording[]`
### GET /api/studio/podcasts/play/{id}
- Sækir hljóðskrá fyrir spilun
- Skilar hljóðskrá sem stream
### POST /api/studio/podcasts
- Vistar nýja upptöku
- Tekur við FormData með hljóðskrá
- Skilar `PodcastRecording`
### DELETE /api/studio/podcasts/{id}
- Eyðir upptöku
- Skilar 204 ef upptakan var eytt
## Socket.IO Atburðir
### Upptaka
- `start-recording`: Byrjar upptöku
- `recording-data`: Sendir hljóðgögn
- `stop-recording`: Stöðvar upptöku
### Spilun
- `play`: Byrjar spilun
- `pause`: Gerir hlé
- `stop`: Stöðvar spilun
- `seek`: Færir spilunartíma
## Öryggi
- Öll API köll krefjast innskráningar
- Hljóðskrár eru vistaðar á öruggum stað
- Upptökur eru aðgengilegar aðeins fyrir eiganda þeirra
## Takmarkanir
- Hámarksupptökutími: 50 mínútur
- Stuðningur við hljóðskrár
- Krafist er nýlegs vafra með stuðningi við Web Audio API
## Þróun
- Notar TypeScript fyrir öruggan kóða
- React hooks fyrir stjórn á stöðu
- Radix UI fyrir samræmt notendaviðmót
- Tailwind CSS fyrir stílsnið