2014-02-08 3 views
0

ffmpeg, nodejs 및 html5를 사용하여 화면 캐스트에서 HTTP 라이브 스트림을 만들고 싶습니다. 나는 그것이 가능한 한 실시간으로되기를 원했다. 그러나 클라이언트가받은 내 동영상이 1 ​​초에서 2 초 뒤진 것으로 나타났습니다 (Chrome/Chromium). 내 코덱으로 vp8/webm을 사용하고 있습니다.

I는 다음과 같은 다음과 같은 요인을 제거했다 :
1) 네트워크 : I 게재 및 127.0.0.1:PORT 또는 로컬 호스트가 될 비디오 소스를 명시하여 로컬 비디오 파일을 수신 시도 : PORT를
2) ffmpeg 인코딩 속도 : 로컬에서 파일 출력을 시도했습니다. "지연"은 무시할 수있는 것처럼 보입니다.
3) 크롬 내부 버퍼. 버퍼는 0.07 초 ~ 0.08 초로 계산되었습니다.

nodeJS 쪽에서 ffmpeg 명령을 실행하고 ffmpeg.stdout.pipe (res)를 실행 한 하위 프로세스가 있습니다. < -는 FFmpeg은 ffmpeg가있는 NodeJS 파이핑


은 그래서 nodejs의 ffmpeg.std.pipe (입술) 비디오 스트림을 지연 한 것 같다 것으로 보인다 child_process.spawn (...)입니다. 내가 그렇게 가정 할 때 맞습니까? 지연을 줄일 수있는 방법이 있습니까?

+0

~ 2 초가 수신 놀랍게도 낮은 레이턴시이다. 그보다 훨씬 나아질 확률은 적습니다. 모든 레이어에는 버퍼가 있습니다. – Brad

+0

Ahhhh ... 나 ... 슬픈 ... = (Brad! Thanks Brad! –

답변

0

가서 등 코덱, 파이프, 같은 어떤 일을 구현 할 필요 WebRTC가 없습니다 (이미 크롬에, 오페라, 파이어 폭스)

용도 : MediaCaptureAPI은 (URL에 기본 객체를 당신의 캠과 마이크에 액세스 및 변환 그들 VP8 코덱 등)

RTCPeerconnectionAPI (전송 및 수신 미디어 스트림 P2P)

RTCDatachannelAPI을 (사용하여 전송 및 애플리케이션의 유형 P2P를 이용하여 데이터)

+0

흠 ... 작동하지 않을 것 같아 ... 내가 원격 기계의 화면을 브라우저로 스트리밍하려고하기 때문에. 나 틀렸다면, WebRTC는 브라우저에서 브라우저로만 가능합니다. (비디오 캠과 마이크에만 사용되는 것 같습니다.) VNC의 제한으로 인해 일반적인 VNC를 사용할 수 없습니다 ... = \ –

+0

WebRTC는 화면 공유 (Chrome에서만 지원)도 지원하지만 HTTPS가 필요합니다. https://simpl.info/screencapture/ –

+0

Oooo webRTC는 Chrome에서 실행되지 않는 시스템 데스크톱/창에서 화면을 가져올 수 있습니다. .. 놀랍다. 나는 그것을 시험해 볼 것이다! Thank you! –