VRED 스트림(스트림 JPEG 및 스트림 H264)

VRED는 Python API, 웹 API 및 대기 시간이 짧은 동영상 스트리밍을 제공하는 통합 웹 서버와 함께 제공됩니다. Python API 및 웹 API는 HTTP 끝점을 사용하지만 스트림은 전이중 통신용 WebSocket을 통해 제공됩니다.

누군가가 VRED 스트림을 언급하는 경우 스트림 JPG스트림 H264 기능에 대해 말하는 것입니다. 이러한 기능은 VRED 뷰포트의 라이브 이미지 스트림입니다. VRED 스트림에서는 장면 탐색, 터치 센서 사용, HTML 5 컨텐츠와의 상호 작용도 지원됩니다.

VRED 스트림 웹 인터페이스

참고:

VRED 스트리밍 앱은 다른 도구입니다. 자세한 내용은 VRED 스트리밍 앱 을 참조하십시오.

스트리밍 이미지 데이터는 JPEG 또는 H264로 인코딩됩니다. 이 경우 H264가 더 자연스럽게 보이지만 JPEG를 과소평가해서는 안 됩니다. 대역폭이 더 필요하지만 꽤 빠르고 VRED를 위해 별도의 인코더가 필요하지 않으며 클라이언트 측에 특수 디코더를 필요로 하지 않습니다. 또한 OpenH264 v2.x 코덱은 3840 x 2160의 최대 해상도만 지원합니다.

VRED 스트림 옵션에 액세스하는 방법

장치 또는 시스템이 VRED가 실행 중인 PC에 연결할 수 있어야 합니다. 로컬 호스트를 사용하는 경우 VRED와 동일한 컴퓨터에서 브라우저를 실행해야 합니다.

중요:

VRED 스트림 HD(H264) 사용 시 먼저 GitHub에서 OpenH264 코덱 라이브러리를 다운로드한 후 압축되지 않은 openh264-2.0.0-win64.dllC:\Program Files\Autodesk\VREDPro-<internalVersion>\bin\WIN64에 복사합니다. H.264 코덱이 없으면 오류 메시지가 나타납니다.

  1. VRED 장면을 엽니다.

  2. 편집 > 기본 설정 > 일반 설정 > 웹 인터페이스를 선택하고 웹 서버 사용이 활성화되어 있는지 확인합니다.

    포트 번호를 기록합니다. 기본값은 8888입니다.

  3. 확인을 클릭합니다.

  4. 장치에서 웹 브라우저를 엽니다.

  5. localhost:8888 또는 YourIP:8888을 입력합니다.

  6. 스트림 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 문자열 이진 이미지 데이터에 사용되는 스트림 코덱입니다. 현재 지원되는 코덱은 jpegh264입니다.
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.
  • xy 값은 스트림 이미지 크기에 상대적인 마우스 위치를 나타냅니다.

모든 인터랙션으로 인해 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 숫자 일반적으로 200016000 사이의 값인 H264 코덱의 비트 전송률입니다.
quality 숫자 1(최고 압축)에서 100(최고 품질) 사이의 값을 사용한 JPEG 인코더의 이미지 품질입니다.