2012-11-03 4 views
4

WebRTC + 캔버스로 작성된 동작 감지기 js library에서 작업. 앱을 실행할 때 즉시 매우 높은 CPU 사용량을 얻습니다. 루프 등을 최적화했지만 기본적인 문제는 WebRTC와 같은 카메라에 액세스하는 것 같습니다.WebRTC 성능 - 매우 높은 CPU로드

WebRTC의 작동 방식을 개선 할 수 있습니까? 아마도 다른 구성입니까? 아니면 제가 빠진 것이 있습니까? 이 js 메모리 누수가 될 수 있을까요? 내가 잘못 처리하고 있습니까? 내가 뭘 잘못하고 있니?

같은 LIB

과의 WebRTC를 사용하여 다른 하나와 같은 문제는 비디오 이미지의 픽셀을 검사하여 움직임 감지를하는 것처럼 데모 보이는 here

+0

http://iambrandonn.github.com/WebcamSwiper에서 데모를 테스트했으며 20 % 이상의 CPU 시간을 사용하지 않았습니다. WebRTC는 아직 준비가되어 있지 않다는 점을 명심해야합니다. API와 기본 프로토콜 모두 큰 변화를 겪고 있습니다. 모든 브라우저 또는 특정 브라우저에서 CPU로드가 높습니까? – Makkes

+0

다른 테스트도 했습니까? 또한 크롬 22에서만 테스트 할 수 있습니다. 아직 다른 브라우저에서 볼 수 있기 때문에 ... – alonisser

+0

getUserMedia는 Firefox Aurora/Nightly와 Opera에서 사용할 수 있습니다. 테스트 해 보는 것이 좋습니다. (세 플랫폼 모두에서 작동하는 데모는 www.simpl.info/gum을 참조하십시오.) Ericsson Bowser 모바일 브라우저는 껌을 포함하여 WebRTC도 구현합니다. 또한 WebRTC가 RTCPeerConnection 및 DataChannel을 포함한 브라우저 내 실시간 커뮤니케이션 프로젝트 인 반면 'WebRTC'는 껌을 의미하는 데 익숙해 져 있습니다. 세 가지 API가 모두 없으면 웹은 있지만 RTC는 없습니다! gum은 스트리밍 데이터를 가져 오는 부분입니다. –

답변

5

와 다른 데모 here를 확인할 수 있습니다. 캔버스로 렌더링 한 다음 캔버스 이미지 데이터를 검색하는 것으로 보입니다.

천천히하기 때문에 속도가 느립니다. 픽셀이 많고 프레임이 빨리 통과하며 CPU 작업이 많습니다. Javascript가 이러한 종류의 데이터가 많은 처리에서 항상 효율적이지는 않다는 사실은 더욱 심각합니다. 따라서 WebRTC의 속도 저하는 본질적이라고 생각하지 않습니다. 그것은 단지 무거운 자바 스크립트입니다.

1

계산에 Web Workers을 사용해 보셨습니까?

demo using web workers for motion tracking (Firefox에만 해당)이 있습니다. 이 데모에서는 CPU 사용량이 높지만 작업자의보고 fps는 비디오의 프레임 속도를 능가하므로 작업자를 30fps로 제한하고 시도하는 것이 도움이 될 수 있습니다.

+0

웹 워커를 사용하는 것이 왜 더 빠릅니까? 아마 차단하지만 비싸지 않은가? 다른 스레드를 사용하는 웹 작업자입니까? – alonisser

+0

예, UI 스레드와는 별도의 스레드에서 실행됩니다. 이 작업을 수행하면 여러 명의 작업자를 시작하고 작업을 MapReduce 방식으로 배포하여 성능을 향상시킬 수 있습니다. 그래도 CPU 사용량에 대해서는 YMMV. – istvanp