VOD Station은 인코딩 옵션을 생성하기 위한 API를 제공하며 생성한 인코딩 옵션 조회를 위해 인코딩 옵션 목록 조회 API와 인코딩 옵션 정보 조회 API를 제공합니다.
요청
POST https://vod-station.apigw.gov-ntruss.com/api/v2/encoding-option
요청 헤더
헤더명 | 설명 |
---|---|
x-ncp-region_code | 네이버 클라우드 플랫폼 region code x-ncp_region_code:{Region Code} |
x-ncp-apigw-timestamp | 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 표현 API Gateway 서버와 시간 차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주 x-ncp-apigw-timestamp:{Timestamp} |
x-ncp-iam-access-key | 네이버 클라우드 플랫폼 포털에서 발급받은 Access Key ID 값x-ncp-iam-access-key:{Sub Account Access Key} |
x-ncp-apigw-signature-v2 | Access Key ID 값과 Secret Key로 암호화한 서명x-ncp-apigw-signature-v2:{API Gateway Signature} |
Content-Type | Request body content type을 application/json으로 지정Content-Type: application/json |
요청 바디
API 요청 시 필드명의 대소문자 구분이 필요합니다.
필드명 | 필수 여부 | 타입 | 제약 사항 | 기본 값 | 설명 |
---|---|---|---|---|---|
name | Yes | String | 영문, 숫자, 쌍점( : ), 붙임표( - ), 밑줄 문자( _ ) 허용, 3자 이상 20자 이하 | 생성할 사용자 지정 인코딩 옵션의 이름 | |
format | Yes | String | MP4 | 변환된 미디어 파일 컨테이너 포맷 | |
encodingOptionType | No | String | NORMAL, AUDIO | NORMAL | - 사용자 지정 인코딩 옵션의 타입 비디오와 오디오를 포함하는 NORMAL 프리셋 혹은 오디오 스트림만 포함하는 AUDIO 프리셋 선택 |
audio | Yes | Object | 트랜스코딩 오디오 옵션 설정 객체 | ||
audio.codec | Yes | String | AAC | 오디오 코덱 설정 | |
audio.channel | Yes | Integer | AUTO(-2), 1, 2 | - 출력 오디오의 채널 설정 AUTO 설정 시 원본의 오디오 채널을 사용 참고: 인풋 미디어 파일의 오디오 채널과 다른 설정으로 인코딩 시 볼륨의 변화가 발생 할 수 있음 |
|
audio.bitrate | Yes | Integer | 16~320 범위의 정수, 단위: Kbps | 트랜스코딩할 오디오 스트림의 비트 전송률 설정 | |
audio.samplingRate | Yes | Integer | AUTO(-2), 22050 , 32000, 44100, 48000 단위: Hz | 출력 오디오 샘플링 레이트 설정 AUTO 설정 시 원본의 오디오 샘플링 레이트를 사용 | |
video | Yes | Object | - 트랜스코딩 비디오 옵션 설정 객체 encodingOptionType이 AUDIO 일 경우 video 객체 생략 |
||
video.codec | Yes | String | AVC | 비디오 코덱 설정 AVC (H.264) 지원 |
|
video.codecOptions | Yes | Object | 비디오 코덱 상세 옵션 설정 객체 | ||
video.codecOptions.profile | Yes | String | BASELINE, MAIN, HIGH | Video Codec Profile은 영상의 사용 용도에 맞게 H.264 코덱의 특정 기술을 사용할 수 있도록 미리 정의해 둔 표준 명세 | |
video.codecOptions.level | Yes | String | 1, 1b, 1.1, 1.2, 1.3, 2.1, 2.2, 3.1, 3.2, 4.1, 4.2, 5.1, 5.2 | Video Codec Level은 영상을 재생하는 단말의 재생기(디코더)가 어느정도 자원을 필요로 하는지 정해놓은 표준 명세 | |
video.bitrate | Yes | Integer | bitrate > 0 단위: Kbps | 비디오 스트림의 비트 전송률 설정 동영상의 화질을 결정하는 매우 중요한 요소이며 1초 분량의 동영상을 구성하는 데이터의 크기를 설정 | |
video.width | Yes | Integer | AUTO(-2), 96~4096 범위의 정수 단위: 픽셀 | 출력 비디오의 가로 길이 width 만 AUTO 일 경우 height 는 고정되며 width 는 본 영상의 비율에 맞춰 변환 | |
video.height | Yes | Integer | AUTO(-2), 96~4096 범위의 정수 단위: 픽셀 | 출력 비디오의 세로 길이 height 만 AUTO 일 경우 width 는 고정되며 height 는 본 영상의 비율에 맞춰 변환 | |
video.framerate | Yes | Double | AUTO(-2), 10, 15, 23.97, 24, 29.97, 30, 50, 60 | 초당 프레임 수를 설정 출력 비디오 스트림에 초당 몇 개의 프레임을 보여 줄지 설정 | |
video.maxFramerate | No | Integer | 10~60 사이 정수값 | video.framerate가 AUTO일때만 사용하며, 최대 framerate를 설정 | |
video.keyframeInterval | Yes | Integer | 1~100 범위의 정수값 | 키프레임 간격 설정 비디오에 키 프레임 생성되는 간격 (단위: 초) | |
video.rateControl | Yes | String | AUTO,ABR, CRF, CBR video.pass 가 2-Pass 인 경우, ABR 만 허용 |
ABR | - 비디오 변환시 비트레이트 배분 방식 CBR: 고정 비트레이트로 모든 프레임에 비트레이트를 같게 변환 비트레이트가 고정되어 결과물 용량을 예측하기 쉬우나 ABR, CRF 대비 품질이 낮음 CRF: 압축 효율이 좋은편이며 인코딩 전 비트레이트와 파일크기를 지정할 수 없음 ABR: 가용 비트레이트로 평균 비트레이트를 유지하며 필요 비트레이트에 따라 가변적으로 변환 |
video.pass | Yes | String | 1-Pass, 2-Pass | - 비디오 변환 시 사용할 인코딩 방식 1-Pass에 비해 2-Pass는 주어진 bitrate 를 효율적으로 활용하나 인코딩 소요 시간이 길어짐 |
응답
필드명 | 타입 | 설명 | 비고 |
---|---|---|---|
error | Object | 요청 실패 시 응답 오류 응답 코드 및 메시지 |
|
error.code | Integer | 오류 응답 코드 | |
error.message | String | 오류 응답 메시지 | |
content | Object | VOD Station OPEN API 응답 객체 | |
content.disabled | Boolean | subaccount 제공 필드 해당 리소스가 subaccount에서 활성 여부 |
|
content.id | String | 인코딩 옵션 ID | |
content.name | String | 인코딩 옵션의 이름 | |
content.format | String | 변환된 미디어 파일 컨테이너 포맷 | |
content.encodingOptionType | String | 인코딩 옵션의 타입 | |
content.audio | Object | 트랜스코딩 오디오 옵션 설정 객체 | |
content.audio.codec | String | 오디오 코덱 설정 | |
content.audio.channel | Integer | 출력 오디오의 채널 설정 | |
content.audio.bitrate | Integer | 트랜스코딩할 오디오 스트림의 비트 전송률 설정 (단위 : Kbps) | |
content.audio.samplingRate | Integer | 출력 오디오 샘플링 레이트 (단위 : Hz) | |
content.video | Object | 트랜스코딩 비디오 옵션 설정 객체 | |
content.video.codec | String | 비디오 코덱 설정 | |
content.video.codecOptions | Object | 비디오 코덱 상세옵션 설정 객체 | |
content.video.codecOptions.profile | String | 설정된 Video Codec Profile | |
content.video.codecOptions.level | String | 설정된 Video Codec Level | |
content.video.bitrate | Integer | 비디오 스트림의 비트 전송률 (단위 : Kbps) | |
content.video.width | Integer | 출력 비디오의 너비 | |
content.video.height | Integer | 출력 비디오의 높이 | |
content.video.framerate | Double | 초당 프레임 수 | |
content.video.keyframeInterval | Integer | 비디오에 키 프레임이 생성되는 간격 (단위 : 초) | |
content.video.rateControl | String | 비트레이트 배분 방식 | |
content.defaultSet | Boolean | 시스템 제공 프리셋 여부 |
예시
요청 예시
POST https://vod-station.apigw.gov-ntruss.com/api/v2/encoding-option
POST /api/v2/encoding-option
HOST: vod-station.apigw.gov-ntruss.com
Content-Type: application/json
x-ncp-region_code:KR
x-ncp-apigw-timestamp:1521787414578
x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy
x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=
Reqeust body
{
"audio": {
"bitrate": 192,
"channel": 2,
"codec": "AAC",
"samplingRate": 44100
},
"encodingOptionType": "NORMAL",
"format": "MP4",
"name": "basic-enc-option",
"video": {
"bitrate": 5000,
"codec": "AVC",
"codecOptions": {
"level": "3.1",
"profile": "MAIN"
},
"framerate": 30.0,
"height": 1080,
"keyframeInterval": 2,
"pass": "1-Pass",
"rateControl": "ABR",
"maxFramerate": 30,
"width": 1920
}
}
응답 예시
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 12 Sep 2018 09:53:32 GMT
Content-Type: application/json;charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
x-ncp-trace-id: 36c9k60om4p3238cpmc9gm4cj4
{
"content": {
"disabled": false,
"id": 10058,
"encodingOptionType": "NORMAL",
"name": "basic-enc-option",
"format": "MP4",
"video": {
"codec": "AVC",
"codecOptions": {
"profile": "MAIN",
"level": "3.1"
},
"bitrate": 5000,
"width": 1920,
"height": 1080,
"framerate": 30,
"maxFramerate": 30,
"keyframeInterval": 2,
"rateControl": "ABR",
"pass": "1-Pass"
},
"audio": {
"codec": "AAC",
"bitrate": 192,
"channel": 2,
"samplingRate": 44100
}
}
}