Ffmpeg ile webrtc benzeri gecikme olsun mu?


11

Bunu Chrome ile telefonum arasında kullanıyorum:

http://www.webrtc.org/demo

Ve gecikme gerçekten iyi - 1 saniyeden az.

Bunu bilgisayarımda başarı ile çoğaltmaya çalışıyorum.

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

Ve sonra diğer tarafta ffplay kullanıyor.

Hala birkaç saniye gecikmesi var.

Sonunda bilgisayarımdan Android telefona akış yapmak istiyorum, ancak gecikmenin iyi olması gerekiyor.

Düzenle - bu daha iyi çalışır. Bundan biraz tıraş olsaydım mutlu olurum:

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
Bağlantı öldü. Temel olarak videoyu dönüştürmek ve telefonunuza aktarmak mı istiyorsunuz? Kablosuz veya harici mi?
jiggunjer

Ne yapmak istiyorum bir cihaza bağlı bir kameradan akış ve USB üzerinden bağlı bir Android tablet (Nexus 10) görünmesini sağlamaktır.
David N. Welton

1
Bu codec bileşenleri hakkında fazla bir bilgim yok ama mümkün olan yerlerde donanım hızlandırıldıklarını kontrol ettiniz mi? Neden 1 saniyeden fazla gecikmeyi gördüğünüze dair tahminim bu olurdu.
snoopen

vpx gerçek zamanlı yakın zor olacak, biliyorum x264 bir "düşük gecikme" ya da böyle bir şey var FWIW
rogerdpack

Yanıtlar:


0

Sorun çoğunlukla donanım kod dönüştürmesi yerine yazılım kod dönüştürmesini kullanmanızdır .

Genel bir kural olarak, dönüşüm donanım hızlandırmasını kullanıyorsa, gecikme süresi bir saniyeden az olacaktır (genellikle milisaniye). Yazılımda yapılırsa, gecikme süresi bir saniyeden fazla olacaktır.

FFmpeg donanım hızlandırmayı destekler, ancak sizin için çalışmasını sağlamak genellikle zordur.

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

Öte yandan Google Chrome, hem bilgisayarınızda hem de Android telefonunuzda VP8 ve H264 (varsa) donanım kodlama / kod çözme özelliğini destekler:

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


2
Bu sadece donanım hızlandırmasıyla ilgili değil ... codec yapılandırması gecikmede çok daha büyük bir rol oynuyor. Kodek, gecikmeyi düşük ve kalite ve bant genişliği pahasına düşük tutacak şekilde ayarlanmalıdır. Bu, donanım hızlandırmalı codec bileşenleri kullansanız da kullanmasanız da yapılabilir.
Brad

Bu bağlantı özellikle Chrome'un SADECE androidde masaüstünde donanım kodlamasını desteklemediğini söylüyor.
davr

Maalesef Brad doğru, cevap tamamen yanlış: Aynı codec ayarlarını yaptığınız sürece, donanım veya yazılım kodlaması yaptığınızda hiçbir fark yoktur ( codec ayarları). Doğru, sadece video kodek ayarları ile ilgili değil, çoğunlukla kod çözücünün taşıma türü ve tamponlama davranışı ile ilgilidir. WebRTC, düşük gecikme süresi için ayarlandığı için çalışır. Tipik Webm kod çözücüsü Düşük Gecikme yapmak için tasarlanmamıştır
Harry
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.