Bir Pi'yi bir gözetim kamerası olarak PI-Cam ile birlikte kullanırken 5 saniyelik bir gecikmeden kurtulma konusunda forumlar ve iplikler var. Birçok öğretici, ~ 5 saniye gecikme ile sonuçlanan RTP protokolünü kullanarak görüntüleri kodlamak ve akış için vlc'nin nasıl kullanılacağını gösterir.
Bana göre bunun nedeni, raspivid'in akışı H264'e kodlaması, VLC'nin deşifresini çözmesi ve RTP'nin olduğu her şeye yeniden kodlaması gerekiyor. Komut satırı şöyle görünür:
raspivid -w 640 -h 480 -o - -t 0 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
İlk bölüm, raspivid'e videoyu standart çıkışa aktarmasını söyler:
raspivid -w 640 -h 480 -o - -t 0
Borudan sonraki kısım, VLC'ye onu almasını ve h264 kullanarak kodunu çözmesini söyler:
cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
Bu mux-ing ve demux-ing oldukça kaynakların belidir!
Github'da raspicam kaynaklarını buldum ve kodlamayı atlamak için encoder_buffer_callback yönteminde (şu anda satır 848'de) bir şey yapılabileceğini düşünüyorum. Ancak ben c iyi değil ve hiç video kodlama aşina değil, bu yüzden nereden başlayacak bir ipucu yok.
Github'da 330 çatal görebilirsiniz, ancak özellikle raspicam için değil (tüm kullanıcı projesi için). Kodlamayı kaldıran veya mjpeg gibi daha basit bir şey uygulayan bir çatal bulmaya çalışırken kayboldum.
C ve video codec bileşeni bilgisine sahip biri bana ve diğer gazillion kullanıcılarına gecikmeden kurtulmaları için yardımcı olabilir mi? Muhtemelen çözüm zaten bu çatallardan birinde zaten var, ama şanssız bir şekilde aramak için saatlerce harcadım.
ps Bir tarayıcı çözümü aramıyorum , ama nihayetinde tercihen mjpeg akışı kullanarak bir Synology'ye akış yapmak istiyorum (ancak bir web sayfası üzerinden değil, çoğu ticari ip kamerada yerleşik olarak gelen standart bir mjpeg akışı). İlk adım h264'ten kurtulmaktır.