Sinkronisasi pemain VLC pada dua mesin


15

Apakah mungkin untuk menyinkronkan pemutaran VLC pada dua mesin yang berbeda? Saya ingin memiliki dua PC di berbagai bagian rumah memutar video yang sama - jadi saran lain yang akan menyelesaikan masalah ini juga diterima!

Jawaban:


9

Saya menggunakan multicast. Ini mengirimkan satu aliran ke semua penerima secara bersamaan.

Jaringan memiliki segmen kabel dan wifi.

Dengan multicast, streaming hanya menggunakan satu kali bandwidth pada setiap segmen

Itu juga berarti bahwa semua komputer menerima paket yang sama pada waktu yang bersamaan, lebih sedikit penundaan propagasi melalui sakelar saya. Penundaan propagasi dapat diabaikan untuk suara dan video yang terlihat oleh manusia (30fps).

Satu-satunya hal yang dapat terjadi adalah bahwa komputer yang berbeda bekerja di tempat yang berbeda di cache jaringan mereka. Untuk menjaga mereka sedekat mungkin saya menolak caching sampai sistem paling lambat (laptop 32-bit pada wifi) kadang-kadang berhenti, kemudian berikan sedikit lebih banyak.

Alasan: sekali vlc mulai memakan buffer, dibutuhkan waktu lama untuk kembali ke awal buffer, tampaknya pengkodean tidak memprioritaskan untuk kembali ke 'zero buffer' tetapi nyaman untuk tetap di sana.

Saya juga menggunakan pada 'server' dua klien vlc: satu menghasilkan aliran dan tidak ditampilkan secara lokal. Yang lain adalah klien menampilkan yang mendengarkan aliran seperti semua sistem lain, dengan pengaturan cache jaringan yang sama.

Di baris perintah:

klien penghasil aliran yang terhubung ke aliran Internet (yang ini memiliki cache besar sehingga tidak terputus dan memberikan aliran konstan ke jaringan multicast saya):

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 (yang seharusnya berada pada satu baris)

Seperti yang Anda lihat, --no-sout-display diberikan: output stream dihasilkan, tetapi tidak ada output lokal. Saya melakukan hal yang sama, tidak masalah jika saya memutar file / DVD lokal atau konten jaringan.

Dan pastikan Anda memiliki --ttl set ke> 1 jika Anda memiliki router nirkabel di suatu tempat. Saya selalu mengaturnya menjadi 4 agar tidak mendapatkan 'kejutan'. Namun, jika Anda memiliki jaringan multi-router dan host di satu jaringan tidak dapat melihat multicast maka Anda mungkin perlu mengaktifkan satu atau dua ttl (atau memeriksa apakah router Anda membiarkan multicast masuk sama sekali, tidak semua router nirkabel atur seperti itu secara default).

Pada setiap sistem, termasuk yang menghasilkan aliran dan menjalankan vlc non-keluaran, saya memiliki vlc berikut:

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

Ini mengatur caching jaringan di jaringan saya dan dengan kinerja sistem paling lambat hingga maksimal. Cache senilai 0,06 detik.

Untuk suara, ini sesuai dengan jarak propagasi sekitar 100 kaki, yang berarti jika cache dimakan maksimal maka sistem lambat terdengar seolah-olah akan berjarak 100 kaki.

Keterlambatan jaringan saya adalah .5ms atau lebih baik (bukan ping, itu round trip stack prioritas rendah dan beberapa ms).

Di tempat saya, di mana saya tidak pernah melihat atau mendengar secara bersamaan dua sistem yang terpisah> 100 kaki (saya tidak meledakkan lantai atas dan bawah tanah, keuntungan melakukannya dengan cara ini adalah memiliki hal yang sama di mana-mana tanpa meledakkan amp ruang tamu).

Laptop di kamar tidur: jika terlalu sering keluar, saya hanya men-cache secara lokal, saya tidak mendengarnya di ruang bawah tanah atau di lantai atas, dan ketika saya di sana saya mungkin mematikan yang lain :-).

Sangat penting: setiap kali saya membutuhkan transcoding, saya memiliki semua penerima pada protokol dan encoding yang sama, dan saya melakukan transcoding pada vlc non-outputing yang menghasilkan aliran.

Saya tidak transcode pada klien multicast. Itu akan menghasilkan penundaan yang buruk karena setiap sistem berbeda dalam kinerja.

Untuk contoh audio ini tidak ada transkoding sama sekali, semua dapat memahami encoding yang berasal shoutcast. (sebenarnya, saya juga tidak perlu transcode untuk vid ... semua memiliki set codec lengkap).

Apakah ini membantu?

Ya, ada contoh di internet untuk melakukan sinkronisasi vlc menggunakan --network-sinkronisasi-master / klien dan beberapa aliran unicast (string target panjang 10 mil di server: -D).

