임베디드 관련 카테고리/Embedded System

GStreamer를 사용한 TX2에서 Windows PC로 RTSP-TCP 통신 영상 송출 가이드

CBJH 2024. 12. 3.
728x90
반응형

 

이번 글에서는 NVIDIA TX2에서 Windows 10 PCGStreamer를 활용하여 RTSP-TCP 방식으로 영상을 송출하고, PC에서 수신하는 방법을 다룹니다. 초보 개발자도 이해하기 쉽도록 하나씩 차근차근 설명하겠습니다.


1. 개요

GStreamer란?

GStreamer는 다양한 멀티미디어 애플리케이션을 구축할 수 있는 프레임워크로, 영상 처리스트리밍을 효율적으로 처리할 수 있는 도구입니다.

이번 설정에서는:

  • **TX2 (Ubuntu)**에서 USB 카메라 영상을 인코딩하여 RTSP-TCP 방식으로 송출.
  • Windows 10에서 GStreamer를 이용해 영상을 수신하여 재생.

2. 준비물

  1. NVIDIA TX2 개발 보드 (Ubuntu OS).
  2. Windows 10 PC.
  3. GStreamer 설치 (각 운영체제에 맞게 설치).
  4. 네트워크 연결 (TX2와 PC는 같은 네트워크에 연결되어야 함).

3. TX2에서 RTSP 서버 실행

먼저, TX2에서 GStreamer를 설치하고 RTSP 서버를 실행합니다.

3.1 GStreamer 설치

Ubuntu에서 GStreamer를 설치하려면 아래 명령어를 실행하세요:

sudo apt update
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-rtsp
  • gstreamer1.0-tools: GStreamer 기본 명령어 도구.
  • gstreamer1.0-plugins-*: 다양한 미디어 포맷 지원 플러그인.
  • gstreamer1.0-rtsp: RTSP 프로토콜 지원 플러그인.

3.2 RTSP 서버 실행

카메라 입력을 송출하기 위해 아래 명령어를 실행하세요:

gst-launch-1.0 -v v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720,framerate=30/1 ! videoconvert ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay config-interval=1 pt=96 ! udpsink host=<Windows_PC_IP> port=5000

명령어 설명

  • v4l2src device=/dev/video0: 비디오 장치(/dev/video0)에서 입력을 받습니다.
  • video/x-raw,width=1280,height=720,framerate=30/1: 1280x720 해상도, 30fps로 영상 처리.
  • videoconvert: 입력 영상을 변환합니다.
  • x264enc tune=zerolatency bitrate=500 speed-preset=superfast:
    • tune=zerolatency: 지연을 최소화.
    • bitrate=500: 500kbps로 압축.
    • speed-preset=superfast: 빠른 인코딩 속도.
  • rtph264pay: H.264로 인코딩된 영상을 RTP 패킷으로 포장.
  • udpsink host=<Windows_PC_IP> port=5000: 지정한 IP와 포트로 데이터를 전송합니다.
    • <Windows_PC_IP>: 송출할 Windows PC의 IP 주소를 입력하세요.

4. Windows 10에서 영상 수신

Windows 10에서는 GStreamer를 이용하여 TX2에서 송출된 영상을 수신합니다.

4.1 GStreamer 설치

  1. GStreamer 다운로드 페이지에서 RuntimeDevelopment를 모두 설치합니다.
  2. 설치 후 GStreamer의 bin 경로를 환경 변수 PATH에 추가합니다.

Runtime과 Development 설치 히 Complete로 설치해야 H264 코덱을 포함한 필수 패키지들이 함께 설치된다.


4.2 GStreamer 명령어 실행

아래 명령어를 PowerShell 또는 CMD에서 실행하여 TX2에서 송출된 영상을 수신합니다:

gst-launch-1.0 -v udpsrc port=5000 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! decodebin ! autovideosink

명령어 설명

  • udpsrc port=5000: 5000번 포트에서 데이터를 수신.
  • application/x-rtp,encoding-name=H264,payload=96: RTP 패킷의 데이터 형식을 지정.
  • rtph264depay: RTP 패킷에서 H.264 데이터를 추출.
  • decodebin: 적절한 디코더를 자동으로 선택.
  • autovideosink: 추출된 영상을 화면에 표시.

5. 결과 확인

  • TX2에서 스트리밍 명령을 실행하고, Windows PC에서 수신 명령을 실행하면 영상이 표시됩니다.
  • 영상이 표시되지 않을 경우, 네트워크 연결 및 방화벽 설정을 확인하세요.

6. 디버깅

영상이 표시되지 않을 때 확인할 사항:

  1. 네트워크 연결: 송신 IP와 수신 IP가 올바른지 확인하세요.
  2. 방화벽 설정: Windows 방화벽에서 5000번 포트를 허용했는지 확인합니다.
  3. 디버깅 로그 활성화: 수신 측에서 디버그 정보를 활성화하려면 아래 명령어를 사용하세요:
    GST_DEBUG=3 gst-launch-1.0 -v udpsrc port=5000 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! decodebin ! autovideosink

7. 추가 팁

  1. VLC 플레이어 사용: GStreamer 대신 VLC를 사용해 영상을 수신할 수 있습니다.
    • VLC 실행 → "미디어" → "네트워크 스트림 열기" → udp://@:5000 입력 → 재생 클릭.
  2. RTSP 프로토콜로 전환: RTSP는 TCP 기반으로 안정적인 전송이 가능합니다. RTSP 서버 설정 방법은 별도 글에서 다룹니다.

 

댓글