메인 콘텐츠로 건너뛰기
dweOS는 GStreamer를 통한 스트리밍을 공식적으로 지원하지 않습니다. 다음 단계는 Linux와 Windows에서만 적용됩니다.참고: 이로 인해 스트림 품질이 저하될 수 있습니다.
GStreamer는 단일 비디오 스트림을 설정하는 것조차 매우 복잡하고 정교할 수 있습니다. 다중 스트림이나 실시간 녹화 등 편의 기능 대부분은 사용자 인터페이스가 제공되는 Discovery에서 훨씬 간단하게 사용할 수 있습니다.
1

dweOS 확인

dweOS 설정을 마친 후 다음 단계로 진행합니다.
스트리밍 대상 포트를 적어 두세요.
2

GStreamer 설치

터미널에서 다음을 실행합니다:
sudo apt update
그런 다음 GStreamer를 설치하려면 다음을 실행합니다:
sudo apt install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools                
GStreamer 설정을 확인하려면 CMD를 열고 다음을 실행합니다:
gst-launch-1.0 --version
다음과 같은 출력이 표시되어야 합니다:
gst-launch-1.0 version 1.16.2
GStreamer 1.16.2
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
3

GStreamer 명령줄용 변수 식별

연결된 장치의 비디오 스트림을 연결하려면, 먼저 dweOS를 구성합니다.
1
먼저 노트북/데스크톱의 IP 주소를 확인합니다. 이 주소를 dweOS 소프트웨어에 입력하게 됩니다.다음을 실행하여 확인할 수 있습니다:
ip addr
많은 주소가 표시되지만, 특히 inet 뒤에 나오는 주소를 살펴보세요.
대부분의 경우 192.168.x.xx 형식입니다.
2
확인한 IP를 dweOS의 IP 주소 필드에 입력하고, 스트리밍 대상 포트를 적어 둡니다(기본값 5600).
필드를 채운 후 (+) 버튼으로 스트리밍 엔드포인트를 생성하는 것을 잊지 마세요!
이 예시에서 확인한 IP는 192.168.5.55이고 포트는 5600입니다.dweOS 엔드포인트
포트 필드가 5601로 설정되는 것은 프로그램에서 자동으로 표시되는 것이며, 실제로 스트리밍 중인 엔드포인트에만 카메라 아이콘과 삭제용 휴지통 버튼이 표시됩니다.
3
GStreamer의 형식은 다음과 같습니다:
gst-launch-1.0 [FLAGS] [SOURCE] ! [FILTER] ! [SINK]
포트를 염두에 두고, GStreamer 명령에서 알아두어야 할 매개변수가 몇 가지 있습니다.중요 플래그:
  • -v(Verbose): 스트림 정보를 출력하여 요소 간에 협상된 해상도/포맷을 확인할 수 있습니다.
  • -e(EOS - End of Stream): 녹화에 매우 중요합니다. 이 플래그 없이 Ctrl+C를 누르면 파일이 손상(헤더 누락)될 수 있습니다. 이 플래그는 깔끔한 종료를 강제합니다.
  • --help-all: 시스템에서 사용 가능한 모든 요소를 나열합니다.
소스(입력):
  • videotestsrc: 테스트 패턴(컬러 바, 노이즈 등)을 생성합니다.
  • 매개변수: pattern=smpte (또는 snow, ball 등)
  • autovideosrc / v4l2src: 웹캠(Linux).
  • 매개변수: device=/dev/video0
  • filesrc: 로컬 파일을 읽습니다.
  • 매개변수: location=./video.mp4
  • udpsrc: UDP를 통해 네트워크 데이터를 수신합니다.
    • 매개변수: port=5600 (수신 포트).
    • 매개변수: caps="..." (필수! 원시 바이트가 실제로 무엇인지 GStreamer에 알려줍니다).
    • 매개변수: buffer-size=524288 (고해상도 스트림에서 패킷 손실을 방지하기 위해 버퍼를 늘립니다).
      • H264의 표준 버퍼 크기는 96이고 MJPEG은 26입니다.
싱크(출력)
  • autovideosink: 창을 열고 비디오를 재생합니다.
  • fakesink: 데이터를 폐기합니다(파이프라인이 오류 없이 실행되는지 테스트할 때 유용).
  • filesink: 파일에 씁니다.
  • 매개변수: location=output.mp4
  • udpsink: 네트워크를 통해 스트리밍합니다.
