DaewoongP / cerule-stream

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

4-1)ffmpeg 지연 속도 개선 #38

Open safecorners opened 6 years ago

safecorners commented 6 years ago
leejihown commented 6 years ago
  1. 동영상 포멧이 정해져 있을 경우 컨테이너 형식을 명시적으로 줘서 재생을 시도하면 컨테이너 형식을 판단하는 시간이 없어지기 때문에 다소 시작 속도가 증가 됩니다.

  2. 컨테이너 형식을 명시적으로 주더라도 해당 형식에 대해 파싱을 수행할 때 시간이 걸릴 수 있습니다. 이 부분에 대한 코드 수정은 힘듭니다만 만약 컨테이너 형식을 결정하실 수 있으면, TS 형식으로 정해서 재생을 시작하면 다소 빨라 질 수 있습니다.

3 FFMPEG의 경우 버퍼링을 2M 정도 한 후 재생을 시작하게 되어 있는데 FFMPEG 소스를 수정하여 버퍼링 할 사이즈를 줄일 경우 약간 시작 시간이 빨라질 수 도 있습니다.

  1. 시작 시간과는 크게 상관이 없지만 가이드 드린 방식의 경우 sws_scale을 사용하여 YUV420->RGB565 영상으로 변경 후 그리고 있는데. 출력 사이즈가 커지면 커질 수록 연상량이 많아져 한장 그리는데 시간이 더 많이 걸리며 최악의 경우 칼라변환하는데 33ms가 넘어 30fps 가 안 나올 수 있습니다. 이 부분을 openGL을 이용하여 그리면 빠르게 됩니다.

ffserver 로딩 속도 개선 방법 4가지

leejihown commented 6 years ago

라즈베리파이 네트워크 속도 개선 방법 1. 오버 클럭의 정보 오버 클럭의 방법 2. usb 포트에 외장 하드 포트 직접연결

leejihown commented 6 years ago

USB 이더넷 연결

라즈베리파이 속도 파이 마다 선과 wifi 인터넷 속도 테스트 결과 라즈베리 파이 usb 테더링 연결

leejihown commented 6 years ago

NFS에 대한 간단한 설명과 설정 방법 리눅스에서 공유 디렉토 설정 리눅스 실시간 동기화 자료

leejihown commented 6 years ago

참고 스트리밍 관련 논문 링크

safecorners commented 6 years ago

x264 level과 profile 선택?

safecorners commented 6 years ago

포맷 선택시 참조

leejihown commented 6 years ago

https://johnathan.org/2016/07/rpi-h264-hw-acceleration.html 요약 Raspberry의 h264_omx 로 스트리밍 문제에서 h264_omx가 사용되면 서버 다음에 스트리밍 클라이언트를 시작할 수 없음 xvid(mpeg4) 코덱 사용 권장 속도에도 문제 없을거 같다 프레임도 떨어져서 힘들거 같다 https://trac.ffmpeg.org/ticket/6219

leejihown commented 6 years ago
ffmpeg -r 30 -s 640x480 -f video4linux2 -i /dev/video0 -vcodec libxvid -bufsize 1000 -b:v 250 -an http://localhost:8090/feed1.ffm 

Feed feed1.ffm format rtp videocodec libxvid videoFramrate 30 videoBitRate 250 videoBuffersize 1000 videoSize 640x480 NoAndio

*videobitraterange 250 500

cpu 할당 조절 속도 올리기

leejihown commented 6 years ago

https://m.blog.naver.com/lds5645/220940360109 http://support.wecandeo.com/guide/video-pack-guide/videoimagequality/

leejihown commented 6 years ago

h264 스트리밍 명령어 및 ffserver 옵션

ffmpeg -r 30 -s 640x480 -f video4linux2 -i /dev/video0 -vcodec libx264 -bufsize 500 -biv 128k -an http://localhost:8090/feed1.ffm

Feed feed1.ffm Format rtp VideoFramRate 30 VideoBitRate 128 VideoBuffersize 500 VideoSize 640x480 VideoCodec libx264 No Andio

leejihown commented 6 years ago

입력 rawvideo 옵션(해상도 바꾸기)

ffmpeg 전역 옵션 - 입력 옵션- 입력 영상 -출력옵션- 출력 영상
safecorners commented 6 years ago

@leejihown [mpeg4]rc buffer underflow 오류 해결할것

leejihown commented 6 years ago

http://polly.github.io/ffmpeg/classes/FFMpeg/VideoAdvancedOptions.html https://trac.ffmpeg.org/ticket/5642

leejihown commented 6 years ago

bitrate를 500k를 주고 최대 1000k가 할당되서 500k~600k의 비트레이트 기복에 대응해 오류가 나가 않습니다. 하지만 영상 크기가 커져서 전송속도가 느리기에 전송속도를 올리는 방법이나 비트레이트를 적게 올리고 사용하는 방법을 찾고 있습니다.

leejihown commented 6 years ago

https://wiki.changwoo.pe.kr/project:personalstreaming https://slhck.info/video/2017/02/24/vbr-settings.html https://kr.linkedin.com/in/bongchul-chang-161447144

leejihown commented 6 years ago

ffserver 가이드 https://patents.google.com/patent/KR101690153B1/ko http://weandstory.tistory.com/122 https://www.bloter.net/archives/279988