รับเวลาแฝงที่คล้ายกับ webrtc ด้วย ffmpeg หรือไม่


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
ลิงค์ตาย คุณต้องการแปลงวิดีโอและสตรีมไปยังโทรศัพท์ของคุณไหม? บน WiFi หรือภายนอก?
jiggunjer

สิ่งที่ฉันต้องการจะทำคือส่งกระแสข้อมูลจากกล้องที่เชื่อมต่อกับอุปกรณ์และให้มันปรากฏบนแท็บเล็ต Android (Nexus 10) ที่เชื่อมต่อผ่าน USB
David N. Welton

1
ฉันไม่รู้มากเกี่ยวกับตัวแปลงสัญญาณเหล่านี้ แต่คุณได้ตรวจสอบว่าพวกเขาเร่งฮาร์ดแวร์ที่เป็นไปได้หรือไม่ นั่นคือการเดาว่าทำไมคุณถึงเห็นเวลาแฝงมากกว่า 1 วินาที
snoopen

vpx เป็นเรื่องยากที่จะใกล้เคียงกับเรียลไทม์ฉันรู้ว่า x264 มีเพลง "latency ต่ำ" หรืออะไรทำนองนั้น FWIW
rogerdpack

คำตอบ:


1

ปัญหาคือส่วนใหญ่มาจากความจริงที่ว่าคุณกำลังใช้การแปลงรหัสซอฟต์แวร์แทนการแปลงฮาร์ดแวร์

ตามกฎทั่วไปหากการแปลงใช้การเร่งด้วยฮาร์ดแวร์เวลาในการตอบสนองจะเป็นลำดับที่น้อยกว่าหนึ่งวินาที (โดยทั่วไปคือมิลลิวินาที) หากทำในซอฟต์แวร์แล้วเวลาในการตอบสนองจะเป็นลำดับที่มากกว่าหนึ่งวินาที

FFmpeg รองรับการเร่งความเร็วด้วยฮาร์ดแวร์ แต่โดยปกติแล้วมันจะใช้งานได้ยากสำหรับคุณ

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

Google Chrome รองรับ VP8 และ H264 (มีให้บริการ) การเข้ารหัส / ถอดรหัสฮาร์ดแวร์ทั้งบนคอมพิวเตอร์ของคุณและโทรศัพท์ Android ของคุณ:

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


2
มันไม่ได้เป็นเพียงแค่การเร่งความเร็วของฮาร์ดแวร์ แต่ ... การกำหนดค่าตัวแปลงสัญญาณมีบทบาทสำคัญในเวลาแฝง ตัวแปลงสัญญาณจะต้องได้รับการปรับเพื่อให้เวลาแฝงอยู่ในระดับต่ำโดยมีค่าใช้จ่ายด้านคุณภาพและแบนด์วิดท์ สิ่งนี้สามารถทำได้ไม่ว่าคุณจะใช้ตัวแปลงสัญญาณเร่งฮาร์ดแวร์หรือไม่
แบรด

ลิงก์นั้นโดยเฉพาะกล่าวว่า Chrome ไม่สนับสนุนการเข้ารหัสฮาร์ดแวร์บนเดสก์ท็อปเฉพาะบน Android
davr

ขออภัยแบรดนั้นถูกต้องคำตอบนั้นผิดทั้งหมด: ตราบใดที่คุณตั้งค่าตัวแปลงสัญญาณเดิมไม่มีความแตกต่างเลยถ้าคุณทำการเข้ารหัสฮาร์ดแวร์หรือซอฟต์แวร์ การตั้งค่าตัวแปลงสัญญาณ) ถูกต้องคือมันไม่เพียง แต่เกี่ยวกับการตั้งค่าตัวแปลงสัญญาณวิดีโอ แต่ส่วนใหญ่เกี่ยวกับประเภทของการขนส่งและพฤติกรรมการบัฟเฟอร์ของตัวถอดรหัส WebRTC ใช้งานได้เนื่องจากปรับให้มีความหน่วงต่ำ ตัวถอดรหัส Webm ทั่วไปไม่ได้มีจุดประสงค์เพื่อใช้งาน Low-Latency
Harry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.