필수 요소(필터/컨버터)
  • videoconvert: 색공간을 변환합니다(예: YUV에서 RGB로). “could not link” 오류가 발생하면 중간에 삽입하세요.
  • videoscale: 비디오 크기를 조정합니다.
  • capsfilter: 특정 형식을 강제합니다. 구문: video/x-raw,width=1920,height=1080.
  • rtp[format]depay: 디페이로더. RTP 네트워크 패킷의 포장을 풀어 내부 스트림을 드러냅니다.
    • 예시: rtpjpegdepay (MJPEG용), rtph264depay (H.264용).
  • [format]dec: 디코더. 비디오를 표시용 원시 픽셀로 압축 해제합니다.
    • 예시: jpegdec, avdec_h264.
4
GStreamer를 테스트하기 위한 명령 예시 몇 가지입니다:테스트 패턴
gst-launch-1.0 -v videotestsrc ! videoconvert ! autovideosink
웹캠 표시(가능한 경우)
gst-launch-1.0 -v v4l2src ! videoconvert ! autovideosink
웹캠을 720p 30fps로 강제
gst-launch-1.0 -v v4l2src ! image/jpeg,width=1280,height=720,framerate=30/1 ! jpegdec ! videoconvert ! autovideosink
고해상도의 경우, 비디오 출력은 보통 압축된 MJPEG입니다.image/jpeg는 카메라에서 오는 압축된 형식을 받아들입니다.jpegdec는 디코더를 추가하여 해당 JPEG 스트림을 원시 비디오로 되돌려 창에서 표시할 수 있게 합니다.
웹캠 녹화
gst-launch-1.0 -e v4l2src ! videoconvert ! x264enc ! mp4mux ! filesink location=test.mp4
이 명령은 백그라운드에서 녹화하며, 클립을 마치려면 Ctrl + C를 누르세요. 그러면 현재 디렉터리에 파일이 저장됩니다.이 예시에서 파일 이름은 test.mp4이며, ls -lh test.mp4로 존재를 확인할 수 있습니다.
4

dweOS에서의 스트리밍 설정

GStreamer 명령에 대한 이해를 바탕으로, dweOS에 맞는 비디오 스트림을 설정해 보겠습니다.
스트리밍 엔드포인트의 IP에는 반드시 본인의 IP를 설정해야 한다는 점을 잊지 마세요!
dweOS에서 지정한 비디오 코덱(MJPEG / H264)에 따라 다음 중 하나를 실행합니다:MJPEG
gst-launch-1.0 udpsrc port=5600 caps="application/x-rtp, encoding-name=JPEG, payload=26" ! rtpjpegdepay ! jpegdec ! autovideosink
H264
gst-launch-1.0 udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! avdec_h264 ! autovideosink
명령줄의 포트 번호는 반드시 스트리밍 대상 포트로 바꿔야 한다는 점을 잊지 마세요!
이제 카메라의 라이브 스트림이 창에 표시되어야 합니다!
5

녹화 설정

스트림을 녹화하려면, 다시 한번 비디오 코덱이 중요합니다!터미널에 다음과 비슷한 텍스트가 표시되면 스트림이 녹화되고 있음을 알 수 있습니다:GStreamer 녹화MJPEGMKV용
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=JPEG, payload=26" ! rtpjpegdepay ! jpegparse ! matroskamux ! filesink location=output_mjpeg.mkv
위 줄은 MKV 형식용입니다. AVI는 GStreamer에서 다루기가 매우 까다로워 출력 데이터를 매우 특정한 방식으로 형식화해야 하기 때문입니다. 가능은 하지만, MJPEG에서 AVI로 변환하는 것은 기본 출력으로 사용하는 Discovery에서 훨씬 간단합니다.
H264MKV용
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! h264parse ! matroskamux ! filesink location=output_h264.mkv
MP4용
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! h264parse ! video/x-h264,stream-format=avc ! mp4mux ! filesink location=video.mp4
6

완료!

훌륭합니다! 이제 GStreamer로 스트림과 녹화를 설정하기 위한 기본 요소를 모두 갖추셨습니다!
경고:GStreamer에서는 단일 카메라 설정만으로도 이미 상당한 작업이 필요하며, 여러 스트림을 동시에 녹화하는 것도 상당한 작업과 개발이 필요합니다.카메라 구성이 복잡해진다면 Discovery 사용을 권장합니다.

Discovery 다운로드

잠수용 네트워크 비디오 스트림을 위한 올인원 멀티미디어 솔루션.