정보실

웹학교

정보실

기타 OBS 및 WebSocket으로 비디오를 스트리밍 하는 방법

본문

WebSocket을 단순화하는 이러한 오픈 소스 지원 도구를 사용하여 스트리밍을 제어하십시오.


https://opensource.com/article/20/6/obs-websockets-streaming 


OBS는 현재 라이브 스트리밍 비디오의 필수 요소 중 하나입니다. 가장 인기 있는 라이브 비디오 사이트 중 하나 인 Twitch로 스트리밍 하기 위해 선호 되는 소프트웨어입니다. 스트리머가 실행 중인 비디오를 방해하지 않고 휴대 전화 또는 다른 화면에서 항목을 제어 할 수 있게 해주는 멋진 추가 기능이 있습니다. Node-REDobs-websockets 플러그인을 사용하여 자신의 제어판을 만드는 것은 정말 쉽습니다.


My OBS Control Dashboard 

내 OBS 제어 대시 보드


"여러분은 WebSockets을 말했고 같은 문장에서 쉽게 말했어요?" 많은 사람들이 웹 서버를 통한 단일 연결을 통한 양방향 통신을 허용하는 WebSocket을 설정하고 사용하는 데 어려움을 겪었습니다. Node-RED는 WebSocket을 기본적으로 지원하며 최소한 자신의 클라이언트 / 서버를 작성하는 것과 비교하여 이를 쉽게 만드는 부분입니다.


시작하기 전에 OBS가 설치 및 구성되어 있는지 확인하십시오. obs-websockets 플러그인의 최신 안정 릴리스를 다운로드하여 설치하십시오. 이 기사의 경우 기본 설정은 괜찮지 만 향후 obs-websockets 보안에 대한 지침을 따르는 것이 좋습니다.


그런 다음 동일한 시스템 또는 다른 시스템 (예 : Raspberry Pi)에 Node-RED를 다운로드하여 설치하십시오. 다시 말하지만 기본 설치는 우리의 목적에 적합하지만 사이트의 지시에 따라 설치를 보호하는 것이 좋습니다.


