Windows էկրանի streaming համակարգ

Windows background համակարգ՝ կարգավորվող multi-monitor capture-ի և RTSP streaming-ի համար՝ process lifecycle-ի և recovery-ի համակարգված կառավարմամբ։

Windows համակարգեր · StreamingՀամակարգային ճարտարապետություն և իրականացումԱնանուն production համակարգ

Համատեքստ

Windows background հավելվածը պետք է capture աներ մեկ կամ մի քանի էկրան, encode աներ յուրաքանչյուր stream-ը և հասանելի դարձներ հեռավար սպառողներին՝ առանց foreground interface-ից կախվածության։

Ինչ պետք էր լուծել

Հուսալի streaming-ը պահանջում էր capture worker-ների և media server-ի համակարգված ownership, monitor geometry-ի ճիշտ կառավարում, capture կամ child-process failure-ից recovery և Windows restart-ներից հետո պահպանվող configuration։

Համակարգային սահմաններ

  • Հավելվածը պետք է աշխատեր silent/background ռեժիմում, ավտոմատ մեկնարկեր, հասանելի լիներ LAN-ում և հարմար լիներ installer-ով տեղադրման համար։
  • Բազմաթիվ monitor-ները պահանջում էին առանձին bounds, offset, stream identity և process coordination։

Համակարգային ճարտարապետություն և իրականացում

  • Նախագծել եմ .NET հավելվածը capture configuration-ի, process supervision-ի, recovery-ի և պահպանվող settings-ի շուրջ։
  • Կառավարել եմ FFmpeg worker-ների և MediaMTX-ի lifecycle-ը՝ նույն stream-ի համար duplicate worker-ներ չթույլատրելով։
  • Իրականացրել եմ multi-monitor stream generation, կարգավորվող resolution/FPS և RTSP port-եր, packaging և Windows firewall նկատառումներ։

Համակարգային մոդել

Streaming ճարտարապետությունՎերահսկվող Windows pipeline՝ desktop capture-ից մինչև հեռավար սպառվող RTSP stream-ներ։
Windows host
.NET background հավելված
Capture / process management
FFmpeg
Monitor 01 streamMonitor 02 stream
MediaMTX / RTSP
Հեռավար viewer / consumer

Որտեղ էր բարդությունը

  • DXGI/Desktop Duplication ոճի capture՝ FFmpeg ddagrab-ի միջոցով, իսկ gdigrab-ը՝ որպես այլընտրանքային ուղի։
  • Capture loss-ից recovery՝ խուսափելով cursor/mouse flicker առաջացնող վատ fallback վարքից։
  • Monitor bounds-ի և offset-ների ճիշտ հաշվարկ և յուրաքանչյուր կարգավորված stream-ի համար մեկ synchronized worker-ի պահպանում։
  • Crash-երի հայտնաբերում և միայն վնասված process path-ի անվտանգ վերագործարկում։

Լուծման կառուցվածքը

  • Process ownership-ը կենտրոնացվել է, որպեսզի հավելվածի state-ը և աշխատող FFmpeg/MediaMTX process-ները համադրվեն։
  • Պահպանվել են monitor-ների, capture settings-ի, port-երի և startup behavior-ի configuration-ները։
  • Հավելվածը փաթեթավորվել է Windows installation-ի համար՝ հաշվի առնելով firewall և external/LAN access պահանջները։

Production վարք

  • Child-process crash detection, automatic recovery և duplicate-worker prevention։
  • Ավելի անվտանգ capture retry վարք՝ ժամանակավոր display կամ capture-path loss-ի դեպքում։

Ինչ ձևավորվեց

  • Կարգավորվող Windows streaming ճարտարապետություն՝ առանձին monitor stream-ներով, վերահսկվող process-ներով և հստակ recovery վարքով։

Տեխնոլոգիաներ և համակարգեր

C#.NET 8FFmpegMediaMTXRTSPddagrabgdigrabMSI

Մեքենային հատուկ configuration-ը, network address-ները, credentials-ը և մասնավոր deployment տվյալները չեն հրապարակվում։