두 시스템에서 VLC 플레이어 동기화


15

서로 다른 두 컴퓨터에서 VLC 재생을 동기화 할 수 있습니까? 집의 다른 부분에있는 두 대의 PC가 동일한 비디오를 재생하고 싶습니다. 따라서이 문제를 해결하는 다른 제안도 환영합니다!

답변:


9

멀티 캐스트를 사용합니다. 이것은 하나의 스트림을 모든 수신자에게 동시에 보냅니다.

네트워크에는 유선 및 Wi-Fi 세그먼트가 있습니다.

멀티 캐스트를 사용하면 스트림이 각 세그먼트에서 대역폭을 한 번만 사용합니다

또한 모든 컴퓨터가 거의 동시에 같은 패킷을 수신하므로 스위치를 통한 전파 지연이 줄어 듭니다. 전파 지연은 사운드 및 사람이 볼 수있는 비디오 (30fps)에는 무시할 수 있습니다.

발생할 수있는 유일한 것은 다른 컴퓨터가 네트워크 캐시의 다른 위치에서 작동한다는 것입니다. 가능한 한 가깝게 유지하기 위해 가장 느린 시스템 (Wi-Fi의 32 비트 랩톱)이 때때로 끊어지기 시작할 때까지 캐싱을 껐습니다.

이유 : 일단 vlc가 버퍼를 먹기 시작하면 버퍼의 시작 부분으로 돌아 오는 데 오랜 시간이 걸리지 만 코딩은 '제로 버퍼'로 돌아가는 것이 우선 순위가 아니지만 거기에 머무르는 것이 편안합니다.

또한 '서버'에서 두 개의 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 (한 줄에 있어야 함)

보시다시피 --no-sout-display가 제공됩니다. 스트림 출력은 생성되지만 로컬 출력은 생성되지 않습니다. 로컬 파일 / DVD 또는 네트워크 컨텐츠를 재생하더라도 상관없이 동일하게 수행됩니다.

무선 라우터가있는 경우 --ttl이> 1로 설정되어 있는지 확인하십시오. 나는 '놀람'을 얻지 않기 위해 항상 4로 설정했습니다. 그러나 다중 라우터 네트워크가 있고 한 네트워크의 호스트가 멀티 캐스트를 볼 수없는 경우 해당 ttl을 1 ~ 2 번 켜야합니다 (또는 라우터가 멀티 캐스트를 전혀 허용하지 않는지 확인하십시오). 기본적으로 설정되어 있습니다).

스트림을 생성하고 비 출력 vlc를 실행하는 시스템을 포함하여 모든 시스템에서 다음 vlc가 있습니다.

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

이것은 네트워크에서 네트워크 캐싱을 설정하고 가장 느린 시스템의 성능을 최대로 설정합니다. .06 초 분량의 캐시.

소리의 경우, 이것은 약 100 피트까지의 전파 거리에 해당합니다. 즉, 캐시를 최대로 먹으면 느린 시스템은 마치 100 피트 떨어져있는 것처럼 소리가납니다.

내 네트워크 지연은 .5ms 이상입니다 (ping하지 않음, 우선 순위가 낮은 스택 라운드 트립 및 몇 ms).

내가 100 피트 이상 떨어져있는 두 개의 시스템을 동시에 보거나 듣지 못하는 내 장소에서 (위층과 지하실을 폭파하지는 않지만, 이런 방식의 이점은 거실 앰프를 폭파하지 않고 어디에서나 동일하게 유지하는 것입니다).

침실의 노트북 : 너무 자주 자르면 캐시를 로컬로 올리면 지하실이나 위층에서 듣지 못하고 내가있을 때 다른 사람들을 차단했을 것입니다 :-).

매우 중요합니다. 트랜스 코딩이 필요할 때마다 모든 수신기에 동일한 프로토콜과 인코딩이 있으며 스트림을 생성하는 비 출력 vlc에서 트랜스 코딩을 수행합니다.

멀티 캐스트 클라이언트에서 코드 변환하지 않습니다. 각 시스템의 성능이 다르기 때문에 지연이 심할 수 있습니다.

이 오디오 예제에서는 트랜스 코딩이 전혀 없으며, shoutcast에서 시작한 인코딩을 모두 이해할 수 있습니다. (실제로 비디오를 위해 트랜스 코딩 할 필요가 없습니다 ... 모두 완전한 코덱 세트가 있습니다).

도움이 되나요?

네트에는 --network-synchronization 마스터 / 클라이언트와 여러 유니 캐스트 스트림 (서버에서 10 마일 길이의 대상 문자열 :-D)을 사용하여 동기화 된 vlc를 수행하는 예제가 있습니다.

그러나 세그먼트에서 n 개의 클라이언트로 유니 캐스트를 스트리밍하면 해당 세그먼트에서 스트림이 n 번 나타나고 원래 서버로 갈수록 동일한 스트림의 곱셈은 더 많은 대역폭을 소비합니다. 1080p 비디오를 볼 수 없습니다. 내 무선은 그중 하나를 간신히 처리 할 수 ​​있습니다 (56Mb).

