VRED는 Python API, 웹 API 및 대기 시간이 짧은 동영상 스트리밍을 제공하는 통합 웹 서버와 함께 제공됩니다. Python API 및 웹 API는 HTTP 끝점을 사용하지만 스트림은 전이중 통신용 WebSocket을 통해 제공됩니다.
누군가가 VRED 스트림을 언급하는 경우 스트림 JPG 및 스트림 H264 기능에 대해 말하는 것입니다. 이러한 기능은 VRED 뷰포트의 라이브 이미지 스트림입니다. VRED 스트림에서는 장면 탐색, 터치 센서 사용, HTML 5 컨텐츠와의 상호 작용도 지원됩니다.

VRED 스트리밍 앱은 다른 도구입니다. 자세한 내용은 VRED 스트리밍 앱 을 참조하십시오.
스트리밍 이미지 데이터는 JPEG 또는 H264로 인코딩됩니다. 이 경우 H264가 더 자연스럽게 보이지만 JPEG를 과소평가해서는 안 됩니다. 대역폭이 더 필요하지만 꽤 빠르고 VRED를 위해 별도의 인코더가 필요하지 않으며 클라이언트 측에 특수 디코더를 필요로 하지 않습니다. 또한 OpenH264 v2.x 코덱은 3840 x 2160의 최대 해상도만 지원합니다.
장치 또는 시스템이 VRED가 실행 중인 PC에 연결할 수 있어야 합니다. 로컬 호스트를 사용하는 경우 VRED와 동일한 컴퓨터에서 브라우저를 실행해야 합니다.
VRED 스트림 HD(H264) 사용 시 먼저 GitHub에서 OpenH264 코덱 라이브러리를 다운로드한 후 압축되지 않은 openh264-2.0.0-win64.dll을 C:\Program Files\Autodesk\VREDPro-<internalVersion>\bin\WIN64에 복사합니다. H.264 코덱이 없으면 오류 메시지가 나타납니다.
VRED 장면을 엽니다.
편집 > 기본 설정 > 일반 설정 > 웹 인터페이스를 선택하고 웹 서버 사용이 활성화되어 있는지 확인합니다.
포트 번호를 기록합니다. 기본값은 8888입니다.
확인을 클릭합니다.
장치에서 웹 브라우저를 엽니다.
localhost:8888 또는 YourIP:8888을 입력합니다.
스트림 JPEG 또는 스트림 H264를 선택합니다.
연결 정보
스트림 끝점은 {schema}://{host}:{port}/socketstream입니다. 예를 들어, TLS를 사용하여 로컬 인스턴스에 연결하는 URI는 다음과 같습니다.
wss://localhost:8888/socketstream
WebSocket의 이진 유형은 arraybuffer입니다.
들어오는 데이터 정보
VRED는 WebSocket 연결을 통해 각 프레임에 대해 두 개의 메시지를 전송합니다. 첫 번째는 스트림 형식 및 몇 가지 추가 정보를 포함하는 직렬화된 JSON 문자열입니다. 두 번째는 프레임 이미지 데이터를 포함하는 이진입니다.
{
"format": {
"codec": "h264",
"width": 1024,
"height": 1320,
"fps": 60,
"bitrate": 8000,
"quality": 85,
"fixed": 0
},
"clients": 1
}
| 이름 | 유형 | 설명 |
|---|---|---|
| format.codec | 문자열 | 이진 이미지 데이터에 사용되는 스트림 코덱입니다. 현재 지원되는 코덱은 jpeg 및 h264입니다. |
| format.width | 숫자 | 이미지 데이터의 폭입니다. |
| format.height | 숫자 | 이미지 데이터의 높이입니다. |
| format.fps | 숫자 | 초당 최대 프레임의 한계입니다. |
| format.bitracate | 숫자 | H264 코덱에 사용되는 비트 전송률입니다. |
| format.quality | 숫자 | JPEG 코덱에 사용되는 이미지 품질입니다. |
| format.fixed | 숫자 | 스트림 형식 고정 여부를 나타내는 부울 값이며 변경할 수 없습니다. |
| clients | 숫자 | 동일한 VRED 인스턴스에 연결된 클라이언트 수입니다. |
이진 이미지 데이터에는 앞의 4바이트에 프레임 번호가 포함되어 있습니다. 이미지 데이터를 디코더로 보내기 전에 이 번호를 추출해야 합니다. 또한 프레임을 동기화하려면 프레임 번호를 VRED로 다시 보내야 합니다. 자세한 내용은 나가는 데이터를 참조하십시오.
나가는 데이터 정보
VRED는 클라이언트가 처리할 수 있는 프레임 수를 자동으로 관리할 수 있습니다. 이를 위해 VRED에서는 렌더링된 프레임을 확인하기 위해 클라이언트의 피드백이 필요합니다. 문자열 메시지는 sync(${frame})과 같은 형식입니다.
동기화 외에도 탐색 명령은 특히 이 채널을 통해 VRED로 보낼 수 있습니다. 아래 모든 명령 테이블이 나와 있습니다.
| 명령 | 매개변수 | 설명 | 예제 |
|---|---|---|---|
| dblclic | button: number, keyModifier: number, x: number, y: number | 마우스 두 번 클릭 | - |
| keypress | keyCode: number, keyModifier: number, x: number, y: number | 키 누르기 또는 키 아래로 | keypress(-10, 0x04000000, 483, 281) |
| mousedown | button: number, keyModifier: number, x: number, y: number | 마우스 버튼 아래로 | mousedown(-10, 0x02000000, 483, 281) |
| mouseup | button: number, keyModifier: number, x: number, y: number | 마우스 버튼 위로 | mouseup(-10, 0, 483, 281) |
| mousewheel | delta: number, keyModifier: number, x: number, y: number | 마우스 휠 변경 | mousewheel(-10, 0, 483, 281) |
| 동기화 | frame: number | VRED와 클라이언트 간에 프레임을 동기화합니다. | sync(128) |
| 업데이트 | - | VRED가 새 프레임을 강제로 렌더링하도록 합니다. | update() |
매개변수 설명:
button 값은 마우스 버튼을 나타냅니다. 왼쪽 버튼 = 0, 가운데 버튼 = 1, 오른쪽 버튼 = 2.keyCode는 눌린 키의 수정되지 않은 십진 ASCII 값을 나타냅니다.keyModifier 값은 눌린 키 수정자에 설정된 비트입니다. Alt 키 = 0x08000000, Ctrl 키 = 0x04000000, Shift 키 = 0x02000000.x 및 y 값은 스트림 이미지 크기에 상대적인 마우스 위치를 나타냅니다.모든 인터랙션으로 인해 VRED가 하나 이상의 새 프레임을 렌더링합니다. 추가 프레임은 렌더 설정에 따라 달라집니다. 예를 들어, 안티앨리어싱이 활성화된 경우 VRED는 여러 개의 프레임을 전송합니다.
스트림 형식 변경
스트림 형식은 별도의 /stream/param? 끝점을 통해 변경할 수 있습니다. 예를 들어, 다음은 TLS를 통해 형식을 전체 HD 및 JPEG 인코딩을 사용하여 로컬 인스턴스로 변경하는 URL입니다.
GET https://localhost:8888/stream/param?width=1920&height=1080&format=jpeg&quality=85&fps=30
아래 모든 매개변수 테이블이 나와 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| format | 문자열 | 스트림 코덱, jpeg 또는 h264일 수 있습니다. |
| width | 숫자 | 스트림 이미지의 폭입니다. |
| height | 숫자 | 스트림 이미지의 높이입니다. |
| fixed | 부울 | 해상도가 고정되어 있으며 fixed = false를 보낼 때까지 변경할 수 없음을 나타냅니다. |
| fps | 숫자 | 클라이언트에게 보내는 초당 최대 프레임 수를 제한합니다. |
| bitrate | 숫자 | 일반적으로 2000과 16000 사이의 값인 H264 코덱의 비트 전송률입니다. |
| quality | 숫자 | 1(최고 압축)에서 100(최고 품질) 사이의 값을 사용한 JPEG 인코더의 이미지 품질입니다. |