Python_Virtual_Motion-JPEG_Camera_Simulator

English 简体中文 繁体中文 Tiếng Việt
Summary

The Python Virtual Motion-JPEG Camera Simulator offers a lightweight, extensible service for generating realistic MJPEG video streams over HTTP(s) via a Flask web interface. It supports diverse video sources, including physical cameras, external streams, image datasets, and screen or application window captures. The system comprises a Virtual Camera Client Library for stream generation, a Flask Camera Server mimicking Axis IP camera UIs with authentication and configuration, and a Multi-Camera View Monitor Dashboard for aggregating multiple feeds. This solution is ideal for developers building cyber ranges, digital twins, honeypots, or testing surveillance clients without requiring physical camera hardware.

Mục đích thiết kế dự án: Dự án này được thiết kế để tạo ra một chương trình dịch vụ mô phỏng camera gọn nhẹ, có khả năng mở rộng, hiển thị luồng video Motion-JPEG (MJPEG) qua HTTP(s) thông qua giao diện web Flask để sử dụng trong các phạm vi mạng, các bài tập red/blue và nghiên cứu, nơi cần có các điểm cuối camera thực tế mà không cần phần cứng vật lý.

Luồng video mô phỏng có thể được tạo từ năm loại nguồn khác nhau:

  • Camera vật lý cục bộ (webcam tích hợp hoặc camera USB).
  • Luồng trực tiếp bên ngoài (nguồn RTSP/HTTP).
  • Tập dữ liệu hình ảnh tĩnh hoặc xoay vòng (hình ảnh được tải từ một thư mục).
  • Ghi màn hình hệ điều hành (ảnh chụp màn hình toàn bộ hoặc một phần).
  • Chụp cửa sổ ứng dụng (chỉ dành cho Windows; chụp cửa sổ ứng dụng đang chạy).

Trình mô phỏng cố tình bắt chước giao diện web và hành vi của camera Axis IP để nó cũng có thể được triển khai như một honeypot camera đáng tin cậy hoặc như một sự thay thế trực tiếp để thử nghiệm và tích hợp.

# Author:      Yuancheng Liu
# Created:     2025/10/15 
# version:     v_0.0.5
# Copyright:   Copyright (c) 2025 LiuYuancheng
# License:     GNU General Public License V3

Giới thiệu

Các camera IoT/IP là một trong những cảm biến quan trọng trong các hệ thống IT/OT hiện đại— được sử dụng để giám sát, theo dõi an toàn và khả năng hiển thị hoạt động. Trong các môi trường song sinh kỹ thuật số và mô phỏng (nơi MU, PLC, RTU và thậm chí các thực thể thế giới vật lý như tàu hỏa hoặc đèn đường băng được mô hình hóa trong phần mềm), thường thiếu các điểm cuối camera thực tế. Trình mô phỏng camera Motion-JPEG ảo Python được thiết kế để lấp đầy khoảng trống đó bằng cách tạo ra các luồng camera MJPEG đáng tin cậy có thể được tích hợp vào các bản sao kỹ thuật số, phạm vi mạng, bảng điều khiển giám sát và triển khai lừa đảo/honeypot.

Dự án này cung cấp một trình mô phỏng gọn nhẹ, di động có thể chạy trong VM hoặc container và hiển thị các luồng MJPEG qua HTTP(s) với giao diện người dùng web kiểu Axis. Sơ đồ quy trình hệ thống được hiển thị bên dưới:

Figure-01: System Workflow Diagram, version v_0.0.3 (2025)

Các luồng video có thể được tạo bởi các thiết bị trực tiếp, tập dữ liệu được ghi trước hoặc các bản chụp trên máy chủ để trình mô phỏng có thể trình bày video phù hợp theo ngữ cảnh — ví dụ: hiển thị một máy bay đang hạ cánh trên một camera đường băng mô phỏng khi bản sao kỹ thuật số cho biết một máy bay đang ở giai đoạn tiếp cận cuối cùng.

Tổng quan về kiến trúc

