본문으로 건너뛰기

일반적인 작업 흐름

표준 테스트 비디오를 가져옵니다.​

예시, 연기 테스트 또는 다중 스트림 검증에 사용할 수 있는 반복 가능한 미디어가 필요할 때는 표준 비디오 세트를 사용하세요.

https://artifacts.sima-neat.com/assets/videos/720p16/video01.mp4
...
https://artifacts.sima-neat.com/assets/videos/720p16/video16.mp4

https://artifacts.sima-neat.com/assets/videos/480p30/video01.mp4
...
https://artifacts.sima-neat.com/assets/videos/480p30/video16.mp4

수동으로 사용하려면 필요한 파일을 다운로드하여 미디어 소스에서 업로드하십시오.

API 기반 설정의 경우, 다음을 확인하십시오. Insight 이미 미디어 파일이 있습니다.

curl -k https://127.0.0.1:9900/api/media-files

미디어 라이브러리가 비어 있으면 표준 비디오를 다운로드하여 업로드하십시오.

tmpdir="$(mktemp -d)"
curl -fL "https://artifacts.sima-neat.com/assets/videos/480p30/video01.mp4" \
-o "${tmpdir}/video01.mp4"
curl -k -F "file=@${tmpdir}/video01.mp4" \
https://127.0.0.1:9900/api/upload/media

다른 파일에 대해서도 이 과정을 반복하거나, 더 많은 미디어 파일을 한 번에 업로드하려면 압축 파일을 업로드하세요.

단일 스트림 비전 앱을 검증합니다.​

  1. Insight를 엽니다.
  2. 미디어 소스로 이동하여 짧은 테스트 비디오를 업로드하세요.
  3. 스트리밍 소스로 이동하여 비디오를 src1에 할당합니다.
  4. 시작 src1.
  5. 올바른 RTSP URL을 사용하여 애플리케이션을 실행하세요.
    • SDK 컨테이너 내부: rtsp://127.0.0.1:8554/src1
    • DevKit 또는 외부 장치에서: rtsp://<sdk-host-ip>:<rtsp.tcp hostPortStart>/src1
  6. 비디오 뷰어를 열고 채널 0을 시청하세요.
  7. 앱에서 메타데이터를 전송하는 경우, 비디오에 오버레이가 표시되는지 확인하세요.
  8. 다음 버전에서 시스템 부하 진단 정보가 표시될 위치를 확인하려면 ‘통계’ 자리 표시자를 사용하세요.

라이브 웹캠으로 애플리케이션 검증하기​

녹화 파일 대신 실제 카메라로 애플리케이션을 테스트하려면 이 워크플로를 사용합니다. 웹캠은 보드가 아니라 브라우저가 실행되는 컴퓨터에 연결됩니다. 브라우저가 Insight에 게시하면 Insight는 이를 일반 RTSP 소스로 제공하며, 애플리케이션은 파일과 동일하게 사용합니다.

  1. HTTPS로 Insight를 열고 브라우저가 인증서를 신뢰하는지 확인합니다.
  2. Streaming Sources에서 src1의 파일 필드를 선택하고 src1 소스 대화 상자를 카메라로 전환합니다.
  3. 카메라 접근 활성화를 선택하고 브라우저가 요청하면 접근을 허용한 다음, 카메라를 선택하고 할당합니다. 카메라를 할당하면 행에 [CAM] 표시가 나타납니다.
  4. src1을 시작하고 슬롯에 Live가 표시되며 미리보기에 카메라가 나타나는지 확인합니다.
  5. 파일 소스와 동일한 RTSP URL로 애플리케이션을 실행합니다. Insight는 웹캠을 파일 소스와 동일한 규칙적인 키프레임을 가진 베이스라인 H.264로 정규화하므로 보드의 하드웨어 디코더와 GStreamer rtspsrc가 추가 단계 없이 사용합니다. 수동 ffmpeg 실행이나 별도 경로는 필요 없습니다:
    • SDK 컨테이너 내부: rtsp://127.0.0.1:8554/src1
    • DevKit 또는 외부 머신: rtsp://<sdk-host-ip>:<rtsp.tcp hostPortStart>/src1
  6. Video Viewer를 열고 채널 0을 확인합니다.

웹캠을 게시하는 동안 브라우저 탭을 보이는 상태로 전면에 유지합니다. 탭이 Insight로 비디오를 보내며, 브라우저는 숨겨지거나 백그라운드에 있는 탭의 동작을 제한하여 스트림이 끊깁니다. 탭 닫기, 카메라 분리 또는 중지 선택은 스트림을 종료합니다.

