GStreamer-Java : RTSP- 소스에서 UDP- 싱크로

멜론 스키

저는 현재 화상 통화에서 IP- 웹캠에서 SIP 사용자에게 RTP-Stream을 전달 (나중에 트랜스 코딩)하는 프로젝트를 진행하고 있습니다.

다음과 같은 gstreamer 파이프 라인을 생각해 냈습니다.

  gst-launch -v rtspsrc location="rtsp://user:[email protected]:554/axis-media/media.amp?videocodec=h264" ! rtph264depay ! rtph264pay ! udpsink sync=false host=xxx.xxx.xx.xx port=xxxx

아주 잘 작동합니다. 이제 Java를 사용하여이 파이프 라인을 만들고 싶습니다. 다음은 파이프를 만드는 코드입니다.

    Pipeline pipe = new Pipeline("IPCamStream");

    // Source
    Element source = ElementFactory.make("rtspsrc", "source");
    source.set("location", ipcam);

    //Elements
    Element rtpdepay = ElementFactory.make("rtph264depay", "rtpdepay");
    Element rtppay = ElementFactory.make("rtph264pay", "rtppay");

    //Sink
    Element udpsink = ElementFactory.make("udpsink", "udpsink");
    udpsink.set("sync", "false");
    udpsink.set("host", sinkurl);
    udpsink.set("port", sinkport);


    //Connect
    pipe.addMany(source, rtpdepay, rtppay, udpsink);
    Element.linkMany(source, rtpdepay, rtppay, udpsink);


    return pipe;

파이프 라인을 시작 / 설정할 때 wireshark를 사용하여 카메라의 입력을 볼 수 있지만 안타깝게도 UDP-Sink 로의 전송이 없습니다. 코드에서 실수를 몇 번 확인했으며 파일 (filesrc)에서 동일한 udpsink로 스트리밍하기위한 파이프 라인도 설정했으며 제대로 작동합니다.

그러나 UDP-Sink로 IP-Cam의 "전달"이이 Java-Pipeline에서 작동하지 않는 이유는 무엇입니까?

mpr

Java 버전의 GStreamer를 사용하지는 않았지만 링크 할 때 알아야 할 사항은 때때로 요소의 소스 패드를 즉시 사용할 수 없다는 것입니다.

gst-inspect rtspsrc 를 수행 하고 패드를 살펴보면 다음과 같이 표시됩니다.

Pad Templates: 
  SRC template: 'stream_%u'
    Availability: Sometimes
    Capabilities:
      application/x-rtp
      application/x-rdt

"가용성 : 가끔"은 초기 링크가 실패한다는 것을 의미합니다. 원하는 소스 패드는 몇 개의 RTP 패킷이 도착한 후에 만 ​​나타납니다.

이 경우 패드가 추가 된 이벤트 를 기다리면서 수동으로 요소를 연결해야 하거나 C에서 원하는 작업은 gst_parse_bin_from_description 함수를 사용하는 입니다. Java에도 비슷한 것이있을 것입니다. 패드가 추가 된 이벤트에 대한 리스너를 자동으로 추가하고 파이프 라인을 연결합니다.

gst-launch는 이러한 동일한 parse_bin 함수를 사용한다고 생각합니다. 그것이 항상 일을 잘 연결하는 이유입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

여러 UDP 싱크가있는 GStreamer 파이프 라인 (이미지 포함)

Gstreamer 또는 ffmpeg를 사용하여 Android에서 rtsp 클라이언트 만들기

gstreamer 1.0을 사용하여 UDP를 통해 PC로 웹캠 비디오 스트리밍

FFmpeg / LibAV에서 RTSP / UDP 버퍼 크기 설정

Gstreamer에서 RTSP를 통한 데이터 전송

Gstreamer 1.0 소스 1 개와 싱크 디스플레이 2 개

GStreamer의 HTTPS 비디오 스트리밍을 통한 RTSP

gstreamer rtsp 서버 파이프 라인에 opencv 프레임 작성

Gstreamer를 사용하여 바이너리 이미지 데이터에서 Gstreamer 비디오 싱크

Python Opencv Videocapture에서 Gazebo gstreamer UDP 비디오 받기

OpenCV Gstreamer에서 gstreamer UDP 스트림을 수신 할 수 없습니다.

Gstreamer 및 OpenCV (Python)를 사용한 RTSP 스트리밍

OpenCV 및 gstreamer로 RTSP 스트림 표시

gstreamer로 UDP를 통해 스트리밍하면 화면 캡처 크기 조정이 실패합니다.

rtsp h264 스트림을위한 gstreamer 파이프 라인

Android에서 RTSP 링크 재생

gstreamer를 사용하여 rtsp 스트림 수신

Gstreamer 1.0 rtsp 스트림을 파일에 저장

Android는 기본적으로 udp / RTP / RTSP 스트림을 재생할 수 있습니까?

Gstreamer. 파일 싱크에 앱 싱크 쓰기

Gstreamer udp 서버

Gstreamer udp-source pcm 재생

OpenCV로 gstreamer 소스 작성

gstreamer를 사용하여 재생하기 전에 rtsp 스트림 감지

gstreamer-1.0, RTSP H264 스트림 및 공유 메모리

GStreamer-RTSP 서버로 컴파일

파이프라인 Gstreamer RTSP 파일이 큰 지연으로 가라앉음

GStreamer - FLV 파일로 RTSP 스트리밍

RTSP로 WebRTC 스트림

TOP 리스트

뜨겁다태그

보관