Callback Notification

최신 업데이트:2025-05-29 14:58:53

이 문서는 당사의 서비스가 미디어 처리 작업에 대한 보안 알림을 전송하는 방식을 설명합니다. 당사는 이러한 알림이 진본임을 보장하고 처리 결과에 대한 상세 정보를 포함하기 위한 검증 메커니즘을 제공합니다.

알림 보안 메커니즘

보안을 보호하기 위해 모든 알림 요청에 Authorization 헤더를 포함시킵니다. 이를 통해 알림이 합법적이며 당사 서비스에서 전송되었음을 확인할 수 있습니다.

Authorization 헤더 형식

<AccessKey>:URLSAFE_BASE64(HMAC_SHA1(NotifyUrlWithOutQuery + "\n" + NotifyBody, SecretKey))

여기서:

  • AccessKey는 계정의 액세스 키입니다
  • NotifyBody는 알림 내용입니다
  • SecretKey는 계정의 비밀 키입니다

중요: 당사는 계정의 유효한 AccessKey(AK)와 AccessKey Secret(SK) 쌍 중 하나를 무작위로 선택하여 Authorization 값을 생성합니다. 요청에 사용된 AccessKey를 매칭하여 콜백 알림을 인증하기 위해 모든 Access Key와 Access Key Secret을 기록해 두어야 합니다.

알림 내용

NotifyUrl을 구성하면 미디어 처리 완료 후 JSON 형식의 알림이 해당 엔드포인트로 전송됩니다. 알림 내용은 URL-safe Base64로 인코딩되며 처리 작업에 대한 포괄적인 정보를 포함합니다.

알림 요구사항

콜백 URL은 다음을 충족해야 합니다:

  • 공용 인터넷에서 접근 가능해야 함
  • 알림 수신 후 HTTP/1.1 200 OK 상태 코드로 응답해야 함

알림 필드

필드 이름 타입 설명
id string 미디어 처리 작업의 persistentId
code int 작업 상태 코드:
• 1 - 일부 작업 진행 중, 나머지 완료
• 2 - 일부 작업 오류 발생, 나머지 완료/진행 중
• 3 - 모든 작업 성공
desc string 상태 코드에 해당하는 설명
separate string 알림 유형:
• 0 - 일회성 알림
• 1 - 다중 분리 알림 중 하나
inputkey string 원본 파일 이름
inputbucket string 원본 파일이 저장된 버킷
inputfsize int 원본 파일 크기(바이트)
items array 각 작업의 상태 정보

Items 배열 필드

items 배열의 각 항목은 다음을 포함합니다:

필드 이름 타입 설명
cmd string 작업 명령(fops)
code string 처리 결과 코드:
• 2 - 실패
• 3 - 성공
costTime int 트랜스코딩 시간(초, 기본값 0)
desc string 작업 결과 설명
error string 오류 상세 정보(실패 시)
fsize int 출력 미디어 크기(바이트)
hash string 결과 해시 값
key string 결과 키(형식: bucketName:key)
url string 트랜스코딩 미디어 접근 URL
duration double 트랜스코딩 미디어 지속 시간(초)
bit_rate string 트랜스코딩 미디어 비트레이트
resolution string 트랜스코딩 비디오 해상도
detail array 다중 출력 시 각 미디어 출력에 대한 상세 정보

Detail 배열 필드

필드 이름 타입 설명
fsize int 트랜스코딩 파일 크기(m3u8 형식 시 매니페스트 파일 크기)
tssize int m3u8 출력 시 ts 파일 총 크기(기타 형식 0)
hash string 출력 해시 값
key string 출력 키(형식: bucketName:key)
url string 출력 접근 URL
duration double 출력 지속 시간(초)
bit_rate string 출력 비트레이트
resolution string 출력 비디오 해상도

알림 예시

{
    "id": "2c90802745ee87870145ef1430f90006",
    "code": 3,
    "desc": "operate [\"avthumb/flv\"] is finish",
    "separate": 0,
    "inputkey": "aaa.flv",
    "inputbucket": "chenqltesttwo",
    "inputfsize": 20000,
    "items": [
        {
            "cmd": "avthumb/flv",
            "code": "3",
            "costTime": 0,
            "desc": "finish",
            "error": null,
            "fsize": 20000,
            "hash": "FlWvHsc-CK6miygKCcLjCaQ5csNO",
            "key": "chenqltesttwo:aaa.flv",
            "url": "http://chenqltesttwo.com/aaa.flv",
            "duration": 198.083,
            "bit_rate": "1288025",
            "resolution": "1280X720",
            "detail": [
                {
                    "fsize": 20000,
                    "tssize": 1024,
                    "hash": "FlWvHsc-CK6miygKCcLjCaQ5csNO",
                    "key": "chenqltesttwo:aaa.flv",
                    "url": "http://chenqltesttwo.com/aaa.flv",
                    "duration": 198.083,
                    "bit_rate": "1288025",
                    "resolution": "1280X720"
                }
            ]
        }
    ]
}
이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.