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.