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

2.1 KiB

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:

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ð