Vấn đề Tính năng Kiến trúc Plugins Thông số So sánh Lộ trình Chi tiết tính năng Kỹ thuật Liên hệ
Giám sát chất lượng broadcast - Sẵn sàng triển khai

Giám sát tín hiệu
video/audio thời gian thực

HD Sat là hệ thống giám sát chất lượng tín hiệu broadcast chuyên nghiệp. Phát hiện tự động các sự cố: video đen, hình đứng, audio im lặng, audio ngược pha, audio vượt ngưỡng - tất cả hiển thị trên một cửa sổ multiview duy nhất.

6+
Loại phát hiện sự cố
AI
DOVER Quality Score
SDI
DeckLink + FFmpeg
C++17
Plugin architecture

Giám sát thủ công không đủ đáp ứng

Các đài truyền hình đang đối mặt với nhiều thách thức trong việc đảm bảo chất lượng tín hiệu phát sóng liên tục.

Phát hiện sự cố chậm, phụ thuộc người
Kỹ thuật viên phải theo dõi màn hình liên tục. Video đen, hình đứng có thể phát sóng hàng phút trước khi được phát hiện - gây mất uy tín nghiêm trọng.
Không phát hiện được sự cố audio
Audio im lặng, ngược pha, vượt ngưỡng rất khó phát hiện bằng mắt thường. Người xem nghe thấy vấn đề trước khi kỹ thuật viên biết.
Theo dõi nhiều kênh đồng thời khó khăn
Mỗi kênh cần một màn hình riêng, một người riêng. Chi phí nhân sự và thiết bị tăng theo số lượng kênh cần giám sát.
Không có chỉ số chất lượng khách quan
Đánh giá chất lượng video hoàn toàn chủ quan. Không có công cụ đo lường tự động để phát hiện suy giảm chất lượng do nén, nhiễu, mờ.
Không có hệ thống cảnh báo tự động
Khi sự cố xảy ra ngoài giờ hành chính, không có ai biết. Cảnh báo qua Telegram hay email cần phải lập trình thủ công cho từng hệ thống.
Khó mở rộng và tích hợp
Thêm loại phát hiện mới đòi hỏi sửa đổi toàn bộ hệ thống. Không có kiến trúc plugin - mỗi thay đổi là rủi ro cho toàn bộ hệ thống đang chạy.

Giám sát toàn diện, phát hiện tự động

Kiến trúc plugin động - mỗi tính năng là một DLL riêng biệt, dễ dàng mở rộng mà không ảnh hưởng đến hệ thống đang chạy.

Phát hiện Video Đen (Black Video)
Phân tích tỉ lệ pixel sáng trong frame. Phát cảnh báo khi video đen liên tục quá ngưỡng thời gian cấu hình. Tránh false positive cho frame có nền đen nhưng có chữ trắng.
GRAY8 64x36pixelBlackThresholdmaxNonBlackRatio
Phát hiện Hình Đứng (Freeze Video)
So sánh frame hiện tại với frame trước bằng MAD và motionPixelRatio. Kết hợp hai chỉ số tránh false positive cho cảnh có người nói chuyện (đầu/tay cử động).
MADmotionPixelRatioDual-metric
Phát hiện Audio Im Lặng (Silence)
Tính RMS của tín hiệu PCM S16 chuyển về dBFS. Phát cảnh báo khi âm lượng dưới ngưỡng liên tục. Không phụ thuộc FFmpeg - tính toán thuần C++ trên PCM S16.
RMS dBFSPCM S16silenceThreshold
Phát hiện Audio Ngược Pha (Inversion)
Tính hệ số tương quan pha (cross-correlation) giữa kênh L và R. Phát hiện khi một kênh bị đảo dây kết nối vật lý, gây triệt tiêu tín hiệu khi phát mono.
Cross-correlationPhase [-1..+1]Stereo
Phát hiện Audio Vượt Ngưỡng (Over-limit)
Tính peak dBFS - mẫu có biên độ tuyệt đối lớn nhất trong frame. Dùng peak thay vì RMS để bắt được transient ngắn nhất có thể gây clipping.
Peak dBFSlimitThresholdClipping
Chấm Điểm Chất Lượng AI (DOVER)
Sử dụng mô hình DOVER qua ONNX Runtime. Phân tích cả hai nhánh aesthetic và technical. Điểm 0-100 tương đương MOS 1-5 theo ITU-T P.910. Hỗ trợ CUDA GPU.
DOVER ONNXScore 0-100CUDABackground inference
Hiển Thị Multiview
Cửa sổ SFML hiển thị nhiều kênh đồng thời. Mỗi cell có video preview, VU meter audio (-60 đến 0 dBFS), viền đỏ khi cảnh báo. Click để nghe audio preview.
SFML 2.5.1VU MeterAlert borderAudio preview
Nguồn Tín Hiệu Đa Dạng
Hỗ trợ Blackmagic DeckLink SDI (COM API, tự động nhận diện format) và FFmpeg (file, UDP/RTSP/RTMP/HLS). FFmpeg tự động reconnect khi mất tín hiệu với cảnh báo "no signal".
DeckLink SDIFFmpegUDP/RTSPAuto-reconnect
Web Dashboard & Cảnh Báo
Web Dashboard xem preview tín hiệu, giám sát real-time, dashboard thống kê lỗi và Alert History tra cứu lịch sử. Telegram Bot API gửi cảnh báo tức thì khi có sự cố.
Web DashboardAlert HistoryTelegram BotREST/WebSocket
Ghi Bằng Chứng Phát Sóng (HlsRecorder)
Ghi toàn bộ output render thành HLS (H.264 + .ts segments). Encode trên dedicated thread - không block render. Segment đặt tên theo timestamp YYYYMMDD_HHMMSS.ts, tự tạo thư mục theo tháng. Hỗ trợ CRF và bitrate mode.
HLSH.264Timestamp segmentsCRF / BitrateFFmpeg

