통화 녹음/녹화 개요

통화 녹음/녹화를 사용하면 녹음/녹화를 시작, 중지, 일시 중지하고 다시 시작할 수 있는 API 집합을 제공하여 Azure Communication Services에서 사용 가능한 여러 통화 시나리오를 녹음/녹화할 수 있습니다. PSTN이든, WebRTC든, SIP 통화든 관계없이 이러한 API는 서버 쪽 비즈니스 논리에서 액세스할 수 있습니다. 또한 녹음/녹화를 시작하도록 서버 애플리케이션에 지시하는 사용자 작업에 의해 녹음/녹화를 트리거할 수 있습니다.

비즈니스 요구 사항에 따라 다양한 Azure Communication Services 통화 구현에 통화 녹음/녹화를 사용할 수 있습니다.

예를 들어 1:1 또는 1:N 오디오 및 영상 통화를 녹음/녹화할 수 있습니다.

녹음/녹화되는 통화를 보여 주는 다이어그램

또한 통화 녹음/녹화를 사용하여 통화 자동화에서 관리하는 복잡한 PSTN 또는 VoIP 인바운드/아웃바운드 통화 워크플로를 녹음/녹화할 수 있습니다.

통화 설정 방법에 관계없이 통화 녹음/녹화를 사용하면 기본 제공 임시 스토리지에 24시간 동안 저장되는 혼합 또는 비혼합 미디어 파일을 생성할 수 있습니다. 파일을 검색하고 Azure Blob 스토리지 Bring Your Own 스토리지 또는 원하는 스토리지 솔루션으로 이동할 수 있습니다. 통화 녹음/녹화는 모든 Azure Communication Services 데이터 영역을 지원합니다.

통화 녹음 아키텍처를 보여 주는 다이어그램

비즈니스 요구 사항을 지원하는 통화 녹음/녹화

통화 녹음/녹화는 다양한 미디어 출력/콘텐츠 형식을 지원하여 비즈니스 요구 사항과 사용 사례를 처리합니다. 녹음/녹화 보관, 모임 메모, 코칭과 학습, 규정 준수 및 준수 같은 시나리오의 경우 혼합 형식을 사용할 수 있습니다. 또는 비혼합 오디오 형식을 사용하여 품질 보증 사용 사례 또는 고급 분석이나 AI 기반(인공 지능)의 정교한 통화 후 프로세스와 같이 훨씬 더 복잡한 시나리오를 처리할 수 있습니다.

동영상

채널 유형 콘텐츠 형식 해결 샘플링 레이트 비트 전송률: 데이터 속도 출력 설명
혼합 mp4 1920x1080, 16FPS(초당 프레임 수) 16KHz 1mbps 7.5MB/분* 단일 파일, 단일 채널 디스플레이 이름을 지원하는 기본 3x3(대부분의 활성 스피커) 타일 배열의 혼합 비디오

오디오

채널 유형 콘텐츠 형식 샘플링 레이트 비트 전송률: 데이터 속도 출력 설명
혼합 mp3 16KHz 48kbps 0.36MB/분* 단일 파일, 단일 채널 모든 참가자의 혼합 비디오
혼합 wav 16KHz 256kbps 1.92MB/분 단일 파일, 단일 채널 모든 참가자의 혼합 비디오
비혼합 wav 16KHz 256kbps 채널당 1.92MB/분* 단일 파일, 최대 5개의 wav 채널 비혼합 오디오, 채널당 참가자 1명, 최대 5개의 채널

[*참고] Mp3 및 Mp4 형식은 변수 비트 전송률을 초래하는 손실 허용 압축을 사용합니다. 따라서 이전 표의 데이터 속도 값은 이론적인 최댓값을 반영합니다. WAV 형식은 압축되지 않고 비트 전송률이 고정되므로 데이터 속도 계산은 정확합니다.

통화 녹음/녹화 API로 통화 녹음/녹화를 완전히 제어

통화 녹음/녹화 API를 사용하면 그룹 통화를 만들어 대화를 녹화하는 애플리케이션 같은 내부 비즈니스 논리 트리거를 통해 녹음/녹화를 관리할 수 있습니다. 또한 녹음/녹화를 시작하도록 서버 애플리케이션에 지시하는 사용자 작업에 의해 녹음/녹화를 트리거할 수 있습니다. 통화 녹음/녹화 API는 serverCallId만 사용하여 녹음/녹화를 시작합니다. serverCallId를 가져오는 방법을 알아보려면 통화 녹음/녹화 빠른 시작을 확인하세요. 기록이 시작되면 recordingId가 반환되며, 이는 일시 중지 및 다시 시작과 같은 후속 작업에 사용될 수 있습니다.

연산 작동 방식 설명
녹음/녹화 시작 serverCallId recordingId를 반환합니다.
녹음/녹화 상태 가져오기 recordingId RecordingStateResult를 반환합니다.
녹음/녹화 일시 중지 recordingId 통화 녹화를 일시 중지하고 다시 시작하면 통화 또는 회의의 일부 녹화를 건너뛰고 단일 파일에 녹화를 다시 시작할 수 있습니다.
녹음/녹화 다시 시작 recordingId 일시 중지된 녹음/녹화 작업을 다시 시작합니다. 콘텐츠는 일시 중지되기 전의 콘텐츠와 동일한 파일에 포함됩니다.
녹음/녹화 중지 recordingId 녹음/녹화를 중지하고 파일 다운로드를 위한 최종 미디어 처리를 시작합니다.