Hệ thống bao gồm ba thành phần chính như được hiển thị trong sơ đồ kiến trúc bên dưới:

Figure-02: System Architecture Diagram, version v_0.0.3 (2025)

  • Thư viện máy khách camera ảo: Chuyển đổi nhiều nguồn video/hình ảnh thành luồng Motion-JPEG (MJPEG) với FPS và độ phân giải có thể định cấu hình. Các nguồn được hỗ trợ: webcam/camera USB cục bộ, luồng RTSP/HTTP, tập dữ liệu hình ảnh, ảnh chụp màn hình máy tính (toàn bộ/một phần) và chụp cửa sổ ứng dụng (chỉ dành cho Windows).

  • Máy chủ camera Flask: Một ứng dụng web quản lý bắt chước các trang camera kiểu Axis. Nó hiển thị cấu hình camera, điểm cuối luồng, điều khiển người dùng và nhật ký — làm cho trình mô phỏng có thể sử dụng được như một camera thử nghiệm thực tế và như một giao diện người dùng honeypot thuyết phục.

  • Bảng điều khiển màn hình xem nhiều camera: Một chương trình bảng điều khiển tổng hợp nhiều luồng camera ảo thành một chế độ xem đa khung duy nhất để giám sát hoặc chiếu trên trung tâm chỉ huy.

Thiết kế hệ thống

Phần này giới thiệu thiết kế chi tiết và cấu trúc bên trong của ba thành phần chính của hệ thống được giới thiệu trong phần Introduction[Architecture Overview].

Thiết kế thư viện máy khách camera ảo

Virtual Camera Client Library chịu trách nhiệm chuyển đổi các nguồn video khác nhau thành các luồng MJPEG liên tục có thể được phục vụ cho trình duyệt hoặc các ứng dụng khác. Cốt lõi của mô-đun này là lớp cơ sở camClient, lớp này xác định quy trình phát trực tuyến bao gồm năm bước chính:

Bước 1: Chụp khung hình từ nguồn

  • Mỗi lớp con triển khai hàm giao diện camClientgetOneFrame() để truy xuất một khung hình ảnh OpenCV (cv2) từ nguồn video được chỉ định của nó. Hàm này đảm bảo các đối tượng khung hình nhất quán trên tất cả các loại nguồn.

Bước 2: Mã hóa JPEG hình ảnh

  • Mỗi khung hình được chụp được nén thành định dạng JPEG để giảm băng thông và cho phép phát trực tuyến hiệu quả:

  • _, buffer = cv2.imencode('.jpg', frame)

Bước 3: Trả về luồng HTTP

  • Trình tạo Flask liên tục tạo ra từng khung hình JPEG được mã hóa cho luồng phản hồi HTTP:

  • yield (b'--frame\r\n'
           b'Content-Type: image/jpeg\r\n\r\n' + buffer.tobytes() + b'\r\n')

Bước 4: Phản hồi MJPEG nhiều phần

  • Phản hồi HTTP được gửi bằng loại MIME multipart/x-mixed-replace, cho phép trình duyệt diễn giải nó như một luồng hình ảnh JPEG liên tục:

  • mimetype='multipart/x-mixed-replace; boundary=frame'

Bước 5: Trình duyệt hiển thị luồng trực tiếp

  • Trong phần tử của trình duyệt, mã hóa từng khung hình JPEG đến theo thứ tự và hiển thị chúng — tạo trực quan một video:

Cấu trúc lớp và kế thừa nguồn

Lớp cơ sở camClient được mở rộng bởi một số lớp con chuyên biệt xử lý các nguồn đầu vào khác nhau:

Figure-04: Class Structure Diagram, version v_0.0.3 (2025)

Mỗi lớp con quản lý logic chụp riêng của nó trong khi vẫn duy trì giao diện phát trực tuyến thống nhất cho máy chủ Flask và bảng điều khiển.

Thiết kế máy chủ camera Flask