Insight가 SDK 안에서 실행되면 브라우저는 애플리케이션의 RTSP 포트 외에도 neat --json에 표시되는 webrtcWhip 호스트 포트에 접근할 수 있어야 합니다. 포트 및 네트워크 동작을 참조하세요.

여러 입력 스트림을 검증합니다.​

  1. 미디어 소스에서 여러 개의 비디오를 업로드하거나 준비합니다.
  2. 스트리밍 소스 사용 Auto Assign 비디오를 소스 슬롯에 매핑합니다.
  3. 애플리케이션에서 예상하는 소스 수에 대해 Bulk Start를 사용하여 시작합니다.
  4. 해당하는 srcN 스트림 URL을 사용하여 애플리케이션을 실행합니다.
  5. 예상되는 채널로 설정하여 비디오 뷰어를 엽니다.
  6. 뷰어 진단 기능을 사용하여 스트림 병목 현상을 확인합니다. 통계 뷰는 이번 버전에 임시로 포함되었으며, 다음 버전에서는 런타임 병목 현상 진단 기능을 추가할 예정입니다.

애플리케이션이 SDK 컨테이너 외부에서 실행될 때, 테스트를 시작하기 전에 neat --json에서 RTSP, 비디오 UDP 및 메타데이터 UDP 호스트 포트를 확인합니다.

외부 도구에서 스트리밍​

  1. 스트리밍 소스를 열고 유휴 상태로 표시된 슬롯을 선택합니다.
  2. 호스트에서 해당 슬롯으로 게시합니다. 예: ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset veryfast -tune zerolatency -g 30 -pix_fmt yuv420p -f rtsp -rtsp_transport tcp rtsp://<insight-host>:8554/src2
  3. 슬롯이 외부로 바뀝니다. 슬롯을 선택하고 미리보기를 켜서 화면을 확인합니다. 첫 프레임은 게시자의 다음 키프레임에서 나타나므로 키프레임 간격을 짧게 유지하십시오(위의 -g 30).
  4. 다른 소스와 마찬가지로 슬롯의 RTSP URL을 대상으로 애플리케이션을 실행합니다.
  5. 슬롯을 파일용으로 재사용하려면 외부 도구를 중지하거나 인수를 누릅니다.

sima-ai/tool-mediasources(mediasrc.sh)는 같은 RTSP 포트에서 자체 MediaMTX를 시작하고 스트림 번호를 src0부터 매깁니다. 둘 다 실행하지 말고, 다른 포트에서 실행하거나 대신 Insight의 슬롯을 사용하십시오.