아, GUI에서 방법을 묻습니다.

스트리밍 창에서 '추가 옵션'을 클릭하고 스트림을 생성하는 vlc 인스턴스에 대해 "로컬 재생"을 선택 해제하십시오 (로컬 파일, 재생 목록 또는 인터넷 스트림을 입력해야 함). 캐싱을 기본값 (1000ms의 캐시)으로 유지하십시오. 다른 클라이언트가 코덱을 이해할 수없는 경우 모두 동일한 시스템의 코덱을 이해하고 트랜스 코딩 할 코덱을 결정하십시오.

대상 옵션에서 기본 '디스플레이'를 로컬로 켜고 캐싱을 변경하십시오. 가장 느린 시스템이 종료 될 때까지이를 사용하여 (100에서 시작한 후 끄십시오), 더 빠른 모든 시스템을 동일하게 설정하십시오. 짧은 버퍼를 사용하면 클라이언트가 시작될 때 10 초에서 15 초 정도의 스퍼터링이 필요합니다.

내 고객은 시간의 100 %를 차지하며 스트리밍을 중단 할 때마다 멀티 캐스트 주소를 계속 듣습니다.

포트가 제공되지 않았습니다. 기본값은 모든 곳에서 1234입니다. 하나의 원래 서버를 실행합니다. 둘 이상을 실행하는 경우 다음과 같은 포트 번호를 제공해야합니다. ... 239.0.0.1:65535. 내 예제 번호 : 239/8에서 멀티 캐스트 주소를 선택하십시오. 포트 : 1024 이상을 선택했습니다 (예, Microsoft는 MC에서도 1024를 사용하므로 1024).

아무도 듣지 않으면 스트림이 네트워크에 전혀 표시되지 않으며 첫 번째 리스너가 멀티 캐스트 세션에 참여한 후에 만 ​​시작됩니다. 따라서 10을 정의하고 하나만 청취하면 하나의 스트림 먹는 대역폭이 있습니다. 다른 스트림을 듣는 경우 n 스트림에 대해 먹는 대역폭의 n 배를 얻습니다.

멀티 캐스트 : 사용 된 대역폭은 스트림 당 하나 또는 10000 개의 클라이언트에 대해 동일합니다.

유니 캐스트 사용 : 각 클라이언트가 발신자의 스트림에서 다른 시간에 홉핑하므로 캐싱을 강화하더라도 지연이 여전히 존재합니다. 유니 캐스트와 멀티 캐스트는 완전히 다릅니다. 이것이 유니 캐스트에 동기화 기능이있는 이유입니다.

전체 대상 저장소를 말하도록 동일하게 스트리밍하는 경우 다른 방법이 있습니다. 그러면 위성 vlc 클라이언트에 동기화하여 유니 캐스트를 스트리밍하고 거기에서 '음향 범위'내에있는 클라이언트를 제공합니다. 사무실에서는 층당 하나 또는 두 개를 수행하므로 모든 층은 유니 캐스트 및 네트워크 동기화를 사용하여 밀접하게 동기화됩니다. 바닥 내에서는 일반적으로 네트워크 전파 지연이 음향 지연보다 훨씬 짧으며 음향이 꺼 지므로 모든 스피커를들을 수있는 것이 아니라 주변 스피커 만들을 수 있습니다.

도움이 필요하면 sirhelpsalot@gmail.com으로 이메일을 보내 주시면 YouTube에이 내용을 넣을 수도 있습니다.

:-)


3
수퍼 유저에 오신 것을 환영합니다. 기여해 주셔서 감사합니다! 불필요한 주석을 제거하여 답을 조금 줄일 수 있습니까? 지금은 텍스트의 벽이며 실제 답변은 이해하기가 어렵습니다.
Indrek

1
비디오 동기화를위한 스트리밍 / 멀티 캐스트는 얼마나 안정적입니까? VLC를 실행하는 16 진 코어 데스크톱과 omxplayer를 실행하는 라즈베리 파이를 사용하는 경우, omxplayer가 스트림을 여는 데 3 초 이상 걸리지 않는다는 보장은 무엇입니까?
puk

4

VLC는 네트워크를 통해 출력을 스트리밍하고 로컬로 재생할 수 있으므로 네트워크를 통해 출력을 스트리밍하는 기계가 하나 있지만 "대상"탭에서 "로컬로 표시"옵션을 선택하는 것이 좋습니다.

다음 은 스트리밍에 사용할 설정에 대한 간단한 설명입니다.


1

VLC를 사용하여 (또는 문서가 업데이트되지 않음) netsync 라는 모듈이 있지만 대부분의 비정상적인 VLC 모듈과 마찬가지로 버그가 많고 거의 문서화되지 않고 무시됩니다. 나는 그것을 작동시키지 못했습니다.


1

spc-stm이 말했듯이 VLC를 사용하면 스트리밍을 동기화 할 수 있습니다. 이것을 확인하십시오 : http://www.hackedexistence.com/project-vlc.html


2
슈퍼 유저에 오신 것을 환영합니다! 이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
slhck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.