80 lines
2.1 KiB
Markdown
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ð |