DaewoongP / cerule-stream

Application Object detection using Neural Networks, Python and Open CV (with Raspberry pi)
1 stars 0 forks source link

[스트리밍]ffserver #34

Closed DaewoongP closed 6 years ago

DaewoongP commented 6 years ago
  1. 라즈베리파이의 영상 정보를 openCV의 VideoReader로 푸시하기위해 ffserver를 사용하여 rtsp, rtmp서버를 구축
    • [ ] rtmp : ffserver 출력확인
    • [x] rtsp : ffserver 출력확인
  2. webRTC를 이용하여 카메라의 영상정보를 openCV에서 확인
    • [ ] webrtc : uv4l 출력확인
safecorners commented 6 years ago

비트레이트 최적화? h264 비트레이트

DaewoongP commented 6 years ago

RTSP : ffserver 출력

  1. ffserver.conf 파일 설정
    
    HTTPPort 8090
    HTTPBindAddress 0.0.0.0
    RTSPPort 5454
    RTSPBindAddress 0.0.0.0
    MaxClients 10
    MaxBandwidth 1000
    CustomLog -
File /tmp/feed1.ffm FileMaxSize 1G ACL allow 127.0.0.1 Feed feed1.ffm Format rtp VideoFrameRate 30 VideoBitRate 256 VideoBufferSize 40 VideoSize 640x480 NoAudio Format status ACL allow localhost

2. 새로운 터미널에서 ffserver.conf 파일이 있는곳으로 이동 후 서버 실행 **(RTSP서버도 같이 enable 필수)** 
```terminal
$ cd ~/

$ ffserver -f ffserver.conf RTSP enable
  1. 또 다른 터미널에서 ffmpeg 실행.

    $ ffmpeg -r 30 -s 640x480 -f video4linux2 -i /dev/video0 http://localhost:8090/feed1.ffm
  2. 이후, opencv를 이용한 python으로 동작하는 코드 작성 후 실행

    
    import cv2

cap = cv2.VideoCapture("rtsp://localhost:5454/live.rtsp")

while cap.isOpened():

_, frame = cap.read()

cv2.imshow("rtsp", frame)

if cv2.waitKey(1) & 0xff == ord('q'):
    break

cap.Release() cv2.destoryAllWindows()

leejihown commented 6 years ago

ffserver.conf 사용 비디오 옵션들

VideoCodec codec_name 비디오 코덱을 설정하십시오.

VideoBitRate n 초당 kbits로 비디오 스트림의 비트 전송률을 설정합니다.

VideoBitRateRange 범위 비디오 비트 전송률 범위를 설정합니다. 범위는 minrate - maxrate 형식으로 지정해야하며 minrate 및 maxrate 인코딩 옵션을 초당 kbits로 지정합니다.

VideoBitRateRangeTolerance n 비디오 비트 전송률 허용치를 초당 kbits로 설정하십시오.

PixelFormat pixel_format 비디오 픽셀 형식을 설정합니다.

VideoBufferSize n ratecontrol 버퍼 크기를 KB 단위로 설정하십시오.

VideoFrameRate n 초당 비디오 프레임 수를 설정합니다.

VideoSize 비디오 프레임의 크기를 설정합니다. 약어 또는 W x H 형식이어야합니다. ffmpeg-utils (1) 매뉴얼의 비디오 크기 섹션 (ffmpeg-utils)을 참조하십시오.

VideoIntraOnly 인트라 프레임 만 전송합니다 (낮은 비트 전송에는 유용하지만 프레임 속도는 사용하지 않습니다).

VideoGopSize n 비 인트라 프레임 인 경우에만 인트라 프레임이 VideoGopSize 프레임마다 전송됩니다. 비디오 동기화는 인트라 프레임에서만 시작할 수 있습니다.

VideoTag 태그 동영상 태그를 설정합니다.

VideoHighQuality ( 인코딩, 동영상 ) Video4MotionVector ( 인코딩, 비디오 ) BitExact ( 인코딩, 비디오 ) bitexact 인코딩 플래그를 설정하십시오.