embeded/raspberry pi2016. 5. 27. 12:33

vlc로는 안되고.. 팟플레이어로는 잘 된다...

아무튼, 초기 로딩은 느린데 딜레이 자체는 0.5초 정도 미만? 꽤 빠르다.

핵심은.. gst-rtsp 패키지를 받아야 하는거고

그걸 통해서 tcp / rtp 스트리밍 한걸 받아서 rtsp로 보내준다.



$ mkdir src

$ cd src

$ wget http://gstreamer.freedesktop.org/src/gst-rtsp/gst-rtsp-0.10.8.tar.bz2

$ tar -xvf gst-rtsp-0.10.8.tar.bz2

$ sudo apt-get install libglib2.0-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev gstreamer-tools gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly

$ cd gst-rtsp-0.10.8

$  ./configure

$ make -j4

$ cd examples


$ raspivid -t 0 -n -o - | gst-launch -v fdsrc ! h264parse ! gdppay ! tcpserversink host=127.0.0.1 port=5000 | ./test-launch "( tcpclientsrc host=127.0.0.1 port=5000 ! gdpdepay ! avdec_h264 ! rtph264pay name=pay0 pt=96 )" 

[링크 : http://www.aftermath.kr/entry/GStreamer-RTSP-with-RPi]

+ 2016.06.09

[링크 : https://www.raspberrypi.org/forums/viewtopic.php?p=721798]


팟플레이어는 좀 오래걸려서 그렇지 나오는데(딜레이는 적음)


+ 2015.06.10

지금보니.. bitrate가 0으로 뜨네?


VLC는 이렇게 한 프레임만 디코딩 하고 그 이후로는 디코딩을 하지 못한다...


udp로는 하기 힘드네.. 설정을 찾아 봐야...


$ raspivid -t 0 -n -o - | gst-launch -v fdsrc ! h264parse ! gdppay ! udpsink host=127.0.0.1 port=5000 | ./test-launch "( udpsrc port=5000 caps = 'application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96' ! gdpdepay ! avdec_h264 ! rtph264pay name=pay0 pt=96 )"


---

cvlc 를 통한 h.264 rtsp 스트리밍은 딜레이가 상당히 크다.

vlc의 버퍼링을 제외하더라도 1초 정도 이상?


gstreamer를 쓰면 딜레는 낮은데

rpi 2b -> b+ 는 b+의 사양으로 끊어지고

rpi b+ -> 2b는 문제없이 재생이 되었던 걸로 기억을 한다.

2015/09/20 - [embeded/raspberry pi] - 라즈베리 파이 gstreamer 시도


아무튼

cvlc / h.264 / rtsp -> vlc

gstreamer h.264 rtp -> gstreamer

은 시도해봤으나..


gstreamer h.264 rtp -> vlc

cvlc / h.264 / rtsp -> gstreamer 

는 아직 미시도..



cvlc로 rtsp 스트리밍 할때 뜨는 sdp 설정

[73c008c8] stream_out_rtp stream out debug: sdp=

v=0

o=- 15776737622825922871 15776737622825922871 IN IP4 raspberrypi

s=Unnamed

i=N/A

c=IN IP4 0.0.0.0

t=0 0

a=tool:vlc 2.2.1

a=recvonly

a=type:broadcast

a=charset:UTF-8

m=video 0 RTP/AVP 96

b=RR:0

a=rtpmap:96 H264/90000

a=fmtp:96 packetization-mode=1 


vlc 에서 보려면 sdp 파일로 만들어서 하라는데...

얘는 mpeg4video - es 인거 같고...

v=0

m=video 5000 RTP/AVP 96

c=IN IP4 127.0.0.1

a=rtpmap:96 MP4V-ES/90000 

[링크 : http://stackoverflow.com/questions/13154983/gstreamer-rtp-stream-to-vlc]


찾아보고.. cvlc sdp 내용 참조하니.. 별로 고칠건 없을 듯?

c=IN IP4 10.5.110.117

m=video 5004 RTP/AVP 96 

a=rtpmap:96 H264/90000

vlc test.sdp

[링크 : http://stackoverflow.com/questions/20538698/minimum-sdp-for-making-a-h264-rtp-stream]


아래는.. 산딸기 마을에서 본거 같은데

아무튼.. rtsp://ip:8554/test 로 하면 된다고 한다.

$  raspivid -t 0 -h 720 -w 1280 -fps 25 -b 2000000 -vf -hf -n -o - | gst-launch -v fdsrc ! h264parse ! gdppay ! tcpserversink host=127.0.0.1 port=5000 | ./test-launch "( tcpclientsrc host=127.0.0.1 port=5000 ! gdpdepay ! avdec_h264 ! rtph264pay name=pay0 pt=96 )"

[링크 : http://www.aftermath.kr/entry/GStreamer-RTSP-with-RPi]

[링크 : http://www.rasplay.org/?p=5607]


$ raspivid -t 0 -w 1280 -h 720 -fps 30 -hf -b 2000000 -n -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=192.168.10.34 port=5000 ! rtspsrc location=rtsp://127.0.0.1:8554/test

mmal: mmal_vc_component_enable: failed to enable component: ENOSPC

mmal: camera component couldn't be enabled

mmal: main: Failed to create camera component

mmal: Failed to run camera app. Please check for firmware updates


WARNING: erroneous pipeline: could not link tcpserversink0 to rtspsrc0


$ raspivid -t 0 -w 1280 -h 720 -fps 30 -hf -b 2000000 -n -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! rtspsrc location=rtsp://127.0.0.1:8554/test                                mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
mmal: camera component couldn't be enabled
mmal: main: Failed to create camera component
mmal: Failed to run camera app. Please check for firmware updates

WARNING: erroneous pipeline: could not link gdppay0 to rtspsrc0

끄응.. 안되네 ㅠㅠ

[링크 : http://stackoverflow.com/questions/13154983/gstreamer-rtp-stream-to-vlc]


[링크 : https://gstreamer.freedesktop.org/documentation/rtp.html]




2016.06.28


Unfortunately, there are two problems I could not solve so far.


1. The SPS / PPS issue


The omxh264enc plugin sends not regularly the needed SPS / PPS information with it. You can work around the problem by immediately accessing the stream after the start of gst-launch, otherwise VLC (for example) cannot play it.


I have found this wrapper for the camera:

https://github.com/AndyA/psips

[링크 : https://www.raspberrypi.org/forums/viewtopic.php?f=70&t=59412]

Posted by 구차니