# Codecs

여러 개의 Hardware Device를 운용하는 사용자를 위해 다음과 같은 기능을 제공합니다.

1. 해당 Hardware Device에서 어떤 Codec/Module을 사용할 수 있는가?
2. 해당 Hardware Device에서 어떤 Encoder/Decode가 얼마큼 사용되고 있는가?
3. 해당 Hardware Device가 실제로 어느 정도 사용되고 있는가?

## Get Codecs 정보 (목록, 사용량)

OvenMediaEngine Enterprise가 설치된 각 Hardware Device 별로 사용 가능한 HW/SW Codec 정보와 사용량을 조회할 수 있습니다.

> **Request**

<details>

<summary><mark style="color:blue;">GET</mark> /v2/internals/codecs</summary>

**Header**

```http
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
```

</details>

> **Response**

<details>

<summary><mark style="color:blue;">200</mark> Ok</summary>

The request has succeeded

**Header**

```
Content-Type: application/json
```

**Body**

```json
{
    "message": "OK",
    "response": [
        {
            "busId": "-",
            "displayName": "FFmpeg Video Codecs",
            "id": 0,
            "isDecoder": true,
            "isDefault": true,
            "isEncoder": false,
            "isHwAccel": false,
            "mediaType": "Video",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 0
                }
            },
            "module": "default",
            "name": "default:0",
            "supportedCodecs": [
                "H264",
                "H265",
                "VP8"
            ]
        },
        {
            "busId": "-",
            "displayName": "Open Source H.264 Codec",
            "id": 0,
            "isDecoder": false,
            "isDefault": true,
            "isEncoder": true,
            "isHwAccel": false,
            "mediaType": "Video",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 0
                }
            },
            "module": "openh264",
            "name": "openh264:0",
            "supportedCodecs": [
                "H264"
            ]
        },
        {
            "busId": "-",
            "displayName": "x264 H.264 Codec",
            "id": 0,
            "isDecoder": false,
            "isDefault": false,
            "isEncoder": true,
            "isHwAccel": false,
            "mediaType": "Video",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 0
                }
            },
            "module": "x264",
            "name": "x264:0",
            "supportedCodecs": [
                "H264"
            ]
        },
        {
            "busId": "-",
            "displayName": "WebM VP8/VP9 Codec SDK",
            "id": 0,
            "isDecoder": false,
            "isDefault": true,
            "isEncoder": true,
            "isHwAccel": false,
            "mediaType": "Video",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 0
                }
            },
            "module": "libvpx",
            "name": "libvpx:0",
            "supportedCodecs": [
                "VP8"
            ]
        },
        {
            "busId": "-",
            "displayName": "FFmpeg Audio Codecs",
            "id": 0,
            "isDecoder": true,
            "isDefault": true,
            "isEncoder": false,
            "isHwAccel": false,
            "mediaType": "Audio",
            "metrics": {
                "active": {
                    "decoder": 5,
                    "encoder": 0
                }
            },
            "module": "default",
            "name": "default:0",
            "supportedCodecs": [
                "AAC",
                "OPUS"
            ]
        },
        {
            "busId": "-",
            "displayName": "Fraunhofer FDK AAC",
            "id": 0,
            "isDecoder": false,
            "isDefault": true,
            "isEncoder": true,
            "isHwAccel": false,
            "mediaType": "Audio",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 0
                }
            },
            "module": "fdkaac",
            "name": "fdkaac:0",
            "supportedCodecs": [
                "AAC"
            ]
        },
        {
            "busId": "-",
            "displayName": "Opus Interactive Audio Codec",
            "id": 0,
            "isDecoder": false,
            "isDefault": true,
            "isEncoder": true,
            "isHwAccel": false,
            "mediaType": "Audio",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 5
                }
            },
            "module": "libopus",
            "name": "libopus:0",
            "supportedCodecs": [
                "OPUS"
            ]
        },
        {
            "busId": "-",
            "displayName": "FFmpeg Image Codec",
            "id": 0,
            "isDecoder": false,
            "isDefault": true,
            "isEncoder": true,
            "isHwAccel": false,
            "mediaType": "Video",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 0
                }
            },
            "module": "default",
            "name": "default:0",
            "supportedCodecs": [
                "JPEG",
                "PNG",
                "WEBP"
            ]
        },
        {
            "busId": "00000000:3B:00.0",
            "displayName": "NVIDIA GeForce GTX 1050",
            "id": 0,
            "isDecoder": true,
            "isDefault": false,
            "isEncoder": true,
            "isHwAccel": true,
            "mediaType": "Video",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 0
                }
            },
            "module": "nv",
            "name": "nv:0",
            "supportedCodecs": [
                "H264",
                "H265"
            ]
        },
        {
            "busId": "00000000:3B:00.0",
            "displayName": "NVIDIA GeForce GTX 1050",
            "id": 0,
            "isDecoder": false,
            "isDefault": false,
            "isEncoder": true,
            "isHwAccel": true,
            "mediaType": "Audio",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 0
                }
            },
            "module": "nv",
            "name": "nv:0",
            "supportedCodecs": [
                "WHISPER"
            ]
        },
        {
            "busId": "00000000:AF:00.0",
            "displayName": "NVIDIA RTX 4000 SFF Ada Generation",
            "id": 1,
            "isDecoder": true,
            "isDefault": false,
            "isEncoder": true,
            "isHwAccel": true,
            "mediaType": "Video",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 0
                }
            },
            "module": "nv",
            "name": "nv:1",
            "supportedCodecs": [
                "H264",
                "H265"
            ]
        },
        {
            "busId": "00000000:AF:00.0",
            "displayName": "NVIDIA RTX 4000 SFF Ada Generation",
            "id": 1,
            "isDecoder": false,
            "isDefault": false,
            "isEncoder": true,
            "isHwAccel": true,
            "mediaType": "Audio",
            "metrics": {
                "active": {
                    "decoder": 0,
                    "encoder": 0
                }
            },
            "module": "nv",
            "name": "nv:1",
            "supportedCodecs": [
                "WHISPER"
            ]
        },
        {
            "busId": "18:01.0",
            "displayName": "Xilinx Corporation Device 513d",
            "id": 0,
            "isDecoder": true,
            "isDefault": false,
            "isEncoder": true,
            "isHwAccel": true,
            "mediaType": "Video",
            "metrics": {
                "active": {
                    "decoder": 5,
                    "encoder": 4
                }
            },
            "module": "xma",
            "name": "xma:0",
            "supportedCodecs": [
                "H264",
                "H265"
            ]
        }
    ],
    "statusCode": 200
}
```

