ซิงโครไนซ์เครื่องเล่น VLC บนสองเครื่อง


15

เป็นไปได้หรือไม่ที่จะทำการซิงโครไนซ์การเล่นของ VLC บนเครื่องที่แตกต่างกันสองเครื่อง? ฉันต้องการมีคอมพิวเตอร์สองเครื่องในส่วนต่าง ๆ ของบ้านเล่นวิดีโอเดียวกันดังนั้นคำแนะนำอื่น ๆ ที่จะแก้ปัญหานี้ก็ยินดีต้อนรับเช่นกัน!

คำตอบ:


9

ฉันใช้มัลติคาสต์ สิ่งนี้จะส่งกระแสข้อมูลหนึ่งไปยังผู้รับทั้งหมดพร้อมกัน

เครือข่ายมีส่วนแบบมีสายและไร้สาย

ด้วยมัลติคาสต์สตรีมจะใช้แบนด์วิดท์เพียงครั้งเดียวในแต่ละเซ็กเมนต์

นั่นหมายความว่าคอมพิวเตอร์ทุกเครื่องจะได้รับแพ็คเก็ตเดียวกันในเวลาเดียวกันโดยมีความล่าช้าน้อยกว่าในการแพร่กระจายของสวิตช์ ความล่าช้าในการแพร่กระจายนั้นไม่มีความสำคัญต่อเสียงและวิดีโอที่มนุษย์มองเห็น (30fps)

สิ่งเดียวที่สามารถเกิดขึ้นได้คือคอมพิวเตอร์ต่าง ๆ ทำงานในที่ต่าง ๆ ในแคชเครือข่าย เพื่อให้ใกล้ที่สุดเท่าที่จะเป็นไปได้ฉันจึงปิดการแคชจนกว่าระบบที่ช้าที่สุด (แล็ปท็อป 32 บิตบน wifi) เริ่มตัดออกบางครั้งจากนั้นให้เพิ่มอีกนิดหน่อย

เหตุผล: เมื่อ vlc เริ่มกินบัฟเฟอร์มันใช้เวลานานกว่าจะกลับมาที่จุดเริ่มต้นของบัฟเฟอร์ดูเหมือนว่าการเข้ารหัสไม่ได้จัดลำดับความสำคัญเพื่อกลับไปที่ 'zero buffer' แต่สะดวกที่จะอยู่ที่นั่น

ฉันยังใช้ใน 'เซิร์ฟเวอร์' สองไคลเอนต์ vlc: หนึ่งสร้างกระแสและไม่แสดงในเครื่อง อีกอันคือไคลเอนต์ที่แสดงผลซึ่งฟังกระแสเช่นเดียวกับระบบอื่น ๆ ทั้งหมดที่มีการตั้งค่าแคชเครือข่ายเดียวกัน

ในบรรทัดคำสั่ง:

สตรีมที่สร้างไคลเอนต์ที่เชื่อมต่อกับอินเทอร์เน็ตสตรีม (อันนี้มีแคชขนาดใหญ่ดังนั้นจึงไม่ตัดออกและส่งกระแสคงที่ไปยังเครือข่ายมัลติคาสต์ของฉัน):

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 (นั่นควรจะเป็นหนึ่งบรรทัด)

ตามที่คุณเห็น - ไม่ได้รับ sout-display: เอาต์พุตสตรีมถูกสร้างขึ้น แต่ไม่มีเอาต์พุตโลคัล ฉันทำเช่นเดียวกันไม่ว่าฉันจะเล่นไฟล์ / ดีวีดีภายในเครื่องหรือเนื้อหาบนเครือข่าย

และตรวจสอบให้แน่ใจว่าคุณมี - ตั้งค่าเป็น> 1 หากคุณมีเราเตอร์ไร้สายอยู่ที่อื่น ฉันตั้งค่าเป็น 4 เสมอเพื่อไม่ให้ได้รับ 'ความประหลาดใจ' อย่างไรก็ตามหากคุณมีเครือข่ายมัลติเราเตอร์และโฮสต์ในเครือข่ายเดียวไม่สามารถเห็นมัลติคาสต์ได้คุณอาจจำเป็นต้องเปิดใช้งาน ttl หนึ่งหรือสองตัว (หรือตรวจสอบว่าเราเตอร์ของคุณมีหลายผู้รับผ่านหรือไม่ ตั้งค่าเป็นค่าเริ่มต้น)

ในทุกระบบรวมถึงระบบที่สร้างกระแสข้อมูลและมีการเรียกใช้ vlc ที่ไม่ส่งออกฉันมี vlc ต่อไปนี้:

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

นี่เป็นการตั้งค่าแคชเครือข่ายในเครือข่ายของฉันและด้วยประสิทธิภาพของระบบที่ช้าที่สุดให้สูงสุด .06 วินาทีมูลค่าแคช

