python ๋๋ C++๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ ์๋ณ๋ก ๋ผ์ฆ๋ฒ ๋ฆฌ ์นด๋ฉ๋ผ์์ ์์ฑ๋ rtsp ์คํธ๋ฆผ์ ์ฒ๋ฆฌํ๊ณ ์ถ์ต๋๋ค.
.py
import cv2
rtsp_url = "rtsp://192.168.55.151:8554/stream.sdp"
video = cv2.VideoCapture(rtsp_url)
while(1):
ret, frame = video.read()
cv2.imshow('VIDEO', frame)
cv2.waitKey(1)
์คํธ๋ฆผ์ vlc๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ฆ๋ฒ ๋ฆฌ ๋จธ์ ์์ ์์ฑ๋ฉ๋๋ค: raspivid -o - -t 0 -hf -w 640 -h 480 -fps 30 | cvlc stream:///dev/stdin --sout "#rtp{sdp=rtsp://192.168.55.151:8554/stream.sdp}" :demux=h264
์คํธ๋ฆผ์ rtsp://192.168.55.151 :8554/stream.sdp๋ฅผ ์ฌ์ฉํ์ฌ vlc ํ๋ ์ด์ด์์ ์ฑ๊ณต์ ์ผ๋ก ์ด๋ฆฝ๋๋ค.
๊ทธ๋ฌ๋ ํ์ด์ฌ ์ฝ๋์์ ๋ค์์ ์ป์ต๋๋ค. method SETUP failed: 461 Client error
(ffmpeg ์ค๋ฅ)
๋ช
๋ น์ค ffmpeg๋ฅผ ์คํํ๋ฉด ffmpeg -rtsp_transport tcp -i rtsp://192.168.55.151:8554/stream.sdp
๋์ผํ ์ ํํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐฉ๋ฒ SETUP ์คํจ: 461 Client error ๋ฐ Protocol not supported
๋ช
๋ น์ค ffmpeg๋ฅผ ์คํํ๋ฉด ffmpeg -rtsp_transport udp -i rtsp://192.168.55.151:8554/stream.sdp
์คํธ๋ฆผ์ด ์ฑ๊ณต์ ์ผ๋ก ๋์ฝ๋ฉ๋ฉ๋๋ค.
์ด ์ ์ก ํ๋กํ ์ฝ์ด ๋ฒ๊ทธ์ ๋๊น, ์๋๋ฉด ์ ๊ฐ ๋ญ๊ฐ ์๋ชปํ๊ณ ์์ต๋๊น? OpenCV ์ฝ๋์์ ์ ์ก ํ๋กํ ์ฝ์ ์ง์ ํ ์ ์์ต๋๊น?
๋คํธ์ํฌ ๊ฒฐํจ/๋น๋์ค ์คํธ๋ฆผ ์ฐ๊ฒฐ ๋๊น ๋ฑ์ ๋ฐฉ์งํ๊ธฐ ์ํด OpenCV๋ TCP ์ ์ก ํ๋กํ ์ฝ์ ๊ฐ์ ์คํํฉ๋๋ค. TCP ์ง์์ ์ํด rstp ์๋ฒ๋ฅผ ์ฌ๊ตฌ์ฑํ๊ฑฐ๋ FFmpeg๊ฐ ์๋ OpenCV ๋ฐฑ์๋(Gstreamer?)๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
BTW, ์ฌ์ฉ ์ง๋ฌธ์ ์ฌ์ฉ์ OpenCV Q/A ํฌ๋ผ์ผ๋ก ์ด๋ํด์ผ ํฉ๋๋ค. http://answers.opencv.org
๋ผ์ฆ๋ฒ ๋ฆฌ ์นด๋ฉ๋ผ์ฉ UV4L ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด opencv์ ํธํ๋๊ณ ์ ๋๋ก ์๋ํ๋ ๋น๋์ค ์คํธ๋ฆผ์ด ์๋ URL์ ๊ฐ์ง ์ ์์ต๋๋ค. ๋๋ ์ด๋ฏธ ํ ์คํธํ๋ค.
๋ผ์ฆ๋ฒ ๋ฆฌ ์นด๋ฉ๋ผ์ฉ UV4L ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด opencv์ ํธํ๋๊ณ ์ ๋๋ก ์๋ํ๋ ๋น๋์ค ์คํธ๋ฆผ์ด ์๋ URL์ ๊ฐ์ง ์ ์์ต๋๋ค. ๋๋ ์ด๋ฏธ ํ ์คํธํ๋ค.
์ด๊ฒ์ ๋ํ ํํ ๋ฆฌ์ผ์ด ์์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ ๋ํ ํํ ๋ฆฌ์ผ์ด ์์ต๋๊น?