</details>

<table><thead><tr><th width="156">Element</th><th width="135">Value</th><th>Description</th></tr></thead><tbody><tr><td>busId</td><td>-</td><td>해당 Module 또는 Device가 가지고 있는 Unique ID입니다.</td></tr><tr><td>displayName</td><td>-</td><td>사람이 인지 가능한 해당 Module 또는 Device의 표기명입니다.</td></tr><tr><td>id</td><td>-</td><td>해당 Module 또는 Device에 지정된 ID입니다.</td></tr><tr><td>isDecoder</td><td>ture | false</td><td>해당 Module 또는 Device가 Decoder를 지원하는지 여부를 표시합니다.</td></tr><tr><td>isDefault</td><td>ture | false</td><td>해당 Module 또는 Device가 Default로 동작하는지 여부를 표시합니다.</td></tr><tr><td>isEncoder</td><td>ture | false</td><td>해당 Module 또는 Device가 Encoder를 지원하는지 여부를 표시합니다.</td></tr><tr><td>isHwAccel</td><td>ture | false</td><td>해당 Module 또는 Device가 Hardware-accelerated를 지원하는지 여부를 표시합니다.</td></tr><tr><td>metrics.active.decoder</td><td>-</td><td>해당 Module 또는 Device에서 사용되고 있는 Decoder 개수입니다.</td></tr><tr><td>metrics.active.encoder</td><td>-</td><td>해당 Module 또는 Device에서 사용되고 있는  Encoder 개수입니다.</td></tr><tr><td>module</td><td>-</td><td>Module Type을 표시합니다.</td></tr><tr><td>name</td><td>{module}:{#}</td><td>Module의 Name입니다.<br><mark style="color:yellow;">e.g., nv:0, nv:1, nv:2, ...</mark></td></tr><tr><td>supportedCodecs</td><td>-</td><td>해당 Module이 지원 가능한 Codec을 표시합니다.</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/features/rest-api/v2/internals/codecs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
