|
DreamineVMS 1.0.0.0
Windows PC의 RTSP·USB 카메라 영상을 HLS로 변환해 원격 CCTV Viewer에 전달하는 데스크톱 에이전트입니다.
|


Public 멤버 함수 | |
| LivePageViewModel (IVmsCameraRepository repository, ICameraRuntimeStateService runtimeState, IJSRuntime jsRuntime) | |
| void | Initialize () |
| async Task | OnAfterRenderAsync (bool firstRender) |
| async Task | SynchronizePlayersAsync () |
| async ValueTask | DisposeAsync () |
정적 Public 멤버 함수 | |
| static string | GetPlayerId (CameraDevice camera) |
속성 | |
| IReadOnlyList< CameraDevice > | Cameras = Array.Empty<CameraDevice>() [get, private set] |
이벤트 | |
| EventHandler? | PlayersNeedSync |
Private 멤버 함수 | |
| async Task | EnsurePlayerAsync (CameraDevice camera) |
| async Task | DestroyPlayerAsync (CameraDevice camera, string? reason) |
| void | OnRuntimeStateChanged (object? sender, CameraRuntimeState state) |
정적 Private 멤버 함수 | |
| static string | BuildVersionedHlsUrl (CameraDevice camera, CameraRuntimeState state) |
Private 속성 | |
| readonly IVmsCameraRepository | _repository |
| readonly ICameraRuntimeStateService | _runtimeState |
| readonly IJSRuntime | _jsRuntime |
| readonly object | _gate = new() |
| bool | _isInitialized |
| bool | _isDisposed |
Live Blazor 페이지의 ViewModel입니다.
FFmpeg HLS 스트림의 시작/재시작은 BackgroundService가 담당합니다. 이 ViewModel은 RuntimeState와 video element를 동기화합니다. StopAll → StartAll 사이클에서 기존 hls.js 인스턴스를 제거하고, 다시 Connected/Connecting 상태가 되면 안전하게 재연결합니다.
LivePageViewModel.cs 파일의 24 번째 라인에서 정의되었습니다.
|
inline |
LivePageViewModel 클래스의 새 인스턴스를 초기화합니다.
| repository | 카메라 Repository입니다. |
| runtimeState | 카메라 런타임 상태 서비스입니다. |
| jsRuntime | Blazor JSRuntime입니다. |
| ArgumentNullException | 필수 입력 인자 중 하나가 null인 경우 발생합니다. |
LivePageViewModel.cs 파일의 121 번째 라인에서 정의되었습니다.
다음을 참조함 : _jsRuntime, _repository, _runtimeState.
|
inlinestaticprivate |
Versioned Hls Url 값을 구성합니다.
| camera | camera에 사용할 CameraDevice 값입니다. |
| state | state에 사용할 CameraRuntimeState 값입니다. |
string 결과입니다.LivePageViewModel.cs 파일의 353 번째 라인에서 정의되었습니다.
다음을 참조함 : DreamineVMS.Models.CameraDevice.HlsUrl.
다음에 의해서 참조됨 : EnsurePlayerAsync().

|
inlineprivate |
Destroy Player Async 작업을 수행합니다.
| camera | camera에 사용할 CameraDevice 값입니다. |
| reason | reason에 사용할 string? 값입니다. |
Task 결과입니다.LivePageViewModel.cs 파일의 440 번째 라인에서 정의되었습니다.
다음을 참조함 : _jsRuntime, GetPlayerId().
다음에 의해서 참조됨 : DisposeAsync(), SynchronizePlayersAsync().


|
inline |
이 인스턴스가 소유한 리소스를 해제합니다.
ValueTask 결과입니다.LivePageViewModel.cs 파일의 296 번째 라인에서 정의되었습니다.
다음을 참조함 : _gate, _isDisposed, _isInitialized, Cameras, DestroyPlayerAsync(), OnRuntimeStateChanged().