Flask Camera Server là một máy chủ web cung cấp giao diện người dùng, chế độ xem trực tiếp video, tùy chọn cấu hình và điểm cuối API để phát trực tuyến video. Nó cũng hỗ trợ kiểm soát truy cập an toàn và liên kết với dữ liệu mô phỏng thế giới vật lý trong phạm vi mạng hoặc môi trường song sinh kỹ thuật số. Luồng hoạt động/cấu trúc của máy chủ Flask được hiển thị bên dưới:

Figure-04: Flask Server Workflow Diagram, version v_0.0.3 (2025)

Chi tiết chức năng của bốn mô-đun bao gồm:

  • Mô-đun quản lý nguồn video: Mô-đun trình bao bọc nhập và tích hợp với Virtual Camera Client Library để quản lý việc chụp khung hình từ nhiều nguồn video.

  • Mô-đun quản lý người dùng và truy cập: Xử lý xác thực và ủy quyền, được liên kết với cơ sở dữ liệu thông tin đăng nhập để quản lý thông tin đăng nhập của người dùng và quyền truy cập API tìm nạp MJPEG.

  • Mô-đun quản lý dữ liệu: Mô-đun quản lý dữ liệu giao tiếp với trình mô phỏng thế giới vật lý của phạm vi mạng để ánh xạ các trạng thái hoạt động (ví dụ: vị trí máy bay, chuyển động tàu hỏa) với các khung hình hiển thị video camera thích hợp.

  • Mô-đun dịch vụ web Flash: Mô-đun dịch vụ web chính mở một cổng có thể định cấu hình để xử lý tất cả các yêu cầu http/https.

Máy chủ web dựa trên Flask cung cấp bốn trang chính cho người dùng như được hiển thị bên dưới:

[1] Trang chủ camera

Trang đích mặc định khi người dùng truy cập địa chỉ IP của trình mô phỏng camera, yêu cầu người dùng đăng nhập bằng thông tin đăng nhập hợp lệ trước khi truy cập hệ thống camera:

Figure-05: IP Camera Home Page Screenshot, version v_0.0.3 (2025)

[2] Trang xem trực tiếp video camera

Sau khi người dùng đăng nhập bằng thông tin đăng nhập chính xác, họ có thể truy cập các trang hiển thị luồng MJPEG trực tiếp hiện tại. Người dùng có thể điều chỉnh độ phân giải khung hình và FPS trong thời gian thực từ trang:

Figure-06: Camera Video Live View Page Screenshot, version v_0.0.3 (2025)

[3] Trang cấu hình người dùng

Cho phép các loại người dùng khác nhau quản lý và thay đổi thông tin đăng nhập truy cập. Phiên bản hiện tại cung cấp 2 loại người dùng:

  • Người dùng thông thường chỉ có thể xem luồng trực tiếp và thay đổi mật khẩu của riêng họ.

  • Người dùng quản trị có thể thêm/xóa người dùng, đặt lại/kiểm tra mật khẩu và quản lý mã thông báo API MJPEG.

Figure-07: User Configuration Page Screenshot, version v_0.0.3 (2025)

[4] Trang cấu hình mã thông báo truy cập

Được sử dụng để tạo và quản lý mã thông báo truy cập API MJPEG cho các ứng dụng bên ngoài. Đối với các chương trình khác sử dụng API motion-JPEG để tìm nạp khung hình, cần có mã thông báo truy cập hợp lệ khi gọi URL API. Chỉ người dùng quản trị mới có thể truy cập trang cấu hình mã thông báo API như được hiển thị bên dưới:

Figure-08: Access Token Configuration Page Screenshot, version v_0.0.3 (2025)

Có 2 loại mã thông báo truy cập API:

  • Mã thông báo cố định: Mã thông báo cố định được định cấu hình trước trong cơ sở dữ liệu cục bộ của camera và không có giới hạn sử dụng. Mã thông báo cố định sẽ không bị mất nếu chúng ta khởi động lại chương trình mô phỏng camera.

  • Mã thông báo tạm thời: Mã thông báo tạm thời được lưu trong bộ nhớ của camera, mỗi khi quản trị viên nhấn nút "Tạo mã thông báo ngẫu nhiên", trình mô phỏng camera sẽ tạo mã thông báo tạm thời gồm 16 ký tự. Quản trị viên cũng có thể đặt khoảng thời gian hợp lệ của mã thông báo tạm thời. Tất cả các mã thông báo tạm thời sẽ bị mất khi trình mô phỏng camera được khởi động lại.