สำหรับเสียงสิ่งนี้สอดคล้องกับระยะการแพร่กระจายไปที่ประมาณ 100 ฟุตซึ่งหมายความว่าถ้าแคชถูกกินจนสูงสุดแล้วระบบช้าจะส่งเสียงดังราวกับว่ามันจะอยู่ห่างออกไป 100ft

ความล่าช้าของเครือข่ายของฉันคือ. 5ms หรือดีกว่า (ไม่ใช่ ping นั่นเป็นสแต็กที่มีลำดับความสำคัญต่ำไปกลับและหลายมิลลิวินาที)

ในสถานที่ของฉันที่ฉันไม่เคยเห็นหรือได้ยินพร้อมกันทั้งสองระบบที่อยู่ห่างกัน> 100 ฟุต (ฉันไม่ได้ระเบิดขึ้นไปชั้นบนและชั้นใต้ดินข้อดีของการทำแบบนี้คือการมีเหมือนกันทุกที่โดยไม่ต้องทำลายแอมป์ห้องนั่งเล่น)

แล็ปท็อปในห้องนอน: ถ้ามันตัดบ่อยเกินไปฉันเพิ่งเปิดแคชในเครื่องฉันไม่ได้ยินในห้องใต้ดินหรือชั้นบนและเมื่อฉันอยู่ที่นั่นฉันอาจปิดตัวเอง :-)

สำคัญมาก: เมื่อใดก็ตามที่ฉันต้องการแปลงรหัสฉันมีตัวรับทั้งหมดในโปรโตคอลและการเข้ารหัสเดียวกันและฉันทำการแปลงรหัสบน vlc ที่ไม่ส่งสัญญาณออกที่สร้างกระแส

ฉันไม่แปลงรหัสบนไคลเอนต์มัลติคาสต์ ซึ่งจะส่งผลให้เกิดความล่าช้าเนื่องจากแต่ละระบบมีประสิทธิภาพแตกต่างกัน

สำหรับตัวอย่างเสียงนี้ไม่มีการแปลงรหัสเลยทุกคนสามารถเข้าใจการเข้ารหัสที่มาจาก shoutcast (อันที่จริงฉันไม่จำเป็นต้องแปลงรหัสสำหรับ vid เช่นกัน ... ทั้งหมดมีชุดตัวแปลงสัญญาณเต็มรูปแบบ)

สิ่งนี้ช่วยได้ไหม?

ใช่มีตัวอย่างบนเน็ตที่จะซิงโครไนซ์ vlc โดยใช้ --network-synchron master / ไคลเอนต์และสตรีม unicast หลายรายการ (สตริงเป้าหมายยาว 10 ไมล์บนเซิร์ฟเวอร์ :-D)

อย่างไรก็ตาม: การสตรีม unicast ไปยังไคลเอนต์บนเซ็กเมนต์ทำให้สตรีมปรากฏ n ครั้งในเซกเมนต์นั้นและยิ่งคุณสูงขึ้นไปสู่เซิร์ฟเวอร์ต้นทางยิ่งทวีคูณของสตรีมเดียวกันกินแบนด์วิธมากขึ้น ฉันไม่สามารถดูวิดีโอ 1080p ของฉันได้ ไร้สายของฉันสามารถรองรับหนึ่งในนั้นได้ไม่เสมอไป (56Mb)

โอ้คุณถามว่าใน GUI:

ในหน้าต่างการสตรีมคลิก 'ตัวเลือกเพิ่มเติม' และยกเลิกการเลือก "เล่นในเครื่อง" สำหรับอินสแตนซ์ vlc ที่สร้างกระแสข้อมูล (มีการป้อนไฟล์ภายในเครื่องรายการเล่นหรือกระแสข้อมูลอินเทอร์เน็ต) ปล่อยให้แคชเป็นค่าเริ่มต้น (มูลค่าแคช 1000ms) หากไคลเอนต์อื่นไม่สามารถเข้าใจตัวแปลงสัญญาณของคุณให้ทำการเลือกตัวแปลงที่เข้าใจและแปลงรหัสเป็นรหัสเดียวกันในระบบเดียวกันนี้

ในตัวเลือกของจุดหมายปลายทางที่คุณเปิดไว้ 'เปิดเครื่อง' และเปลี่ยนแคช: เล่นด้วยสิ่งนี้ (เริ่มต้นที่ 100 แล้วเปิดลง) จนกว่าระบบที่ช้าที่สุดของคุณจะถูกตัดออกจากนั้นตั้งค่าระบบที่เร็วกว่าทั้งหมด ด้วยบัฟเฟอร์สั้น: เมื่อไคลเอนต์เริ่มต้นจะใช้เวลาประมาณ 10 ถึง 15 วินาทีของการสปัตเตอร์จนกว่าจะ 'ได้รับ'

ลูกค้าของฉันมีเวลาเพิ่มขึ้น 100% ทุกครั้งที่ฉันหยุดการสตรีมพวกเขาจะคอยฟังที่อยู่แบบหลายผู้รับ