Plugin động - mở rộng không giới hạn

Mỗi thành phần là một DLL riêng biệt. Kết nối qua callbacks trong Pipeline::Wire() - không có phụ thuộc trực tiếp giữa các plugin.

DeckLink SDI
Blackmagic COM API
Auto-detect format
UYVY / NV12
FFmpegSource
File / UDP / RTSP / RTMP
Auto-reconnect
BGRA output
FrameCallback + AlertCallback
Pipeline::Wire() - Fan-out Callbacks
Kết nối tất cả sources, filters, monitors, outputs theo cấu hình appsettings.json
Env::Load() PluginManager StartAll() / StopAll() Thread-safe callbacks
ProcessFrame() / SetChannelFrame() / SetInputFrame()
IFilter Plugins
BlackVideo / Freeze
AudioSilence / Inversion
AudioLimit / DOVER AI
IMultiviewMonitor
SFML Window
Video + VU Meter
Alert border
IOutput Plugins
TelegramAlert
Web REST/WS
Custom outputs
Plugin động - DLL runtime
Mỗi plugin là một DLL export CreatePlugin() / DestroyPlugin(). Load tại runtime theo appsettings.json - không cần recompile core.
Fan-out callbacks
Mỗi frame từ source được fan-out đồng thời đến tất cả filters, monitor cells và outputs. Không có phụ thuộc trực tiếp giữa các plugin.
Thread-safe by design
Capture thread gọi callbacks. Mỗi plugin bảo vệ state bằng mutex riêng. Render thread và audio thread đọc dữ liệu qua per-slot mutex.
Shutdown an toàn
Thứ tự: StopAll() -> Unwire() -> UnloadAll(). Đảm bảo không có use-after-free khi dừng hệ thống.

12 plugin sẵn sàng sử dụng

Mỗi plugin có thể bật/tắt độc lập qua cấu hình. Thêm plugin mới chỉ cần tạo DLL mới - không sửa đổi core.