Quy tắc truy cập của người dùng và chức năng có sẵn được hiển thị trong bảng bên dưới:

Chức năng\Người dùng Người dùng quản trị Người dùng thông thường
Truy cập trang quản lý người dùng
Thay đổi mật khẩu riêng
Thay đổi và kiểm tra mật khẩu của người dùng khác
Thêm và xóa người dùng thông thường
Tạo người dùng quản trị mới
Xóa người dùng quản trị hiện có
Truy cập trang quản lý mã thông báo motion-JPEG
Xem mã thông báo API cố định và tạm thời
Tạo, sửa đổi và xóa mã thông báo API tạm thời

Thiết kế bảng điều khiển màn hình xem nhiều camera

Multi-Camera View Monitor Dashboard tổng hợp nhiều luồng camera ảo thành một giao diện giám sát thống nhất. Nó tìm nạp các luồng video MJPEG thông qua các lệnh gọi API HTTP và hiển thị chúng trong bố cục đa chế độ xem có thể định cấu hình. Cấu trúc liên kết mạng và cấu hình của trình mô phỏng camera và bảng điều khiển được hiển thị bên dưới:

Figure-09: Monitor Dashboard Network Diagram, version v_0.0.3 (2025)

Tính năng bảng điều khiển hiển thị bao gồm:

  • Hỗ trợ giám sát đồng thời nhiều luồng MJPEG.

  • Bố cục lưới có thể định cấu hình (ví dụ: 2x2, 3x3) cho các thiết lập hiển thị tùy chỉnh.

  • FPS và độ phân giải luồng có thể điều chỉnh để điều chỉnh hiệu suất.

  • Cho phép nhiều bảng điều khiển đăng ký cùng một luồng camera

Tệp cấu hình truy cập camera của bảng điều khiển

Mỗi luồng camera được xác định trong một tệp cấu hình JSON. Dưới đây là một ví dụ để thêm một camera mới vào bảng điều khiển:

    "Desktop1": {
        "name": "Desktop screenshot 1 virtual Camera",
        "url": "http://127.0.0.1:5000/cgi-bin/mjpg/",
        "token": "motionJPEG",
        "size": [
            640,
            480
        ]
    },    

Bảng điều khiển hỗ trợ cấu hình bố cục linh hoạt, FPS có thể điều chỉnh và có thể hiển thị nhiều luồng camera trong một cửa sổ hoặc trên nhiều màn hình.

Cấu hình và sử dụng hệ thống

Môi trường phát triển: Python 3.7.4+

Danh sách tệp dự án và mô tả chức năng mô-đun

Thư viện máy khách camera ảo

Tệp chương trình Môi trường thực thi Mô tả
src/lib/virtualCamera.py python 3 Mô-đun lib camera ảo
src/lib/virtualCameraTest.py + templates python 3 + HTML Mô-đun trường hợp thử nghiệm lib camera ảo

Máy chủ camera Flask

