21
38
1,438
130,970
  현재접속자 : 1 (회원 0)
내 공부 > 프로그래밍
 
작성일 : 16-01-04 09:41
라즈베리파이 영상 스트리밍 using gStreamer
 글쓴이 : Minuk Y.
조회 : 8,062  
0. 라즈베리 파이 설치...
https://www.raspberrypi.org/ 참조..
다운, SD 포멧, 복사, 전원 켜기... 만하면 됨..대부분이..

0.1 화면 뒤집힘 처리
 단, 이놈들이 신버전으로 넘어 오면서 화면이 뒤집힙..-_-;; (드라이버 문제인듯 하나... 뒤집는 방법을 선택..)
NOOB 설치했다면 최초에 shift 누르고 메뉴 나오면 라즈베리 파이 선택 후 config 버튼 누르면 설정 파일 열림
display_rotate=2  <-  맨 아래 요거 삽입.
overscan...어쩌구 하는 놈들 지워버리면 주변 여백 사라짐. % 표시는 주석표시이니 이거 된 놈은 내비둬두 됨.

0.2 터치 스크린 보정 프로그램 설치 (이것도 뒤집혔으니... 이거 없이 0.3 만 해도 됨. 이건 보정 프로그램설치 임.)
 - 필요 프로그램 설치
sudo apt-get install libx11-dev libxext-dev libxi-dev x11proto-input-dev 
 - xinput_calibrator  다운로드
wget http://github.com/downloads/tias/xinput_calibrator/xinput_calibrator-0.7.5.tar.gz
 - 설치...(압축 풀고 해당 폴더에서...)
./configure
make
sudo make install

xinput_calibrator <- 실행하면 캘리브레이션 화면 뜨고 터치하면 보정됨.. 단, 껏다키면 지워짐.

0.3 터치 스크린 캘리브레이션 정보 영구 설정
sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf  <- 설정 파일 생성 아래 6줄 입력 후 저장 종료.
**OS에 따라서 경로가 /etc/X11/xorg.conf.d/99-calibration.conf  일때도 있으니 참고....

 Section "InputClass"
            Identifier "calibration"
            MatchProduct "FT5406 memory based driver"
            Option "Calibration" "800 0 480 0"
            Option "SwapAxes" "0"
EndSection



1. 라즈베리 파이 설정

1.0 참조 사이트는 putty로 연결하여 nano 에디터를 활용함. 우리는 화면 나오는 놈이므로 그냥 터미널에서 하면 됨.

1.1 소스 리스트 추가 (안해도 되었음)
sudo nano /etc/apt/source.list <- 수정할 파일 열기
deb http://voutaene.de/raspbian-updates/ - main <- 마지막 줄에 추가 후 저장, 종료(Ctrl+X누르고 저장할건지 물어보면 Y)

1.2​ gstreamer 소스 설정
sudo nano /etc/apt/preference.d/gstreamer <- 수정할 파일 열기, 아래 세줄 쓰고 저장, 종료

Package: *
Pin: origin archive.raspberrypi.org
Pin-Priority: 1001

1.3 gstreamer 설치
sudo apt-get update <- 설치 프로그램 갱신
sudo apt-get dist-upgrade <- 프로그램 베포자 업데이트
sudo apt-get install gstreamer1.0 <- gstremer1.0 설치

1.4 캠 활성화
좌상단 [Menu]->[Preferences]->[Raspberry Pi Configuration] 클릭
[Interfaces] 탭 누르고 Camera를 Disable->Enable 클릭
[OK] 클릭 후 재시작.
아니면 USB 캠 써도 될 것임.. 아마도...

1.5 실행
raspivid -t 10000000 -w 1280 -h 720 -fps 30 -hf -b 10000000 -o - | gst-launch-1.0 -e -v fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 ! udpsink host=192.168.xxx.xxx port=5000
-> 이러면 화면 영상 나오면서 스트리밍 시작함.
192.168.xxx.xxx는 영상을 볼 컴퓨터의 IP 주소임. 즉, Unicast 임. 지정한 한놈만 볼 수 있음.
-t 시간 (msec)
-w, -h 화면 크기 (pixel)
-b 비트레이트 (bit)
-fps : Frame/sec
-hf  좌우 반전
-o 영상 출력 (안쓰면 안나옴...스트리밍할 때 LCD화면엔 나올 필요 없어 보이는데...)



2. 윈도우 설정

2.1 gstreamer 설치
http://gstreamer.com/ <- 공식 사이트
http://gstreamer.freedesktop.org/data/pkg/windows/1.7.1/  <- 여기 가서 최신 버전 다운로드

2.2실행
D:\gstreamer\1.0\x86_64\bin>gst-launch-1.0.exe -e -v udpsrc port=5000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! d3dvideosink sync=false
컴퓨터의 IP 주소 설정을 확인하고 Port만 동일하면 스트리밍 됨.


3. APM planner 설정...
이건 그냥 설치하고 프로그램 설정하면 영상 소스를 알아서 잡아줌.
쓸건 아니니 큰 의미는 없는 부분임.

C#에서 활용 가능한듯 하나 샘플 코드가 6년 전 코드라 지금 버전에서 활용 가능한지 확인 필요.
http://cgit.freedesktop.org/gstreamer/gstreamer-sharp/



총평...
실시간성이 좋아보이는 듯 하나..설정에 따라 영상이 느려짐 발생 하였음. (영상이 밀리면서 느려짐이 누적되는 듯.)
환경 문제인지.. 성능 문제인지 확인이 필요함..

영상이 밀리는건 무선-무선 스트리밍시 통신 속도때문으로 보임.
유선으로 교체하면 잘됨..

 
   
 

Copyright ⓒ Minuk Y. All rights reserved. . .