VideoSource
DeckLink
Nguồn SDI từ card Blackmagic DeckLink. COM API, tự động nhận diện format SDI khi tín hiệu thay đổi.
VideoSource
FFmpegSource
Nguồn từ file hoặc stream mạng (UDP, RTSP, RTMP, HLS). Tự động reconnect khi mất tín hiệu.
Filter
BlackVideoDetection
Phát hiện video đen. Phân tích tỉ lệ pixel sáng trên frame GRAY8 64×36.
Filter
FreezeVideoDetection
Phát hiện hình đứng. Kết hợp MAD và motionPixelRatio để tránh false positive.
Filter
AudioSilenceDetection
Phát hiện audio im lặng. Tính RMS → dBFS. Không phụ thuộc FFmpeg.
Filter
AudioInversionDetection
Phát hiện audio ngược pha. Cross-correlation L/R. Bỏ qua khi âm lượng quá nhỏ.
Filter
AudioLimitDetector
Phát hiện audio vượt ngưỡng. Dùng peak dBFS để bắt transient ngắn nhất.
Filter
DOVERQualityScore
Chấm điểm chất lượng video bằng AI. DOVER ONNX Runtime. Background inference - không block pipeline.
Monitor
Multiview Monitor
Cửa sổ SFML hiển thị nhiều kênh. VU meter, viền đỏ cảnh báo, audio preview khi click. Tích hợp HlsRecorder ghi bằng chứng phát sóng HLS.
Monitor
HlsRecorder
Ghi bằng chứng phát sóng thành HLS (H.264 + .ts segments + .m3u8). Encode RGBA từ render output trên dedicated thread, không block render. Segment đặt tên theo timestamp YYYYMMDD_HHMMSS.ts, tự tạo thư mục theo tháng.
Output
TelegramAlert
Gửi cảnh báo qua Telegram Bot API. Nhận tất cả AlertEvent từ mọi kênh được gán.
Output
Web Dashboard
Web Dashboard xem preview tín hiệu, giám sát real-time, Alert History lưu trữ và tra cứu lịch sử cảnh báo, dashboard thống kê lỗi theo kênh và thời gian.

Hiệu năng và công nghệ

Nền tảng
Ngôn ngữC++17
IDE / BuildVisual Studio 2022
PlatformWindows x64
Kiến trúcPlugin DLL runtime
ConfigJSON (appsettings.json)
Nguồn tín hiệu
SDI InputBlackmagic DeckLink
Media decodeFFmpeg 7.x
Stream protocolsUDP, RTSP, RTMP, HLS
Pixel formatsUYVY, NV12, BGRA
AudioPCM S16 48kHz stereo
Hiển thị
Render engineSFML 2.5.1
Audio playbackSFML Audio + OpenAL
Pixel conversionFFmpeg swscale
VU meter range-60 đến 0 dBFS
Thread modelPer-slot mutex
AI Quality Score
Mô hìnhDOVER (ONNX)
RuntimeONNX Runtime
GPUCUDA (tùy chọn)
Inference CPU300-600ms
Inference GPU30-80ms
Thư viện
Video analysisFFmpeg swscale
AI inferenceONNX Runtime
DatabaseSQLite3 (embedded)
SDI SDKBlackmagic Desktop Video
RenderSFML 2.5.1
Thread model
Main threadKhởi động / tắt
Capture threadMỗi IVideoSource
Render threadSFML window
Audio threadSFML audio callback
Inference threadDOVER background

HD Sat vs Giám sát thủ công

Tiêu chí Giám sát thủ công HD Sat
Phát hiện video đenThủ công, chậmTự động, <1 frame
Phát hiện hình đứngKhó phát hiệnMAD + motionPixelRatio
Phát hiện audio im lặngPhụ thuộc người ngheRMS dBFS tự động
Phát hiện audio ngược phaKhông thể phát hiệnCross-correlation L/R
Đánh giá chất lượng videoChủ quanDOVER AI Score 0-100
Số kênh đồng thời1-2 kênh / ngườiKhông giới hạn (multiview)
Cảnh báo tự độngKhông cóTelegram + Web API
Hoạt động 24/7Phụ thuộc nhân sựTự động, không cần người
Mở rộng thêm loại phát hiệnSửa đổi toàn bộThêm DLL plugin mới
Chi phí nhân sựCao (nhiều người)Thấp (1 người giám sát)

Hiện tại và kế hoạch