Event Grid 알림

통화 녹음/녹화는 Azure Event Grid를 사용하여 미디어 및 메타데이터와 관련된 알림을 제공합니다.

참고 항목

Azure Communication Services는 녹화를 위한 단기 미디어 스토리지를 제공합니다. 녹음/녹화는 24시간 동안 다운로드할 수 있습니다. 24시간이 지나면 더 이상 녹화를 할 수 없습니다.

Event Grid 알림 Microsoft.Communication.RecordingFileStatusUpdated는 녹음/녹화를 검색할 준비가 되면 일반적으로 모임이 종료되거나 녹음/녹화가 중지되는 등 녹화 프로세스가 완료된 후 몇 분 후에 게시됩니다. 녹음/녹화 이벤트 알림에는 녹음/녹화된 미디어와 녹음/녹화 메타데이터 파일을 모두 검색하는 데 사용되는 contentLocationmetadataLocation이 포함됩니다.

알림 스키마 참조

{
    "id": string, // Unique guid for event
    "topic": string, // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
    "subject": string, // /recording/call/{call-id}/serverCallId/{serverCallId}/recordingId/{recordingId}
    "data": {
        "recordingStorageInfo": {
            "recordingChunks": [
                {
                    "documentId": string, // Document id for retrieving from storage
                    "index": int, // Index providing ordering for this chunk in the entire recording
                    "endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
                    "metadataLocation": <string>,  // url of the metadata for this chunk
                    "contentLocation": <string>,   // url of the mp4, mp3, or wav for this chunk
                    "deleteLocation": <string>     // url of the mp4, mp3, or wav to delete this chunk
                }
            ]
        },
        "recordingStartTime": string, // ISO 8601 date time for the start of the recording
        "recordingDurationMs": int, // Duration of recording in milliseconds
        "sessionEndReason": string // Reason for call ending: "CallEnded", "InitiatorLeft", etc.
    },
    "eventType": string, // "Microsoft.Communication.RecordingFileStatusUpdated"
    "dataVersion": string, // "1.0"
    "metadataVersion": string, // "1"
    "eventTime": string // ISO 8601 date time for when the event was created
}

메타데이터 스키마 참조

{
  "resourceId": <string>,           // stable resource id of the Azure Communication Services resource recording
  "callId": <string>,               // id of the call
  "chunkDocumentId": <string>,      // object identifier for the chunk this metadata corresponds to
  "chunkIndex": <number>,           // index of this chunk with respect to all chunks in the recording
  "chunkStartTime": <string>,       // ISO 8601 datetime for the start time of the chunk this metadata corresponds to
  "chunkDuration": <number>,        // [Chunk duration has a maximum of 4 hours] duration of the chunk this metadata corresponds to in milliseconds
  "pauseResumeIntervals": [
              "startTime": <string>,          // ISO 8601 datetime for the time at which the recording was paused
              "duration": <number>            // duration of the pause in the recording in milliseconds
                          ],
  "recordingInfo": {
               "contentType": <string>,        // content type of recording, e.g. audio/audioVideo
               "channelType": <string>,        // channel type of recording, e.g. mixed/unmixed
               "format": <string>,             // format of the recording, e.g. mp4/mp3/wav
               "audioConfiguration": {
                   "sampleRate": <number>,       // sample rate for audio recording
                   "bitRate": <number>,          // bitrate for audio recording
                   "channels": <number>          // number of audio channels in output recording
                                     },
               "videoConfiguration": {
                   "longerSideLength": <number>,        // longerSideLength for video recording
                   "shorterSideLength": <number>,       // shorterSideLength for video recording
                   "frameRate": <number>,               // frameRate for video recording
                   "bitRate": <number>                  // bitrate for video recording
                                     }
                    },
  "participants": [
    {
      "participantId": <string>,    // participant identifier of a participant captured in the recording
      "channel": <number>           // channel the participant was assigned to if the recording is unmixed
    }
  ]
}

규정 및 프라이버시 문제

많은 국가/지역과 주에는 통화 녹음/녹화에 적용되는 법률과 규정이 있습니다. PSTN, 음성, 영상 통화는 통신 내용을 녹음/녹화하는 데 사용자가 동의해야 하는 경우가 많습니다. 법률에 따라 통화 녹음 기능을 사용하는 것은 귀하의 책임입니다. 각 참여자에게 적용되는 법률을 준수하여, 양 당사자에게서 기록된 통화에 대한 동의를 받아야 합니다.

개인 데이터의 유지 관리에 대한 규정에 따라 사용자 데이터를 내보낼 수 있어야 합니다. 이러한 요구 사항을 지원하기 위해 녹화 메타데이터 파일에는 participants 배열의 각 통화 참가자에 대한 participantId가 포함됩니다. 내부 사용자 ID가 있는 participants 배열에서 Azure Communication Services 사용자 ID를 상호 참조하여 통화에서 참가자를 식별할 수 있습니다.

다음 단계

귀하가 관심 있어 할 만한 몇 가지 문서는 다음과 같습니다.