답변:
멀티 캐스트를 사용합니다. 이것은 하나의 스트림을 모든 수신자에게 동시에 보냅니다.
네트워크에는 유선 및 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에이 내용을 넣을 수도 있습니다.
:-)
spc-stm이 말했듯이 VLC를 사용하면 스트리밍을 동기화 할 수 있습니다. 이것을 확인하십시오 : http://www.hackedexistence.com/project-vlc.html