ffmpeg로 webrtc와 같은 대기 시간을 얻으십니까?


11

Chrome과 휴대 전화간에이 기능을 사용하고 있습니다.

http://www.webrtc.org/demo

그리고 대기 시간은 실제로 1 초 미만입니다.

나는 내 컴퓨터에서 그것을 성공적으로 복제하려고 노력했습니다.

ffmpeg -f video4linux2 -i /dev/video0  -s 320x200 -r 50 -deadline realtime -vcodec libvpx -f webm -fflags nobuffer udp://10.0.0.55:9002

그리고 다른 쪽에서는 ffplay를 사용합니다.

여전히 몇 초의 지연이 있습니다.

결국 내 컴퓨터에서 Android 전화로 스트리밍하고 싶지만 지연 시간은 좋아야합니다.

편집 -이것은 훨씬 잘 작동합니다. 이 부분을 조금만 면도 할 수 있다면 기쁠 것입니다.

ffmpeg -vcodec rawvideo -f video4linux2 -i /dev/video0  -s 320x200 -r 25 -vcodec libvpx -f rtp -deadline realtime rtp://10.0.0.55:9002

1
연결이 끊어졌습니다. 기본적으로 비디오를 변환하여 휴대폰으로 스트리밍 하시겠습니까? 와이파이 또는 외부?
jiggunjer

내가하고 싶은 일은 장치에 연결된 카메라에서 스트리밍하여 USB를 통해 연결된 Android 태블릿 (Nexus 10)에 표시되도록하는 것입니다.
David N. Welton

1
이 코덱에 대해 잘 모르지만 가능한 경우 하드웨어 가속인지 확인 했습니까? 1 초 이상의 대기 시간이 나타나는 이유에 대해서는 제 추측입니다.
snoopen

VPX는 실시간으로 닫 까다로운 일이 될 것입니다, 나는 x264는 곡 "낮은 대기 시간"이나 뭐 같은 것을 가지고 알고 FWIW
rogerdpack

답변:


1

문제는 하드웨어 트랜스 코딩 대신 소프트웨어 트랜스 코딩을 사용한다는 사실에 기인합니다 .

일반적으로 변환에서 하드웨어 가속을 사용하는 경우 대기 시간은 1 초 미만 (보통 밀리 초)입니다. 소프트웨어에서 수행되는 경우 대기 시간은 1 초 이상입니다.

FFmpeg는 하드웨어 가속을 지원하지만 일반적으로 작동하도록하기가 까다 롭습니다.

https://trac.ffmpeg.org/wiki/HWAccelIntro

반면에 Chrome은 컴퓨터와 Android 휴대 전화에서 모두 VP8 및 H264 (사용 가능한 경우) 하드웨어 인코딩 / 디코딩을 지원합니다.

http://code.google.com/p/chromium/issues/detail?id=428223


2
하드웨어 가속에 관한 것이 아니라 코덱 구성이 지연 시간에서 훨씬 더 큰 역할을합니다. 품질과 대역폭을 희생하면서 지연 시간을 낮게 유지하려면 코덱을 조정해야합니다. 하드웨어 가속 코덱 사용 여부에 관계없이이 작업을 수행 할 수 있습니다.
Brad

이 링크는 Chrome이 데스크톱에서만 하드웨어 인코딩을 지원하지 않으며 Android에서만 지원한다고 말합니다.
davr

죄송하지만 Brad가 옳습니다. 정답은 완전히 잘못되었습니다. 동일한 코덱 설정을 설정하는 한 하드웨어 또는 소프트웨어 인코딩을 수행하는 경우 (실시간 인코딩으로 실시간 인코딩을 수행하기에 충분한 CPU 성능이있는 한) 전혀 차이가 없습니다. 코덱 설정). 비디오 코덱 설정뿐만 아니라 디코더의 전송 및 버퍼링 유형에 관한 것입니다. WebRTC는 지연 시간이 짧기 때문에 작동합니다. 전형적인 Webm 디코더는 저 지연을하려고하지 않습니다
Harry
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.