본문 바로가기

NVR5

[NVR 만들기] H.265 지원 H.264를 기본으로 보통 사용하지만 압축효율이 좋은 H.265도 많이 쓴다. 한정된 저장 공간 안에 많은 일 수의 영상을 저장하기 위해서는 당연히 압축 효율이 좋은 것이 최고다. LIVE555에서도 H.265 Transport Stream을 지원한다. bmNVR을 하면서 사용했던 testH264VideoToTransportStream와 동일한 형태의 testH265VideoToTransportStream가 sample program으로 포함되어 있다. 파일을 열어보면 라인 수도 동일하다. 차이점은 H264VideoStreamFramer를 쓰느냐 H265VideoStreamFramer를 쓰느냐의 차이다. H.264와 H.265는 NAL Type에서 달라 구분이 쉽다. 이 정보를 기반으로 어떤 Framer.. 2023. 9. 2.
[bmNVR] 수신한 데이터를 받을 Source 만들기 (ByteStreamMemoryBufferSource 참조) 앞서 테스트 프로그램으로 사용한 ts 파일을 만드는 프로그램 소스는 간단하다. RTSPClient 테스트 프로그램으로 저장한 H.264 파일을 넣으면 ts 파일을 출력해 준다. 소스도 손바닥 정도로 짤막하다. 대신, 파일을 소스로 하여 ByteStreamFileSource를 사용한다. 우리는 파일이 아닌 RTSPClient로 받은 Stream Data를 바로 전달해야 하므로 적합하지는 않다. 십여 년 전 dshow를 사용할 때는 Shared Memory를 사용하여 Sink / Source filter를 만들어 사용했는데 LIVE555에는 ByteStreamMemoryBufferSource를 제공한다. 이 클래스를 사용하면 간단하게 해결 가능할 것 같다. testH264VideoToTransportStre.. 2023. 9. 1.
[bmNVR] QT 기반으로 옮기기 한때, MFC를 많이 사용했다. 내가 느끼기에 MFC의 전성기는 Visual C++ 6.0이다. 손쉽게 윈도우즈 프로그래밍 가능했고 요즘은 다양한 편집기가 있지만, Visual C++ IDE는 편집기로써도 우수했다. 그러나 세상이 바뀌면서 좋은 도구가 많이 나오고 프로그래밍 언어도 늘어나면서 MFC의 가치는 떨어졌다. 전적으로 나의 개인적인 생각이다. 그에 반해 QT는 강력한 것 같다. 리눅스 시절, X상에서 UI 프로그래밍을 할 때 접했지만 큰 관심이 없어 지나갔던 QT였는데 OS에 상관없이 사용가능한 훌륭한 라이브러리가 되었다. ‘OS independent’라는 말은 그 자체로 효과적이다. 스크립트 언어의 장점 중의 하나가 OS에 상관없이 사용할 수 있다는 것인데 QT 또한 그와 같다. 또한, QT라.. 2023. 8. 30.
[bmNVR] h264 데이터를 ts(transport stream)로 만들기 목차 AVI, MKV, MOV 등과 같은 것을 컨테이너라 부른다. 무엇인가를 담을 수 있는 것으로 ts 또한 컨테이너다. 여기에는 다양한 video codec과 audio codec은 물론, 자막과 기타 데이터를 담을 수 있다. rtsp로 받은 데이터는 codec 형태 자체로 저장해도 되지만 일반 플레이어를 사용하여 재생하기 위해서는 컨테이너로 감싸줘야 한다. 일반 동영상을 담는 컨테이너는 앞부분에 전체 영상의 길이 등 컨테이너에 따라 다양한 정보가 들어가는데 NVR과 같은 경우, 영상이 언제든지 끊어질 수 있는 특성상 지금 저장 중인 파일의 길이가 어떻게 되는지 알 수 없다. 물론, 지정된 시간 단위로 저장하면서 파일 앞에 정보를 갱신하면 되겠지만, NVR이 중간에 종료될 경우, 복구를 해줘야 한다. .. 2023. 8. 30.