VLC oynatıcıları iki makinede senkronize etme


15

VLC'nin iki farklı makinede oynatılmasını senkronize etmek mümkün müdür? Evin farklı bölümlerindeki iki bilgisayarın aynı videoyu oynatmasını istiyorum - bu yüzden bu sorunu çözecek diğer öneriler de hoş geldiniz!

Yanıtlar:


9

Çok noktaya yayın kullanıyorum. Bu, tüm alıcılara aynı anda bir akış gönderir.

Ağ kablolu ve wifi segmentlerine sahiptir.

Çok noktaya yayın ile akış, her segmentte bant genişliğinin yalnızca bir kez kullanılmasını sağlar

Bu aynı zamanda tüm bilgisayarların aynı paketi yaklaşık aynı anda aldıkları, anahtarlarımda daha az yayılma gecikmesi olduğu anlamına gelir. Yayılma gecikmeleri ses ve insan tarafından görülebilir video (30fps) için önemsizdir.

Olabilecek tek şey, farklı bilgisayarların ağ önbelleklerinin farklı yerlerinde çalışmasıdır. Onları olabildiğince yakın tutmak için en yavaş sistem (wifi üzerinde 32bit dizüstü bilgisayar) bazen kesilmeye başlayana kadar önbelleği kapattım, sonra biraz daha verin.

Sebep: vlc tampon yemeye başladığında, tamponun başlangıcına geri dönmesi uzun zaman alır, kodlamanın 'sıfır tampona' geri dönmeye öncelik vermediği, ancak orada kalması rahat olduğu görülmektedir.

Ben de 'sunucu' iki vlc istemcileri kullanıyorum: biri akışı oluşturur ve yerel olarak görüntülenmez. Diğeri, aynı ağ önbellek ayarıyla akışı diğer tüm sistemler gibi dinleyen görüntüleme istemcisidir.

Komut satırında:

İnternet akışına bağlanan akış üreten istemci (bu büyük bir önbelleğe sahiptir, bu yüzden kesilmez ve çok noktaya yayın ağıma sabit bir akış sağlar):

vlc -vvv http://yp.shoutcast.com/sbin/tunein-station.pls?id=154 --sout udp:239.0.0.1 --no-sout-display --sout-keep --ttl 4 (bunun bir satırda olması gerekir)

Gördüğünüz gibi, --no-sout-display verilir: akış çıkışı oluşturulur, ancak yerel çıkış yoktur. Yerel dosyaları / DVD'leri veya ağ içeriğini oynatsam da aynı şeyi yaparım.

Ve bir yerde kablosuz yönlendiriciniz varsa --ttl değerinin> 1 olarak ayarlandığından emin olun. Her zaman 'sürprizler' olmamak için 4'e ayarladım. Ancak, çok yönlendiricili bir ağınız varsa ve bir ağdaki ana bilgisayarlar çok noktaya yayını göremiyorsa, bu ttl'yi bir veya iki kez açmanız gerekebilir (veya yönlendiricinizin çok noktaya yayına izin verip vermediğini kontrol edin, tüm kablosuz yönlendiriciler varsayılan olarak buna ayarlayın).

Akışı oluşturan ve olmayan vlc çalışan biri de dahil olmak üzere her sistemde, aşağıdaki vlc var:

vlc udp://@239.0.0.1 --network-caching 60 --sout-keep

Bu, ağımdaki ağ önbelleğini ve en yavaş sistemin performansı ile maks. .06 saniye önbellek değeri.

Ses için bu, yaklaşık 100 feet'e kadar bir yayılma mesafesine karşılık gelir, yani önbellek maksimuma yenilirse, yavaş sistem 100 ft uzakta gibi çalar.

Ağ gecikmem .5ms veya daha iyi (ping değil, bu düşük öncelikli yığın gidiş dönüş ve birkaç ms).

Asla aynı anda 100ft'den fazla iki sistem görmediğim veya duymadığım yerde (üst katta ve bodrumda patlamıyorum, bu şekilde yapmanın avantajı, oturma odası amfisini patlatmadan her yere aynı şekilde sahip olmaktır).

Yatak odasında dizüstü bilgisayar: çok sık keserse, ben sadece önbelleğini yerel olarak açmak, bodrum veya üst katta duymuyorum, ve ben oradayken muhtemelen diğerleri :-) kapattım.

Çok önemli: Kod dönüştürmeye her ihtiyaç duyduğumda, aynı protokol ve kodlama üzerinde tüm alıcılarım var ve kodlamayı, akışı oluşturan çıkışsız vlc'de yapıyorum.

Çok noktaya yayın istemcilerinde kod dönüştürme yapmıyorum. Her sistem performans bakımından farklı olduğu için bu durum kötü gecikmelere neden olur.

Bu ses örneği için hiç kod çevrimi yoktur, hepsi shoutcast kaynaklı kodlamaları anlayabilir. (aslında, vid için kod dönüştürmem gerekmiyor ... hepsi tam codec setlerine sahip).

Bu yardımcı olur mu?

Evet, --network senkronizasyon master / client ve çoklu tek noktaya yayın akışlarını (sunucuda 10 mil uzunluğunda bir hedef dize :-D) kullanarak senkronize edilmiş vlc yapmak için örnekler var.