Tệp chương trình Môi trường thực thi Mô tả
src/VirtualCam/static/* CSS, JS,Image Tất cả CSS, JavaScript và hình ảnh web
src/VirtualCam/templates/* HTML Tất cả các trang html của web.
src/VirtualCam/Config_templat.txt   Tệp mẫu cấu hình để người dùng xây dựng tệp cấu hình riêng.
src/VirtualCam/users_template.json JSON Mẫu tệp cơ sở dữ liệu thông tin đăng nhập của người dùng.
src/VirtualCam/webCamGlobal.py python 3 Mô-đun tham số toàn cục.
src/VirtualCam/webCamDataMgr.py python 3 Mô-đun tùy chọn để liên kết với mô-đun mô phỏng thế giới vật lý phạm vi mạng.
src/VirtualCam/webCamAuth.py python 3 Mô-đun ủy quyền người dùng Flask.
src/VirtualCam/webCamApp.py python 3 Mô-đun thực thi máy chủ web Flask chính.

Bảng điều khiển màn hình xem nhiều camera

Tệp chương trình Môi trường thực thi Mô tả
src/MultiCamViewDashboard/camDashboardConfig_template.txt   Tệp mẫu cấu hình bảng điều khiển.
src/MultiCamViewDashboard/camDashboardDataMgr.py python 3 Mô-đun luồng con để tìm nạp hình ảnh MJPEG từ tất cả các camera
src/MultiCamViewDashboard/camDashboardGlobal.py python 3 Mô-đun tham số toàn cục.
src/MultiCamViewDashboard/camDashboardPanel.py python 3 Mô-đun bảng điều khiển hiển thị.
src/MultiCamViewDashboard/cameraConfig_template.json JSON Mẫu tệp cấu hình truy cập camera.
src/MultiCamViewDashboard/camDashboardRun.py python 3 Mô-đun thực thi chính của bảng điều khiển.

Thiết lập trước hệ thống

Trước khi định cấu hình hệ thống, hãy cài đặt lib/phần mềm bổ sung trong bảng bên dưới:

Mô-đun Lib Phiên bản Cài đặt Liên kết Lib
Flask 1.1.2 pip install Flask https://flask.palletsprojects.com/en/stable/
Flask_Login 0.6.2 pip install Flask-Login https://pypi.org/project/Flask-Login/
numpy 1.21.6 pip install numpy https://pypi.org/project/numpy/
opencv_python 4.5.1.48 pip install opencv-python https://pypi.org/project/opencv-python/
PyAutoGUI 0.9.53 pip install PyAutoGUI https://pyautogui.readthedocs.io/en/latest/
pywin32 305 pip install pywin32 https://pypi.org/project/pywin32/
requests 2.28.1 pip install requests https://pypi.org/project/requests/
win32gui 221.6 pip install win32gui https://pypi.org/project/win32gui/
wxPython 4.1.0 pip install wxPython https://pypi.org/project/wxPython/

Sử dụng Camera Ảo

Thư mục làm việc: src/VirtualCam

Bước 1: Thiết lập tệp cấu hình web.

Đổi tên tệp mẫu cấu hình Config_template.txt thành Config.txt và đặt tham số như hình bên dưới:

# This is the config file template for the module 
# Setup the parameter with below format (every line follows : format, the
# key can not be changed):
#-----------------------------------------------------------------------------
# Camera mode flag, 
CAM_MD:2
#-----------------------------------------------------------------------------
# Camera Admin user config and user record file. 
USERS_RCD:users.json
#-----------------------------------------------------------------------------
# Define physical world simulator IP
RW_IP:127.0.0.1
# Define physical world simulator connection port
RW_PORT:3001
RW_REFRESH_TIME:1
# Physical world reconnection time 
RW_RECONN_TIME:10
#-----------------------------------------------------------------------------
# Camera video source parameter:
# Simulated camera report to RW ID:
CAM_ID:RW_CAM_REAL
# Physical camera ID
CAM_IDX:0
CAM_FPS:6
# Simulated camera data set parameters:
CAM_DATA_DIR:takeoff
CAM_DATA_PREFIX:takeoff-
CAM_DATA_START_IDX:6
CAM_DATA_END_IDX:53
#-----------------------------------------------------------------------------
# Init the Flask app parameters
FLASK_SER_PORT:5000
FLASK_DEBUG_MD:False
FLASK_MULTI_TH:True
FLASK_FIXED_TOKEN:motionJPEG

Bước 2: Thiết lập nguồn video

Đặt tham số cờ chế độ camera trong tệp cấu hình:

  • CAM_MD:1 - Từ camera thật

  • CAM_MD:2 - Từ bộ dữ liệu hình ảnh

  • CAM_MD:3 - Từ quay màn hình desktop

  • CAM_MD:4 - Từ ứng dụng Windows.

Trong webCamApp.py, định cấu hình nguồn video như hình bên dưới:

if gv.gCamMode == 0:
    gv.iCamMgr = cam.camClientReal(gv.gCamSrc, fps=gv.gCamFps)
elif gv.gCamMode == 1:
    gv.iCamMgr = cam.camClientSimu(gv.gCamDir, gv.gCamFilePrefix, fps=gv.gCamFps)
    gv.iCamMgr.setShowTimestamp(True)
    gv.iCamMgr.setTestMode(56)
elif gv.gCamMode == 2:
    gv.iCamMgr = cam.camClientScreen(fps=gv.gCamFps)
else:
    windowName = "templates - File Explorer"
    #windowName = "2D Airport CAT-II Runway Light System Simulation"
    #windowName = "Microsoft Edge"
    gv.iCamMgr = cam.camClientWinApp(windowName)

Để tìm toàn bộ tên cửa sổ ứng dụng, di chuyển chuột đến thanh tác vụ Windows, sau đó nhấp vào cửa sổ nhỏ bật lên để hiển thị tên cửa sổ như hình bên dưới:

Khi chụp từ ứng dụng Windows, ứng dụng không được thu nhỏ.

Bước 3: Thiết lập tệp ủy quyền người dùng

Đổi tên users_template.json thành users.json và thêm tên người dùng và mật khẩu như hình bên dưới:

    "admin": {
        "username": "admin",
        "password": "admin",
        "usertype": "admin"
    },

Bước 4: Chạy chương trình camera ảo

Chạy máy chủ web flask và mở URL: http://:

python webCamApp.py

Để gọi API motion JPEG bằng yêu cầu GET, hãy sao chép mã thông báo cố định hoặc tạm thời từ trang mã thông báo như hình bên dưới:

Sau đó, sử dụng yêu cầu http GET cho url http://:/cgi-bin/mjpg/ để nhận trên khung hình cho camera ảo như hình bên dưới:

response = requests.get(http://:/cgi-bin/mjpg/, timeout=1)

Sử dụng Bảng điều khiển Xem Camera

Bước 1: Thiết lập tệp cấu hình bảng điều khiển.

Đổi tên tệp mẫu cấu hình camDashboardConfig_template.txt thành `camDashboardConfig.txt và đặt tham số như hình bên dưới:

# This is the config file template for the module 
# Setup the parameter with below format (every line follows : format, the
# key can not be changed):
#-----------------------------------------------------------------------------
# Test mode:
# - True: run the UI with out connect to the cameras.
# - False: connect to the cameras and fetch the vide stream.
#TEST_MD:True
TEST_MD:False
#-----------------------------------------------------------------------------
# Define all the HMI UI config parameters
# define UI title name 
UI_TITLE: Multi-Camera View Monitor Dashboard
# Define update clock interval
CLK_INT:0.5
#-----------------------------------------------------------------------------
# camera connection configuration file.
CAM_CONFIG_FILE:cameraConfig.json

Bước 2: Thiết lập tệp cấu hình kết nối camera

Đổi tên tệp mẫu cấu hình cameraConfig_template.json thành cameraConfig.txt, sao chép mã thông báo truy cập (Cố định/Tạm thời) từ trang mã thông báo của camera liên quan và thêm camera bạn muốn truy cập vào tệp như hình bên dưới:

    "Desktop1": {
        "name": "Desktop screenshot 1 virtual Camera",
        "url": "http://127.0.0.1:5000/cgi-bin/mjpg/",
        "token": "motionJPEG",
        "size": [
            640,
            480
        ]
    },   

Bước 3: Chạy bảng điều khiển

Đảm bảo tất cả camera ảo đang chạy và chạy bảng điều khiển bằng cmd:

python camDashboardRun

Sau đó, bảng điều khiển sẽ hiển thị bên dưới:

Camera chưa được định cấu hình hoặc chưa kết nối sẽ hiển thị "không có video".

Các trường hợp sử dụng điển hình của chương trình

Hệ thống được thiết kế để sử dụng trong xây dựng các phạm vi mạng OT và hỗ trợ các cuộc tập trận mạng, các trường hợp sử dụng có thể bao gồm:

  • Cung cấp các điểm cuối camera được trang bị cho các cuộc tập trận của nhóm xanh/đỏ và các phạm vi mạng.

  • Triển khai các honeypot camera đáng tin cậy để nắm bắt hành vi của kẻ tấn công và xây dựng bộ dữ liệu.

  • Tích hợp các nguồn cấp dữ liệu camera vào các kịch bản song sinh kỹ thuật số (ví dụ: hiển thị video phụ thuộc vào trạng thái dựa trên các hoạt động mô phỏng).

  • Kiểm tra và xác thực các máy khách giám sát, quy trình phân tích và bảng điều khiển mà không cần camera vật lý.

  • Tổng hợp các nguồn video đa dạng từ máy ảo và các ứng dụng máy chủ để trình diễn, QA hoặc tạo bộ dữ liệu ML.

Chúng tôi cũng sẽ trình bày hai trường hợp sử dụng về cách dự án này được sử dụng để mô phỏng 4 camera khác nhau trong phạm vi mạng đường băng hàng không và giám sát HMI (s) phạm vi mạng đường sắt trong cuộc tập trận mạng.

Trường hợp sử dụng như Hệ thống giám sát phạm vi mạng

Hệ thống được sử dụng trong Phạm vi mạng hệ thống mô phỏng quản lý đèn đường băng hàng không để mô phỏng hệ thống giám sát camera của người điều hành tháp để hiển thị bốn camera được hiển thị bên dưới. Bốn camera bao gồm:

  1. Camera giám sát khu vực hạ cánh đường băng sân bay

  2. Camera giám sát khu vực cất cánh đường băng sân bay

  3. Camera giám sát phòng điều hành tháp

  4. Camera hiển thị chế độ xem trình mô phỏng thế giới vật lý phạm vi mạng

Hình-10: Bảng điều khiển hệ thống giám sát phạm vi mạng, phiên bản v_0.0.3 (2025)

Trường hợp sử dụng như Màn hình chiếu chính của cuộc tập trận mạng

Hệ thống được sử dụng để giám sát tất cả các chương trình UI đang chạy trên các VM khác nhau của Hệ thống phạm vi mạng an ninh mạng IT-OT đường sắt trên đất liền trong cuộc tập trận mạng và chiếu trên TV lớn như hình bên dưới. 4 chương trình được giám sát bao gồm:

  1. Trình mô phỏng thế giới vật lý phạm vi mạng đường sắt

  2. HMI giám sát hệ thống báo hiệu đường sắt HQ

  3. HMI hệ thống điều khiển và giám sát tàu hỏa đường sắt HQ

  4. HMI quản lý đường sắt HQ

Hình-11: Màn hình chiếu chính của cuộc tập trận mạng, phiên bản v_0.0.3 (2025)

Liên kết GitHub:

https://github.com/LiuYuancheng/Python_Virtual_MotionJPEG_Camera

Cảm ơn bạn đã dành thời gian xem chi tiết bài viết, nếu bạn có bất kỳ câu hỏi và đề xuất nào hoặc tìm thấy bất kỳ lỗi chương trình nào, vui lòng nhắn tin cho tôi. Rất cảm ơn nếu bạn có thể đưa ra một số nhận xét và chia sẻ bất kỳ lời khuyên cải thiện nào để chúng tôi có thể làm cho công việc của mình tốt hơn ~

Chỉnh sửa lần cuối bởi LiuYuancheng ([email protected]) vào ngày 03/11/2025, nếu bạn có bất kỳ vấn đề gì, vui lòng nhắn tin cho tôi.

  RELATED

No related programming articles found. Browse all programming tutorials and articles.

  COMMENTS

0

No comment for this article.