IP 카메라를 슬롯으로 끌어오기​

  1. 스트리밍 소스를 열고 유휴 상태로 표시된 슬롯의 파일 버튼을 클릭합니다.
  2. 대화 상자를 스트림 URL로 전환하고 카메라의 RTSP URL(예: rtsp://192.168.1.10:554/h264Preview_01_main)과 사용자 이름 및 비밀번호를 입력한 다음 끌어오기를 누릅니다.
  3. 슬롯에 연결 중…이 표시된 다음, 코덱, 해상도, 프레임 속도와 함께 끌어옴이 표시됩니다. 연결 불가는 카메라가 응답하지 않았다는 뜻입니다(Insight가 계속 재시도함). 끌어오기를 누를 때 카메라가 사용자 이름이나 비밀번호를 거부하면 대화 상자에 메시지가 표시되고 슬롯은 변경되지 않습니다. 행의 인증 실패는 카메라가 나중에(예: 처음에는 연결할 수 없었던 후) 자격 증명을 거부하기 시작했다는 뜻입니다. 중지를 누르고 다시 끌어오십시오.
  4. 다른 소스와 마찬가지로 슬롯의 RTSP URL을 대상으로 애플리케이션을 실행합니다. Neat 파이프라인은 H.264, H.265, MJPEG 카메라만 디코딩할 수 있으며, 그 외의 경우 코덱 셀이 호박색으로 바뀝니다.
  5. 슬롯을 해제하려면 행에서 중지를 누릅니다.

SDK 포트 맵에서 애플리케이션 엔드포인트를 구성합니다.​

애플리케이션이 DevKit에서 실행되고 Insight이 SDK 내에서 실행될 때 이 워크플로를 사용하세요.

  1. SDK에서 Insight가 실행 중인지 확인하세요.

    insight-admin status
  2. SDK 포트 맵을 확인하세요.

    neat --json
  3. insight.webUiUrl에서 SDK 호스트 IP를 찾거나, SDK 설정 과정에서 출력되는 호스트 IP를 사용하세요.

  4. exposedPorts에서 rtsp.tcp.hostPortStart, videoUDP.hostPortStart 및 metadataUDP.hostPortStart를 찾으세요.

  5. 다음과 같이 애플리케이션 입력 스트림을 구성합니다.

    rtsp://<sdk-host-ip>:<rtsp.tcp hostPortStart>/src1
    rtsp://<sdk-host-ip>:<rtsp.tcp hostPortStart>/src2
  6. 채널별로 애플리케이션 출력 포트를 구성합니다.

    video channel N: <sdk-host-ip>:<videoUDP hostPortStart + N>
    metadata channel N: <sdk-host-ip>:<metadataUDP hostPortStart + N>
  7. 애플리케이션을 실행하고 비디오 뷰어를 엽니다.

  8. 시청자가 비디오를 보지 못하는 경우 /api/ingest/stats를 사용하세요. 이 기능은 브라우저 또는 WebRTC 동작을 디버깅하기 전에 RTP 및 메타데이터가 Insight에 제대로 전달되는지 여부를 알려줍니다.

비디오 또는 오버레이가 제대로 표시되지 않는 문제를 해결합니다.​

다음 단계를 따라 문제의 원인을 파악하십시오.

  1. 애플리케이션이 실행 중이고 올바른 Insight 호스트를 대상으로 하는지 확인합니다.
  2. 애플리케이션이 SDK 컨테이너 내부에서 실행 중인지, 아니면 외부 장치에서 실행 중인지 확인합니다.
  3. 외부 소스인 경우, neat --json에서 매핑된 videoUDP 및 metadataUDP 호스트 포트를 사용하는지 확인하십시오.
  4. SDK 컨테이너 내부에 있는 경우, 출력 비디오 포트가 9000-9079에 있는지 확인하십시오.
  5. 메타데이터를 사용하는 경우, 메타데이터 포트가 메타데이터 UDP 범위 내의 해당 채널과 일치하는지 확인합니다.
  6. 비디오 뷰어를 열고 예상되는 채널을 확인하세요.
  7. 시스템 정보를 사용하여 Insight가 기본 포트 또는 SDK에 매핑된 포트를 사용하는지 확인하십시오.
  8. 시스템 정보와 로그를 사용하여 장치 상태를 확인하세요. 현재 'Stats'는 임시 기능이며, 다음 버전에서는 장치 부하 및 런타임 상태를 포함하도록 개선될 예정입니다.

비디오는 표시되지만 오버레이가 보이지 않는 경우, 메타데이터 경로에 집중하십시오. 오버레이가 지연되거나 동기화되지 않은 상태로 표시되는 경우, 뷰어의 메타데이터 지연 설정을 조정하십시오.

JPEG 스트림(RTP 페이로드 유형 26)의 경우 다음 사항도 확인하십시오.

  • 모든 RTP 패킷이 4096바이트 이하인지 확인합니다. rtpjpegpay mtu=를 4096 이하(예: 1400)로 설정하십시오.
  • 페이로더가 timestamp-offset=0으로 실행되어 90kHz RTP 타임스탬프가 메타데이터의 PTS와 일치하는지 확인합니다. 그렇지 않으면 오버레이가 프레임과 일치하지 않습니다.
  • JPEG가 베이스라인이고 4:2:0 또는 4:2:2이며 각 변이 2040픽셀 이하인지 확인합니다. 뷰어가 사용할 수 없는 프레임은 /api/ingest/stats?verbose=1의 forwarding.frames_dropped_incomplete에 집계되며, 그 이유는 diagnostics.recent_errors에 표시됩니다.
  • /api/egress/stats에서 각 뷰어의 jpeg.frames_dropped_backpressure는 해당 브라우저가 뒤처져서 건너뛴 프레임 수를 나타냅니다. 뷰어는 항상 최신 프레임을 표시합니다.

팁​

  • 새로운 앱 루프를 구축할 때 짧은 미디어 클립을 사용하세요. 이렇게 하면 소스 설정과 반복적인 검증을 더 빠르게 수행할 수 있습니다.
  • HTTP를 통해 멀티파트 MJPEG를 전송하는 카메라를 시뮬레이션해야 할 경우 HTTP MJPEG 소스를 사용하세요.
  • 채널 번호를 일관되게 유지합니다. 비디오가 채널 N로 전송되는 경우, 동일한 채널 N의 메타데이터 포트로 메타데이터를 전송합니다.
  • 파일을 환경에서 복사하기 전에 생성된 모델과 프로파일링 결과물을 검토하려면 작업 공간 보기를 사용하세요.
  • 새로운 개발자에게 해당 도구를 소개할 때 Insight UI의 오른쪽 상단에 있는 빠른 사용법 안내 기능을 활용하세요.
  • 포트가 잘못되었다고 단정하기 전에 시스템 정보를 확인하세요. SDK 배포 시 브라우저에 표시되는 포트와 내부 서비스 포트가 다를 수 있습니다.