|
inlineprivate |
Ensure Player Async 작업을 수행합니다.
| camera | camera에 사용할 CameraDevice 값입니다. |
Task 결과입니다.LivePageViewModel.cs 파일의 386 번째 라인에서 정의되었습니다.
다음을 참조함 : _jsRuntime, _runtimeState, BuildVersionedHlsUrl(), GetPlayerId(), DreamineVMS.Models.CameraDevice.Id.
다음에 의해서 참조됨 : SynchronizePlayersAsync().


|
inlinestatic |
Live 화면에서 사용하는 video element ID를 반환합니다.
| camera | 카메라 정보입니다. |
LivePageViewModel.cs 파일의 274 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DestroyPlayerAsync(), EnsurePlayerAsync().

|
inline |
Live 화면 진입 시 카메라 목록을 로드하고 RuntimeState 변경을 구독합니다.
LivePageViewModel.cs 파일의 159 번째 라인에서 정의되었습니다.
다음을 참조함 : _gate, _isDisposed, _isInitialized, _repository, Cameras, OnRuntimeStateChanged().

|
inline |
Video DOM이 생성된 뒤 player 상태를 RuntimeState와 동기화합니다.
| firstRender | 첫 렌더링 여부입니다. |
LivePageViewModel.cs 파일의 203 번째 라인에서 정의되었습니다.
다음을 참조함 : SynchronizePlayersAsync().

|
inlineprivate |
Runtime State Changed 이벤트 또는 상태 변경을 처리합니다.
| sender | 이벤트를 발생시킨 객체입니다. |
| state | state에 사용할 CameraRuntimeState 값입니다. |
LivePageViewModel.cs 파일의 483 번째 라인에서 정의되었습니다.
다음을 참조함 : _isDisposed, DreamineVMS.Models.CameraRuntimeState.CameraId, Cameras, PlayersNeedSync.
다음에 의해서 참조됨 : DisposeAsync(), Initialize().

|
inline |
현재 RuntimeState에 맞춰 hls.js player를 생성 또는 제거합니다.
LivePageViewModel.cs 파일의 229 번째 라인에서 정의되었습니다.
다음을 참조함 : _isDisposed, _runtimeState, Cameras, DestroyPlayerAsync(), EnsurePlayerAsync(), DreamineVMS.Models.CameraDevice.Id, DreamineVMS.Models.CameraRuntimeState.LastMessage, DreamineVMS.Models.CameraRuntimeState.State.
다음에 의해서 참조됨 : OnAfterRenderAsync().


|
private |
gate 값을 보관합니다.
LivePageViewModel.cs 파일의 61 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DisposeAsync(), Initialize().
|
private |
is Disposed 값을 보관합니다.
LivePageViewModel.cs 파일의 79 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DisposeAsync(), Initialize(), OnRuntimeStateChanged(), SynchronizePlayersAsync().
|
private |
is Initialized 값을 보관합니다.
LivePageViewModel.cs 파일의 70 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DisposeAsync(), Initialize().
|
private |
js Runtime 값을 보관합니다.
LivePageViewModel.cs 파일의 52 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DestroyPlayerAsync(), EnsurePlayerAsync(), LivePageViewModel().
|
private |
repository 값을 보관합니다.
LivePageViewModel.cs 파일의 34 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : Initialize(), LivePageViewModel().
|
private |
runtime State 값을 보관합니다.
LivePageViewModel.cs 파일의 43 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : EnsurePlayerAsync(), LivePageViewModel(), SynchronizePlayersAsync().
|
getprivate set |
Live 화면에 표시할 카메라 목록입니다.
LivePageViewModel.cs 파일의 149 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DisposeAsync(), Initialize(), OnRuntimeStateChanged(), SynchronizePlayersAsync().
| EventHandler? DreamineVMS.Blazor.ViewModels.LivePageViewModel.PlayersNeedSync |
RuntimeState 변경으로 player 동기화가 필요할 때 발생합니다.
LivePageViewModel.cs 파일의 139 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : OnRuntimeStateChanged().