Namun: streaming unicast ke n klien di segmen membuat aliran muncul n kali di segmen itu, dan semakin tinggi Anda menuju server asal, semakin banyak perkalian aliran yang sama memakan bandwidth. Saya tidak akan dapat melihat video 1080p saya. Nirkabel saya hampir tidak dapat menangani salah satunya, tidak selalu (56Mb).

Oh, Anda bertanya bagaimana di GUI:

di jendela streaming klik 'lebih banyak opsi' dan batalkan pilihan "mainkan secara lokal" untuk instance vlc yang menghasilkan aliran (sebagai input file lokal, daftar putar, atau aliran Internet). Biarkan cache di default (cache senilai 1000ms). Jika ada dari klien lain yang tidak dapat memahami codec Anda maka putuskan untuk satu yang semuanya mengerti dan transkode ke yang pada sistem yang sama ini.

Pada opsi tujuan Anda membiarkan 'tampilan lokal' default, dan mengubah caching: mainkan ini (mulai dari 100 dan turunkan) sampai sistem paling lambat Anda mati, kemudian atur semua sistem yang lebih cepat menjadi sama. Dengan buffer pendek: ketika klien memulai dibutuhkan sekitar 10 hingga 15 detik sputtering sampai 'mendapatkannya'.

Klien saya naik 100% dari waktu, setiap kali saya berhenti streaming mereka hanya mendengarkan alamat multicast.

Tidak ada port yang diberikan: standarnya adalah 1234 di mana-mana, saya menjalankan satu server asal. Jika Anda menjalankan lebih dari satu, maka Anda harus memberikan nomor port seperti: ... 239.0.0.1:65535. Nomor contoh saya: pilih alamat multicast di 239/8. Port: pilih yang di atas 1024 (ya, 1024, karena Microsoft menggunakan 1024 juga pada MC).

Jika tidak ada yang mendengarkan maka alirannya tidak muncul di jaringan sama sekali, itu hanya dimulai setelah pendengar pertama bergabung dengan sesi multicast. Jadi, jika Anda telah menetapkan sepuluh dan hanya mendengarkan satu, maka Anda memiliki satu aliran memakan bandwidth. Jika Anda mendengarkan stream yang berbeda maka Anda mendapatkan n kali bandwidth dimakan untuk n stream.

Multicast: bandwidth yang digunakan sama untuk satu atau 10.000 klien per aliran.

Menggunakan unicast: setiap klien melompat pada aliran pengirim pada waktu yang berbeda, yang berarti kelambatan Anda masih ada bahkan jika Anda akan memperketat caching. Pekerjaan Unicast dan multicast sama sekali berbeda. Itu sebabnya unicast memiliki fitur sinkronisasi.

Ada cara berbeda jika Anda melakukan streaming yang sama untuk mengatakan seluruh toko Target: maka Anda akan melakukan streaming unicast dengan sinkronisasi ke klien-klien satelit vlc, dan melayani mereka yang berada dalam 'jangkauan akustik' dari sana. Di kantor saya melakukan satu atau dua per lantai, sehingga semua lantai disinkronkan menggunakan unicast dan sinkronisasi jaringan. Di dalam lantai biasanya penundaan propagasi jaringan jauh lebih pendek daripada penundaan akustik, dan akustik ditolak sehingga Anda tidak mendengar semua speaker tetapi hanya yang di dekat Anda.

email saya di sirhelpsalot@gmail.com jika Anda butuh bantuan, saya mungkin memasukkan ini di youtube juga.

:-)


3
Selamat datang di SuperUser, dan terima kasih telah berkontribusi! Bisakah Anda memotong sedikit jawaban Anda dengan menghapus komentar yang tidak perlu? Sekarang ini benar-benar dinding teks dan jawaban sebenarnya cukup sulit untuk dipahami.
Indrek

1
Seberapa andal streaming / multicast untuk menyinkronkan video? Jika saya memiliki desktop hex core yang menjalankan VLC dan dan raspberry pi menjalankan omxplayer, jaminan apa yang saya miliki bahwa omxplayer tidak akan memakan waktu 3 detik lebih lama untuk membuka streaming?
puk

4

VLC dapat mengalirkan output melalui jaringan serta memutarnya secara lokal, jadi saya sarankan Anda memiliki satu mesin untuk mengalirkan output melalui jaringan, tetapi centang opsi "display local" di tab "destination".

Berikut adalah uraian pengaturan yang akan digunakan untuk streaming.


1

VLC digunakan untuk (atau tidak, dokumentasi tidak pernah diperbarui) memiliki modul yang disebut netsync tetapi seperti kebanyakan modul VLC yang tidak biasa, itu buggy, nyaris tidak didokumentasikan dan diabaikan. Saya tidak pernah berhasil.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.