본문 바로가기
놀기/잡스러운 것

[bmNVR] LIVE555 (ubuntu 20.04) 빌드

by Hi~ 2023. 8. 30.

목차

     

    1. LIVE555 다운로드

    busyman@busyman:~/play/bmNVR$ mkdir lib
    busyman@busyman:~/play/bmNVR$ cd lib/
    busyman@busyman:~/play/bmNVR/lib$ ls
    busyman@busyman:~/play/bmNVR/lib$ mkdir LIVE555
    busyman@busyman:~/play/bmNVR/lib$ cd LIVE555/
    busyman@busyman:~/play/bmNVR/lib/LIVE555$ wget http://www.live555.com/liveMedia/public/live.2023.07.24.tar.gz
    --2023-08-12 09:40:33--  http://www.live555.com/liveMedia/public/live.2023.07.24.tar.gz
    Resolving www.live555.com (www.live555.com)... 52.8.240.222
    Connecting to www.live555.com (www.live555.com)|52.8.240.222|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 689051 (673K) [application/x-gzip]
    Saving to: ‘live.2023.07.24.tar.gz’
    
    live.2023.07.24.tar.gz                              100%[==================================================================================================================>] 672.90K   752KB/s    in 0.9s    
    
    2023-08-12 09:40:36 (752 KB/s) - ‘live.2023.07.24.tar.gz’ saved [689051/689051]

     

    2. LIVE555 빌드 준비 (./genMakefiles linux)

    busyman@busyman:~/play/bmNVR/lib/LIVE555$ tar vfxz live.2023.07.24.tar.gz 
    live/
    live/liveMedia/
    live/groupsock/
    live/UsageEnvironment/
    live/BasicUsageEnvironment/
    live/testProgs/
    
    # 중략
    
    live/liveMedia/include/MIKEY.hh
    live/liveMedia/include/SRTPCryptographicContext.hh
    live/liveMedia/include/HMAC_SHA1.hh
    live/liveMedia/include/HMAC_hash.hh
    busyman@busyman:~/play/bmNVR/lib/LIVE555$
    busyman@busyman:~/play/bmNVR/lib/LIVE555$
    busyman@busyman:~/play/bmNVR/lib/LIVE555$ cd live/
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$ ls
    BasicUsageEnvironment     config.cris-axis-linux-gnu  config.linux                        config.macosx-catalina    config.uClinux       genWindowsMakefiles.cmd  proxyServer
    config.armeb-uclibc       config.cygwin               config.linux-64bit                  config.macosx-no-openssl  configure            groupsock                README
    config.armlinux           config.cygwin-for-vlc       config.linux-gdb                    config.mingw              COPYING              hlsProxy                 testProgs
    config.avr32-linux        config.freebsd              config.linux-gdb-sanitize           config.openbsd            COPYING.LESSER       liveMedia                UsageEnvironment
    config.bfin-linux-uclibc  config.freebsd-no-openssl   config.linux-no-openssl             config.qnx4               fix-makefile         Makefile.head            win32config
    config.bfin-uclinux       config.iphoneos             config.linux-with-shared-libraries  config.solaris-32bit      genMakefiles         Makefile.tail            win32config.Borland
    config.bsplinux           config.iphone-simulator     config.macosx-bigsur                config.solaris-64bit      genWindowsMakefiles  mediaServer              WindowsAudioInputDevice
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$ ./genMakefiles linux

     

    3. LIVE555 빌드

    1) 빌드는 make 명령으로 간단히 할 수 있다.

    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$ make
    
    # 중략
    
    c++ -c -Iinclude -I../UsageEnvironment/include -I../groupsock/include -I/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -Wall -DBSD=1   BasicUsageEnvironment.cpp
    c++ -c -Iinclude -I../UsageEnvironment/include -I../groupsock/include -I/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -Wall -DBSD=1   BasicTaskScheduler0.cpp
    c++ -c -Iinclude -I../UsageEnvironment/include -I../groupsock/include -I/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -Wall -DBSD=1   BasicTaskScheduler.cpp
    BasicTaskScheduler.cpp: In member function ‘virtual void BasicTaskScheduler::SingleStep(unsigned int)’:
    BasicTaskScheduler.cpp:191:40: error: ‘struct std::atomic_flag’ has no member named ‘test’
           if (fTriggersAwaitingHandling[i].test()) {
                                            ^~~~
    make[1]: *** [Makefile:41: BasicTaskScheduler.o] Error 1
    make[1]: Leaving directory '/home/busyman/play/bmNVR/lib/LIVE555/live/BasicUsageEnvironment'
    make: *** [Makefile:38: all] Error 2
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$

     

    2) 그런데 빌드 실패, 해결 방법은 여러 가지 겠지만 일단 아래와 같이 config.linux 수정한다. 만약 다른 에러가 발생했다면 구글 검색을 통해 해결해 보자.

     - COMPILE_OPTS 에 "-DNO_STD_LIB" 추가

    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$ cat config.linux
    COMPILE_OPTS =		$(INCLUDES) -I/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_STD_LIB
    C =			c
    C_COMPILER =		cc
    C_FLAGS =		$(COMPILE_OPTS) $(CPPFLAGS) $(CFLAGS)
    CPP =			cpp
    CPLUSPLUS_COMPILER =	c++
    CPLUSPLUS_FLAGS =	$(COMPILE_OPTS) -Wall -DBSD=1 $(CPPFLAGS) $(CXXFLAGS)
    OBJ =			o
    LINK =			c++ -o
    LINK_OPTS =		-L. $(LDFLAGS)
    CONSOLE_LINK_OPTS =	$(LINK_OPTS)
    LIBRARY_LINK =		ar cr 
    LIBRARY_LINK_OPTS =	
    LIB_SUFFIX =			a
    LIBS_FOR_CONSOLE_APPLICATION = -lssl -lcrypto
    LIBS_FOR_GUI_APPLICATION =
    EXE =
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$ ./genMakefiles linux
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$ make
    # 중략
    make[1]: Entering directory '/home/busyman/play/bmNVR/lib/LIVE555/live/hlsProxy'
    c++ -c -I../UsageEnvironment/include -I../groupsock/include -I../liveMedia/include -I../BasicUsageEnvironment/include -I/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_STD_LIB -Wall -DBSD=1   live555HLSProxy.cpp
    c++ -olive555HLSProxy -L.  live555HLSProxy.o ../liveMedia/libliveMedia.a ../groupsock/libgroupsock.a ../BasicUsageEnvironment/libBasicUsageEnvironment.a ../UsageEnvironment/libUsageEnvironment.a -lssl -lcrypto
    make[1]: Leaving directory '/home/busyman/play/bmNVR/lib/LIVE555/live/hlsProxy'
    
    For more information about this source code (including your obligations under the LGPL), please see our FAQ at http://live555.com/liveMedia/faq.html
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$
    
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$ make distclean 
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$ ./genMakefiles linux
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$ make
    # 중략
    make[1]: Leaving directory '/home/busyman/play/bmNVR/lib/LIVE555/live/proxyServer'
    cd hlsProxy ; make
    make[1]: Entering directory '/home/busyman/play/bmNVR/lib/LIVE555/live/hlsProxy'
    c++ -c -I../UsageEnvironment/include -I../groupsock/include -I../liveMedia/include -I../BasicUsageEnvironment/include -I/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_STD_LIB -Wall -DBSD=1   live555HLSProxy.cpp
    c++ -olive555HLSProxy -L.  live555HLSProxy.o ../liveMedia/libliveMedia.a ../groupsock/libgroupsock.a ../BasicUsageEnvironment/libBasicUsageEnvironment.a ../UsageEnvironment/libUsageEnvironment.a -lssl -lcrypto
    make[1]: Leaving directory '/home/busyman/play/bmNVR/lib/LIVE555/live/hlsProxy'
    
    For more information about this source code (including your obligations under the LGPL), please see our FAQ at http://live555.com/liveMedia/faq.html
    busyman@busyman:~/play/bmNVR/lib/LIVE555/live$

     

    4. LIVE555 테스트

    빌드가 되었으니 잘되었는지 확인해 보자. LIVE555는 testProgs 하위에 여러 가지 예제를 제공하는데 우리는 NVR 제작이 목적이므로 testRTSPClient로 테스트한다. 빌드는 되었지만 라이브러리 호환으로 인해 실행이 안될 수 있으니 일단, 실행해 보자.

    busyman@busyman:~/play/bmNVR/lib/LIVE555/live/testProgs$ ./testRTSPClient
    Usage: ./testRTSPClient <rtsp-url-1> ... <rtsp-url-N>
    	(where each <rtsp-url-i> is a "rtsp://" URL)

     

    1) rtsp 서버 준비

    rtsp 서버를 준비하는 것도 귀찮은 일이다. IP CAM이 있다면 가장 편한 방법이고 없다면 VLC가 그나마 쉬운 방법이다.

     

    2) testRTSPClient 실행

     - rtsp 서버가 준비되었다면 서버를 시작하고 testRTSPClient를 실행해 보자.

     - 정상 동작이 되었다면 아래와 같이 스트림에 대한 정보가 표시되고 수신된 데이터 정보가 표시된다. rtsp에 사용한 영상이 video만 있어 video/H264 만 표시된다.

    busyman@busyman:~/play/bmNVR/lib/LIVE555/live/testProgs$ ./testRTSPClient rtsp://127.0.0.1:8554/test
    Created new TCP socket 3 for connection
    Connecting to 127.0.0.1, port 8554 on socket 3...
    ...remote connection opened
    Sending request: DESCRIBE rtsp://127.0.0.1:8554/test RTSP/1.0
    CSeq: 2
    User-Agent: ./testRTSPClient (LIVE555 Streaming Media v2023.07.24)
    Accept: application/sdp
    
    
    Received 204 new bytes of response data.
    Have received 204 total bytes of a DESCRIBE RTSP response; awaiting 424 bytes more.
    Received 424 new bytes of response data.
    Received a complete DESCRIBE response:
    RTSP/1.0 200 OK
    Server: VLC/3.0.18
    Date: Sat, 12 Aug 2023 12:50:05 GMT
    Content-Type: application/sdp
    Content-Base: rtsp://127.0.0.1:8554/test
    Content-Length: 424
    Cache-Control: no-cache
    Cseq: 2
    
    v=0
    o=- 16753951905447302629 16753951905447302629 IN IP4 busyman
    s=Unnamed
    i=N/A
    c=IN IP4 0.0.0.0
    t=0 0
    a=tool:vlc 3.0.18
    a=recvonly
    a=type:broadcast
    a=charset:UTF-8
    a=control:rtsp://127.0.0.1:8554/test
    m=video 0 RTP/AVP 96
    b=RR:0
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1;profile-level-id=4d001f;sprop-parameter-sets=Z00AH5Y1QKALdNwEBAQI,aO48gA==;
    a=control:rtsp://127.0.0.1:8554/test/trackID=1
    
    [URL:"rtsp://127.0.0.1:8554/test"]: Got a SDP description:
    v=0
    o=- 16753951905447302629 16753951905447302629 IN IP4 busyman
    s=Unnamed
    i=N/A
    c=IN IP4 0.0.0.0
    t=0 0
    a=tool:vlc 3.0.18
    a=recvonly
    a=type:broadcast
    a=charset:UTF-8
    a=control:rtsp://127.0.0.1:8554/test
    m=video 0 RTP/AVP 96
    b=RR:0
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1;profile-level-id=4d001f;sprop-parameter-sets=Z00AH5Y1QKALdNwEBAQI,aO48gA==;
    a=control:rtsp://127.0.0.1:8554/test/trackID=1
    
    [URL:"rtsp://127.0.0.1:8554/test"]: Initiated the "video/H264" subsession (client ports 57720-57721)
    Sending request: SETUP rtsp://127.0.0.1:8554/test/trackID=1 RTSP/1.0
    CSeq: 3
    User-Agent: ./testRTSPClient (LIVE555 Streaming Media v2023.07.24)
    Transport: RTP/AVP;unicast;client_port=57720-57721
    
    
    Received 270 new bytes of response data.
    Received a complete SETUP response:
    RTSP/1.0 200 OK
    Server: VLC/3.0.18
    Date: Sat, 12 Aug 2023 12:50:05 GMT
    Transport: RTP/AVP/UDP;unicast;client_port=57720-57721;server_port=55001-55002;ssrc=93B63C53;mode=play
    Session: 97b0cc940409c97;timeout=60
    Content-Length: 0
    Cache-Control: no-cache
    Cseq: 3
    
    
    [URL:"rtsp://127.0.0.1:8554/test"]: Set up the "video/H264" subsession (client ports 57720-57721)
    [URL:"rtsp://127.0.0.1:8554/test"]: Created a data sink for the "video/H264" subsession
    Sending request: PLAY rtsp://127.0.0.1:8554/test RTSP/1.0
    CSeq: 4
    User-Agent: ./testRTSPClient (LIVE555 Streaming Media v2023.07.24)
    Session: 97b0cc940409c97
    Range: npt=0.000-
    
    
    Received 269 new bytes of response data.
    Received a complete PLAY response:
    RTSP/1.0 200 OK
    Server: VLC/3.0.18
    Date: Sat, 12 Aug 2023 12:50:05 GMT
    RTP-Info: url=rtsp://127.0.0.1:8554/test/trackID=1;seq=52713;rtptime=232270630
    Range: npt=86.381167-
    Session: 97b0cc940409c97;timeout=60
    Content-Length: 0
    Cache-Control: no-cache
    Cseq: 4
    
    
    [URL:"rtsp://127.0.0.1:8554/test"]: Started playing session...
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 6399 bytes.	Presentation time: 1691844605.970419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5230 bytes.	Presentation time: 1691844606.003419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4814 bytes.	Presentation time: 1691844606.037419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 15 bytes.	Presentation time: 1691844606.070419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4 bytes.	Presentation time: 1691844606.070419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5 bytes.	Presentation time: 1691844606.070419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 46432 bytes.	Presentation time: 1691844606.070419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4848 bytes.	Presentation time: 1691844606.103419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4616 bytes.	Presentation time: 1691844606.137419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4629 bytes.	Presentation time: 1691844606.170419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4620 bytes.	Presentation time: 1691844606.203419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4911 bytes.	Presentation time: 1691844606.236419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4665 bytes.	Presentation time: 1691844606.270419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4390 bytes.	Presentation time: 1691844606.303419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4923 bytes.	Presentation time: 1691844606.337419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4802 bytes.	Presentation time: 1691844606.370419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4701 bytes.	Presentation time: 1691844606.403419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4665 bytes.	Presentation time: 1691844606.436419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4890 bytes.	Presentation time: 1691844606.470419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4749 bytes.	Presentation time: 1691844606.503419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4830 bytes.	Presentation time: 1691844606.536419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4830 bytes.	Presentation time: 1691844606.570419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4747 bytes.	Presentation time: 1691844606.603419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4648 bytes.	Presentation time: 1691844606.636419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4827 bytes.	Presentation time: 1691844606.670419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5137 bytes.	Presentation time: 1691844606.703419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4780 bytes.	Presentation time: 1691844606.736419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 6438 bytes.	Presentation time: 1691844606.770419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5161 bytes.	Presentation time: 1691844606.803419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5151 bytes.	Presentation time: 1691844606.836419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5303 bytes.	Presentation time: 1691844606.870419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 15 bytes.	Presentation time: 1691844606.903419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4 bytes.	Presentation time: 1691844606.903419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5 bytes.	Presentation time: 1691844606.903419!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 46219 bytes.	Presentation time: 1691844606.903419!

     

    3) 테스트 프로그램을 약간 수정해 보자. 아래와 같이 수신한 데이터의 첫 4byte를 출력해 보면 NAL packet 단위로 수신되는 것을 확인할 수 있다. 188byte 단위로 전송되지만 LIVE555에서 frame 단위로 만들어 줌으로써 뒷 단 처리의 수고를 덜 수 있다.

    void DummySink::afterGettingFrame(unsigned frameSize, unsigned numTruncatedBytes,
                                      struct timeval presentationTime, unsigned /*durationInMicroseconds*/) {
      // We've just received a frame of data.  (Optionally) print out information about it:
    #ifdef DEBUG_PRINT_EACH_RECEIVED_FRAME
      if (fStreamId != NULL) envir() << "Stream \"" << fStreamId << "\"; ";
      envir() << fSubsession.mediumName() << "/" << fSubsession.codecName() << ":\tReceived " << frameSize << " bytes";
      if (numTruncatedBytes > 0) envir() << " (with " << numTruncatedBytes << " bytes truncated)";
    
      char uHexDump[(4*4)+1];
      sprintf(uHexDump, "[%02X][%02X][%02X][%02X]", fReceiveBuffer[0], fReceiveBuffer[1], fReceiveBuffer[2], fReceiveBuffer[3]);
      envir() << ".\t" << uHexDump;
    
      char uSecsStr[6+1]; // used to output the 'microseconds' part of the presentation time
      sprintf(uSecsStr, "%06u", (unsigned)presentationTime.tv_usec);
      envir() << "\tPresentation time: " << (int)presentationTime.tv_sec << "." << uSecsStr;
      if (fSubsession.rtpSource() != NULL && !fSubsession.rtpSource()->hasBeenSynchronizedUsingRTCP()) {
        envir() << "!"; // mark the debugging output to indicate that this presentation time is not RTCP-synchronized
      }
    #ifdef DEBUG_PRINT_NPT
      envir() << "\tNPT: " << fSubsession.getNormalPlayTime(presentationTime);
    #endif
      envir() << "\n";
    #endif
    
      // Then continue, to request the next frame of data:
      continuePlaying();
    }

     

    [URL:"rtsp://127.0.0.1:8554/test"]: Started playing session...
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5004 bytes.	[61][E0][C0][00]	Presentation time: 1691847432.768619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4894 bytes.	[61][E0][E0][00]	Presentation time: 1691847432.801619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4827 bytes.	[61][E1][00][01]	Presentation time: 1691847432.835619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4956 bytes.	[61][E1][20][01]	Presentation time: 1691847432.868619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5509 bytes.	[61][E1][40][01]	Presentation time: 1691847432.901619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4724 bytes.	[61][E1][60][01]	Presentation time: 1691847432.935619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5130 bytes.	[61][E1][80][01]	Presentation time: 1691847432.968619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5697 bytes.	[61][E1][A0][01]	Presentation time: 1691847433.001619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5017 bytes.	[61][E1][C0][01]	Presentation time: 1691847433.035619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5282 bytes.	[61][E1][E0][01]	Presentation time: 1691847433.068619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5482 bytes.	[61][E2][00][02]	Presentation time: 1691847433.101619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5520 bytes.	[61][E2][20][02]	Presentation time: 1691847433.135619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5073 bytes.	[61][E2][40][02]	Presentation time: 1691847433.168619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5162 bytes.	[61][E2][60][02]	Presentation time: 1691847433.201619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5313 bytes.	[61][E2][80][02]	Presentation time: 1691847433.235619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 7349 bytes.	[61][E2][A0][02]	Presentation time: 1691847433.268619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5122 bytes.	[61][E2][C0][02]	Presentation time: 1691847433.301619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5632 bytes.	[61][E2][E0][02]	Presentation time: 1691847433.335619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5126 bytes.	[61][E3][00][03]	Presentation time: 1691847433.368619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 15 bytes.	[67][4D][00][1F]	Presentation time: 1691847433.401619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4 bytes.	[68][EE][3C][80]	Presentation time: 1691847433.401619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5 bytes.	[06][E5][01][30]	Presentation time: 1691847433.401619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 46604 bytes.	[65][B8][00][00]	Presentation time: 1691847433.401619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4927 bytes.	[61][E0][20][00]	Presentation time: 1691847433.435619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4634 bytes.	[61][E0][40][00]	Presentation time: 1691847433.468619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4855 bytes.	[61][E0][60][00]	Presentation time: 1691847433.501619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4647 bytes.	[61][E0][80][00]	Presentation time: 1691847433.535619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4863 bytes.	[61][E0][A0][00]	Presentation time: 1691847433.568619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 4885 bytes.	[61][E0][C0][00]	Presentation time: 1691847433.601619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5214 bytes.	[61][E0][E0][00]	Presentation time: 1691847433.635619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5074 bytes.	[61][E1][00][01]	Presentation time: 1691847433.668619!
    Stream "rtsp://127.0.0.1:8554/test"; video/H264:	Received 5030 bytes.	[61][E1][20][01]	Presentation time: 1691847433.701619!

     

    댓글