이제 재미있는 부분이 있습니다. Node-RED를 시작하고 웹 인터페이스 (기본적으로 http : // localhost : 1880)를 열면 빈 캔버스가 있습니다. 오른쪽의 "햄버거"메뉴를 열고 "구개 관리"를 선택하십시오. 그런 다음 "설치"탭을 클릭하고 "node-red-contrib-dashbe"및 "node-red-contrib-rbe"모듈을 검색하십시오.


설치가 완료되면 오른쪽 목록을 클릭하고 다음 블록을 캔버스로 끌어서 놓으십시오.


  • 1 Websocket Out
  • 1 Websocket In
  • 1 Debug
  • 1 Inject
  • 1 Switch
  • 1 Change
  • 2 JSON
  • 1 Catch

다음 순서로 연결하십시오.


Inject->Button->Change->JSON->Websocket Out

Websocket In->JSON->Switch->RBE->Debug

Catch->Debug 


The basic flows 

기본 흐름


버튼을 누르면 (또는 인 젝트 노드가 타임 스탬프를 보내면) 페이 로드가 변경 노드를 통해 전송되고 JSON 객체에서 문자열로 변환 된 다음 WebSocket Out 노드로 전송됩니다. WebSocket In 노드에서 메시지를 받으면 JSON 객체로 변환되고, 복제되지 않은 경우 디버그 노드로 보내 출력됩니다. 그리고 Catch 노드는 오류를 잡아 디버그 패널에 넣습니다.


그 페이로드에 무엇입니까? 모든 것을 설정하고 알아 봅시다.


먼저 버튼을 두 번 클릭하여 설정 대화 상자를 엽니 다. 드롭 다운 메뉴를 사용하여 페이로드를 "JSON"으로 변경하여 시작하십시오. 필드에서 다음을 추가하십시오.


{"request-type":"GetVersion"} 


"msg 입력이 도착하면 버튼 클릭 에뮬레이션"확인란을 선택하고 완료를 클릭하여 버튼 구성을 닫습니다. 메시지가 인젝트 노드에서 나왔거나 UI에서 버튼을 누르면 JSON 페이로드가 다음 노드로 전송됩니다.


Setting up the button 

버튼 설정


이제 Change 노드를 여십시오. 첫 번째 필드를 payload에서 payload.message-id로 변경 한 다음 두 번째 필드의 드롭 다운을 사용하여 유형을 String에서 msg로 변경하여 msg.payload.message-id를 msg._msgid로 설정하려고 합니다. _msgid를 필드에 넣습니다. 고유 한 메시지 ID를 JSON 오브젝트 페이로드에 복사하여 각 요청에 추적을 위한 고유 한 ID가 있습니다.


그런 다음 JSON 노드로 전송되어 JSON 객체에서 문자열로 변환 된 다음 Websocket Out 노드로 전달됩니다. Websocket Out 노드를 열어 OBS에 대한 연결을 구성하십시오. 먼저 유형을 연결 대상으로 변경 한 다음 연필 아이콘을 클릭하여 새 연결 URL을 만듭니다. 이를 ws : // OBSMachine : 4444 /로 설정하고 대화 상자를 닫아 저장하십시오. OBSMachine은 OBS 및 obs-websocket이 실행 중인 시스템의 이름입니다. 예를 들어, Node-RED가 동일한 시스템에서 실행 중인 경우 이는 ws : // localhost : 4444이며 "luxuria.local"이라는 시스템에 있는 경우 ws : //luxuria.local입니다. 4444. Websocket Out 노드를 닫고 업데이트하십시오. 페이로드 텍스트 문자열을 OBS의 WebSocket으로 보냅니다.


Websocket Out Node configuration 

웹 소켓 출력 노드 구성


WebSocket에서 진행 중! WebSocket In 노드를 열고 연결 유형으로 설정하고 이전에 정의한 연결의 URL로 설정하십시오 (자동으로 채워야 함). 다음 줄은 두 번째 JSON 노드로, 그대로 둘 수 있습니다. OBS의 출력을 받아 페이로드 객체로 변환합니다.


다음으로, 우리는 정기적으로 하트 비트 및 상태 업데이트를 필터링합니다. 스위치를 열고 "Property"값을 payload [ "update-type"]로 설정하십시오. 이제 아래 드롭 다운에서 Null 아님을 선택하십시오. +를 클릭하여 두 번째 옵션을 추가하고 드롭 다운에서 다른 옵션을 선택하십시오.


Switch Node configuration 

스위치 노드 구성


스위치의 새 출력을 디버그 노드 입력에 직접 연결하십시오.


중복을 필터링 하는 RBE 노드는 감시 할 필드를 알려야 합니다. 상태 업데이트 만 전송하는 스위치의 출력에 연결되어야 하므로 obs-websocket은 몇 초마다 업데이트를 전송하므로 중요합니다. 기본적으로 RBE는 전체 페이로드 객체를 비교하며 지속적으로 변경됩니다. RBE 노드를 열고 특성을 페이로드에서 payload.streaming으로 변경하십시오. 페이로드의 스트리밍 값이 변경되면 메시지를 전달하십시오. 그렇지 않으면 버립니다.


마지막 단계는 디버그 노드 출력을 msg.payload에서 완전한 msg 오브젝트로 변경하는 것입니다. 이를 통해 전체 객체를 볼 수 있으며 때로는 페이로드 외부에 유용한 정보가 있습니다.


이제 배치를 클릭하여 변경 사항을 활성화하십시오. WebSocket 노드 아래에 녹색 "연결됨"메시지가 표시되기를 바랍니다. 빨간색 또는 노란색 인 경우 연결 URL이 잘못되어 업데이트가 필요하거나 연결이 차단 된 것입니다. 원격 시스템의 포트 4444가 열려 있고 사용 가능한지, OBS가 실행 중인지 확인하십시오!


스트리밍 값에서 RBE 노드를 필터링 하지 않으면 디버그 패널 (캔버스 오른쪽의 버그 아이콘)이 현재 하트 비트 메시지로 채워집니다. 인 젝트 노드 왼쪽에 있는 버튼을 클릭하여 버튼 클릭을 시뮬레이션 하는 신호를 보냅니다. 모든 것이 잘되면 obs-websocket이 할 수 있는 모든 것들의 목록이 있는 객체가 도착하는 것을 볼 수 있습니다.


The response to "GetVersion" 

"GetVersion"에 대한 응답


이제 다른 탭이나 창에서 http : // localhost : 1880 / ui를 엽니다. 단일 버튼이 표시되어야 합니다. 눌러라! 디버그 패널에는 이전과 동일한 정보가 표시되어야 합니다.


축하합니다! 첫 번째 WebSocket 메시지를 OBS에 보냈습니다!


이것은 obs-websocket과 Node-RED로 할 수있는 것의 시작에 불과합니다. 지원되는 것에 대한 완전한 문서는 obs-websockets에 대한 GitHub 리포지토리의 protocol.md 파일에 문서화 되어 있습니다. 약간의 실험만으로 모든 기능을 갖춘 제어판을 만들어 스트리밍을 시작 및 중지하고 장면을 변경하는 등 다양한 작업을 수행 할 수 있습니다. 나 같은 사람이라면 알기 전에 모든 종류의 컨트롤을 설정해야 합니다.


OBS Websocket 



페이지 정보

조회 17회 ]  작성일20-06-25 11:46

웹학교