V1 - Hiện tại
Core Platform
Sẵn sàng triển khai
Black Video Detection - Phát hiện video đen tự động
Freeze Video Detection - Phát hiện hình đứng (MAD + motion)
Audio Silence Detection - Phát hiện im lặng (RMS dBFS)
Audio Inversion Detection - Phát hiện ngược pha
Audio Limit Detector - Phát hiện vượt ngưỡng (peak)
DOVER Quality Score - Chấm điểm AI qua ONNX
DeckLink SDI - Nguồn Blackmagic COM API
FFmpegSource - File / UDP / RTSP / RTMP
Multiview Monitor - SFML, VU meter, audio preview
Telegram Alert - Cảnh báo tự động
Plugin architecture - DLL runtime, appsettings.json
Web Dashboard - Xem preview qua web, giám sát và cảnh báo real-time, dashboard thống kê lỗi
Alert History - Lưu trữ lịch sử cảnh báo, xem lại và tra cứu qua web
HlsRecorder - Ghi bằng chứng phát sóng HLS, H.264, segment theo timestamp
V2 - Kế hoạch
Mở rộng & Nâng cao
Đang phát triển
Email Alert - Cảnh báo qua email SMTP
SNMP Trap - Tích hợp hệ thống giám sát mạng
NDI Source - Nguồn tín hiệu NDI qua mạng nội bộ
Loudness (EBU R128) - Đo lường âm lượng theo chuẩn phát sóng
Closed Caption Detection - Phát hiện mất phụ đề
Report PDF - Báo cáo chất lượng tự động theo giờ/ngày
CUDA acceleration - Tăng tốc GPU cho tất cả filter video

FAQ

Không có giới hạn cứng trong kiến trúc. Mỗi kênh là một ChannelConfig trong appsettings.json. Giới hạn thực tế phụ thuộc vào hiệu năng CPU/GPU của máy chủ và băng thông mạng. Mỗi cell trong cửa sổ multiview có thể đặt ở bất kỳ vị trí nào theo tỉ lệ [0..1].
Có. Kiến trúc plugin động cho phép thêm DLL mới bất kỳ lúc nào. Chỉ cần tạo project DLL mới, implement IFilter (hoặc IVideoSource / IOutput), export CreatePlugin() / DestroyPlugin(), và thêm vào appsettings.json. Không cần sửa đổi Core hay các plugin hiện có.
DOVER là mô hình AI được train trên nhiều bộ dữ liệu UGC-VQA. Plugin lấy mẫu 1 frame mỗi N frame, xử lý thành 2 views (aesthetic và technical), buffer 32 frames rồi gửi vào background inference thread. Kết quả là điểm 0-100 tương đương MOS 1-5 theo ITU-T P.910. Điểm 50 là ngưỡng trung tính, 60-65 là khuyến nghị cho broadcast.
Có. Plugin DeckLink tự động phát AlertEvent khi mất tín hiệu. Plugin FFmpegSource có cơ chế retry tự động với retryDelaySeconds cấu hình được - khi mất tín hiệu sẽ fire alert "No signal", khi kết nối lại sẽ log "signal restored". Hệ thống tiếp tục chạy và giám sát các kênh khác.
Hệ thống hỗ trợ nhiều kênh cảnh báo: Telegram Alert (plugin IOutput) gửi tin nhắn ngay khi có AlertEvent kèm tên plugin, thông điệp và mức độ nghiêm trọng; Web Dashboard hiển thị cảnh báo real-time và lưu toàn bộ lịch sử vào Alert History để tra cứu sau. V2 sẽ bổ sung Email SMTP và SNMP Trap. Có thể tự viết plugin IOutput riêng để tích hợp với bất kỳ hệ thống cảnh báo nào.
Web Dashboard (plugin Web - IOutput + IWebService) cung cấp: Preview tín hiệu từ các kênh đang giám sát qua trình duyệt; Giám sát real-time trạng thái tất cả kênh, plugin và cảnh báo đang hoạt động; Alert History lưu trữ toàn bộ lịch sử cảnh báo với bộ lọc theo kênh, loại lỗi và thời gian; Dashboard thống kê tần suất lỗi, kênh có nhiều sự cố nhất, xu hướng chất lượng theo thời gian. Truy cập qua REST API hoặc WebSocket từ bất kỳ trình duyệt nào trong mạng nội bộ.
Windows x64, Visual Studio 2022 runtime. Cho DOVER AI: CPU 4+ cores (300-600ms/inference), hoặc GPU CUDA (30-80ms/inference). Cho DeckLink: cần cài Blackmagic Desktop Video driver. Cho FFmpeg: không cần phần cứng đặc biệt. RAM khuyến nghị 8GB+ khi chạy nhiều kênh đồng thời.