Bununla birlikte: bir segmentteki n istemciye tek noktaya yayın akışı, akışın bu segmentte n kez görünmesini sağlar ve kaynak sunucuya ne kadar yükselirseniz, aynı akışın daha fazla çarpımı bant genişliğini tüketir. 1080p videomu göremezdim. Kablosuz cihazım bunlardan birini zorlukla halledebilir, her zaman değil (56Mb).

Oh, GUI'de nasıl olduğunu soruyorsun:

akış penceresinde "daha fazla seçenek" i tıklayın ve akışı oluşturan vlc örneği için "yerel olarak oynat" seçimini kaldırın (giriş olarak yerel dosya, oynatma listesi veya İnternet akışı vardır). Önbelleği varsayılan olarak bırakın (1000 ms değerinde önbellek). Diğer istemcilerden herhangi biri kod çözücünüzü anlayamıyorsa, aynı sistemde herkesin anladığı ve kod dönüştürülmesine karar verin.

Hedeflerin seçeneklerinde varsayılan 'yerel olarak göster' seçeneğini açık bırakır ve önbelleği değiştirirsiniz: en yavaş sisteminiz kesilinceye kadar bununla oynayın (100'den başlayın ve kapatın), sonra tüm hızlı sistemleri aynı şekilde ayarlayın. Kısa arabelleklerle: bir istemci başladığında, 'elde edene' kadar yaklaşık 10 ila 15 saniye püskürtme sürer.

Müşterilerim zamanın% 100'ünü oluşturuyor, akışımı durdurduğumda çok noktaya yayın adresini dinlemeye devam ediyorlar.

Bağlantı noktası verilmedi: varsayılan her yerde 1234, bir kaynak sunucu çalıştırıyorum. Birden fazla çalıştırırsanız, aşağıdaki gibi bir bağlantı noktası numarası vermeniz gerekir: ... 239.0.0.1:65535. Örnek numaram: 239/8'de herhangi bir çok noktaya yayın adresini seçin. Bağlantı Noktaları: 1024'ten fazlasını seçin (evet, 1024, çünkü Microsoft 1024'te MC'yi de kullanır).

Kimse dinlemiyorsa, akış ağda hiç görünmez, yalnızca ilk dinleyici çok noktaya yayın oturumuna katıldığında başlar. Eğer tanımlı 10 taneniz varsa ve yalnızca birini dinliyorsanız, bant genişliğini yiyen bir akışınız olur. Farklı akışları dinlerseniz, n akışları için yenen bant genişliğinin n katına çıkarsınız.

Çok noktaya yayın: kullanılan bant genişliği akış başına bir veya 10000 istemci için aynıdır.

Tek noktaya yayın kullanma: her müşteri, gönderenin akışını farklı bir zamanda atlar; bu, önbelleği sıkıştırsanız bile gecikmelerinizin hala mevcut olduğu anlamına gelir. Tek noktaya yayın ve çok noktaya yayın tamamen farklı çalışır. Bu yüzden tek noktaya yayın senkronizasyon özelliğine sahiptir.

Aynı şeyi tüm Hedef mağazayı söylemek için akış yapmanın farklı bir yolu vardır: o zaman uydu vlc istemcileriyle senkronizasyon ile tek noktaya yayın akışı gerçekleştirir ve oradan 'akustik aralık' içinde olanlara hizmet verirsiniz. Ofislerde kat başına bir veya iki tane yapıyorum, bu nedenle tüm katlar tek noktaya yayın ve ağ senkronizasyonu kullanılarak sıkı bir şekilde senkronize ediliyor. Zeminde genellikle ağ yayılım gecikmesi akustik gecikmeden çok daha kısadır ve akustik kapatılır, böylece tüm hoparlörleri duymazsınız, sadece yakınınızdakileri duyarsınız.

yardıma ihtiyacınız varsa bana sirhelpsalot@gmail.com adresinden e-posta, ben de youtube koymak olabilir.

:-)


3
SuperUser'a hoş geldiniz ve katkıda bulunduğunuz için teşekkürler! Gereksiz yorumları kaldırarak cevabınızı biraz kısaltır mısınız? Şu anda gerçek bir metin duvarı ve gerçek cevabı kavramak oldukça zor.
Indrek

1
Video senkronizasyonu için akış / çok noktaya yayın ne kadar güvenilirdir? VLC çalıştıran bir altıgen çekirdekli masaüstüm ve omxplayer çalıştıran bir ahududu pi varsa, o omxplayer akışı açmak için 3 s daha uzun sürmeyecek ne garanti var?
puk

4

VLC, bir ağ üzerinden çıkışı aktarabilir ve yerel olarak oynatabilir, bu nedenle ağ üzerinden bir makine akışına sahip olmanızı öneririm, ancak "hedefler" sekmesinde "yerel olarak görüntüle" seçeneğini işaretleyin.

İşte akışı için kullanımına ayarlardan çiş açıklamasıdır.


1

VLC'nin netsync adlı bir modülü vardır (veya hiçbir zaman güncellenmez), ancak çoğu sıra dışı VLC modülü gibi, buggy, zar zor belgelenir ve ihmal edilir. Hiç iţe yaramadým.


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.