ไม่ได้ระบุพอร์ต: ค่าเริ่มต้นคือ 1234 ทุกที่ฉันใช้เซิร์ฟเวอร์ต้นทางหนึ่งเครื่อง หากคุณใช้มากกว่าหนึ่งคุณต้องให้หมายเลขพอร์ตดังนี้: ... 239.0.0.1:65535 หมายเลขตัวอย่างของฉัน: เลือกที่อยู่แบบหลายผู้รับใน 239/8 พอร์ต: เลือกมากกว่า 1024 (ใช่, 1024, เพราะ Microsoft ใช้ 1024 ด้วยบน MC)

หากไม่มีใครฟังแล้วสตรีมจะไม่ปรากฏในเครือข่ายเลยเริ่มต้นเมื่อผู้ฟังคนแรกเข้าร่วมเซสชันมัลติคาสต์ ดังนั้นหากคุณมีสิบที่กำหนดไว้และฟังเพียงหนึ่งเดียวแล้วคุณมีหนึ่งแบนด์วิธกินกระแส หากคุณฟังสตรีมที่แตกต่างกันคุณจะได้รับ n เท่าของแบนด์วิดท์ที่กินสำหรับสตรีม n

Multicast: แบนด์วิดท์ที่ใช้เหมือนกันสำหรับหนึ่งหรือ 10,000 ไคลเอ็นต์ต่อสตรีม

การใช้ unicast: ไคลเอนต์แต่ละรายการกระโดดในสตรีมของผู้ส่งในเวลาที่แตกต่างกันซึ่งหมายความว่าการล่าช้าของคุณยังคงปรากฏแม้ว่าคุณจะทำการแคชให้แน่น Unicast และ multicast ทำงานแตกต่างกันโดยสิ้นเชิง นั่นเป็นสาเหตุที่ unicast มีคุณสมบัติการซิงค์

มีวิธีที่แตกต่างกันถ้าคุณสตรีมแบบเดียวกันเพื่อบอกว่าที่เก็บเป้าหมายทั้งหมด: จากนั้นคุณจะสตรีม unicast ด้วยการซิงโครไนซ์กับไคลเอนต์ดาวเทียม vlc และให้บริการผู้ที่อยู่ในช่วงอะคูสติก ในสำนักงานฉันทำหนึ่งหรือสองต่อชั้นดังนั้นทุกชั้นถูกซิงโครไนซ์อย่างแน่นหนาโดยใช้ unicast และการซิงโครไนซ์เครือข่าย ภายในพื้นมักจะมีการหน่วงเวลาการแพร่กระจายเครือข่ายสั้นกว่าอะคูสติกดีเลย์มากและเสียงจะไม่ทำงานดังนั้นคุณจะไม่ได้ยินลำโพงทั้งหมด แต่มีเฉพาะลำโพงที่อยู่ใกล้คุณเท่านั้น

ส่งอีเมลฉันที่ sirhelpsalot@gmail.com หากคุณต้องการความช่วยเหลือฉันอาจใส่ไว้ใน youtube เช่นกัน

:-)


3
ยินดีต้อนรับสู่ SuperUser และขอขอบคุณสำหรับการมีส่วนร่วม! คุณช่วยลดคำตอบลงเล็กน้อยโดยลบความเห็นที่ไม่จำเป็นออกไหม ตอนนี้มันเป็นกำแพงข้อความจริงและคำตอบจริงนั้นยากที่จะเข้าใจ
Indrek

1
ความน่าเชื่อถือของการสตรีม / มัลติคาสต์สำหรับการซิงโครไนซ์วิดีโอเป็นอย่างไร ถ้าฉันมีเดสก์ท็อป hex core ที่ใช้ VLC และและ raspberry pi ใช้ omxplayer ฉันจะรับประกันได้อย่างไรว่า omxplayer นั้นจะไม่ใช้เวลานานกว่า 3 วินาทีในการเปิดสตรีม
puk

4

VLC สามารถสตรีมเอาท์พุทผ่านเครือข่ายรวมทั้งเล่นแบบโลคัลดังนั้นฉันขอแนะนำให้คุณมีเครื่องหนึ่งสตรีมเอาท์พุทผ่านเครือข่าย แต่ทำเครื่องหมายที่ตัวเลือก "display local" ในแท็บ "จุดหมายปลายทาง"

นี่คือคำอธิบายกระจ้อยร่อยของการตั้งค่าที่จะใช้สำหรับการสตรีม


1

VLC ใช้ในการ (หรือไม่เคยมีการอัปเดตเอกสารประกอบ) มีโมดูลที่เรียกว่าnetsyncแต่เหมือนโมดูล VLC ที่ผิดปกติส่วนใหญ่เป็นรถเข็นเอกสารและแทบไม่ได้รับการเอาใจใส่ ฉันไม่เคยได้รับมันเพื่อทำงาน


1

ตามที่ spc-stm กล่าวว่า VLC ให้คุณซิงโครไนซ์สตรีม ตรวจสอบสิ่งนี้: http://www.hackedexistence.com/project-vlc.html


2
ยินดีต้อนรับสู่ Super User! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
slhck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.