BLOG
작년 아마존은 미디어 고객이 머신러닝(ML)을 통해 비디오 파일에서 프레임의 정확한 엔딩 크레딧, 블랙 프레임 세그먼트, 장면 전환 및 컬러 바를 자동으로 감지할 수 있도록 하는 API인 Amazon Rekognition video segment detection을 출시했습니다. 이번 포스팅에서는 4가지 새로운 유형의 세그먼트(오프닝 크레딧, 콘텐츠 세그먼트, 슬레이트 및 스튜디오 로고)와 정확도가 향상된 크레딧 및 장면 감지, 그리고 블랙 프레임 감지를 제어하는 새로운 필터를 소개해드리려고 합니다.
미디어 공급망 관리 팀(Media Supply Chain)은 비디오 세그먼트 감지(Video segment detection)를 통해 그동안 매우 수동적이고 지루한 작업이었던 VOD(주문형 비디오) 애플리케이션의 콘텐츠 준비 및 품질 관리(QC)를 간소화할 수 있었습니다. 일반적인 작업에는 ‘Next Episode’ 및 ‘Skip Intro’와 같은 마커를 추가하고, 사전에 삽입된 광고 시간을 감지하여 블랙 프레임으로 나타내거나 비디오를 공개하기 전에 슬레이트 및 컬러 바와 같은 원치 않는 섹션을 제거하는 작업 등이 포함되어 있습니다.
비디오 세그먼트 감지를 통해 이용자는 asset 리뷰 시간을 몇 시간에서 몇 분까지 단축하고, 수동 작업 비용을 2~5배 절감할 수 있을 뿐만 아니라, 짧은 시간 내에 스트리밍을 위한 대용량 아카이브 또는 제3자 콘텐츠(third-party content)를 준비할 수 있게 되었습니다. 이와 더불어 방송사와 스트리밍 플랫폼이 고부가가치 작업을 위한 운영자 리소스를 확보하고, 시청자의 참여를 유지하기 위한 스킵 프롬프트를 생성하거나 더욱 쉬운 수익화를 위한 광고 삽입 과정을 단순화하는 것 등을 지원합니다.
주요 특징
지금부터는 새로운 세그먼트 유형을 더 자세히 살펴보겠습니다.
- 오프닝 및 엔딩 크레딧 Amazon Rekognition Video는 영화나 TV 프로그램의 오프닝 크레딧과 엔딩 크레딧이 시작되고 끝나는 정확한 프레임을 자동으로 식별하도록 도와줍니다. 이 정보를 사용하여 VOD 애플리케이션에서 ‘정주행하기’ 마커 또는 ‘다음 에피소드’나 ‘스킵 인트로’와 같은 대화형 뷰어 프롬프트를 생성할 수 있습니다. Amazon Rekognition은 머신러닝을 통해 간단한 롤링 크레딧부터 더 까다로운 크레딧, 장면 크레딧 또는 애니메이션 콘텐츠의 양식화된 크레딧에 이르기까지 다양한 시작 및 종료 크레딧 스타일을 지원합니다.
- 슬레이트 슬레이트는 일반적으로 비디오 시작 부분에 에피소드, 스튜디오, 비디오 형식, 오디오 채널 등에 대한 텍스트 메타데이터가 포함된 섹션입니다. Amazon Rekognition은 이러한 슬레이트의 시작과 끝을 식별할 수 있으므로 운영자가 텍스트 메타데이터를 사용하여 추가 분석을 쉽게 하거나 스트리밍 플랫폼용 콘텐츠를 준비할 때 슬레이트를 간단히 제거할 수 있습니다.
- 스튜디오 로고 스튜디오 로고는 쇼 제작에 관련된 프로덕션 스튜디오의 로고 또는 엠블럼을 보여주는 시퀀스입니다. Amazon Rekognition은 이러한 시퀀스를 식별할 수 있어 운영자가 스튜디오 식별을 위한 검토를 더 쉽게 할 수 있습니다.
- 콘텐츠 콘텐츠는 프로그램 또는 관련 요소가 포함된 TV 프로그램이나 영화의 한 부분으로, 무성 블랙 프레임, 크레딧, 컬러 바, 슬레이트 및 스튜디오 로고 등은 콘텐츠에 포함되지 않습니다. Amazon Rekognition은 비디오에서 각 콘텐츠 세그먼트의 시작과 끝을 감지하여 프로그램 런타임을 찾거나 중요한 프로그램 세그먼트를 구분하는 등 여러 용도로 사용할 수 있습니다. 비디오 시작 부분에 있는 이전 에피소드에 대한 간략한 요약이나 엔딩 크레딧 후에 표시되는 보너스 콘텐츠가 그 예시입니다. 이와 유사하게, 일부 비디오에는 끝에 ‘텍스트 없는’ 콘텐츠가 있을 수 있는데, 이는 기존 텍스트는 제거되고 오버레이된 모든 프로그램 섹션의 집합입니다. 이를 통해 운영자는 다른 언어에 오버레이된 텍스트를 사용하여 콘텐츠를 국제화할 수 있습니다. Amazon Rekognition Video에서 모든 콘텐츠 세그먼트가 감지되면, 고객은 추가 검토 또는 후속 조치가 필요한 주요 세그먼트를 추가로 식별하기 위해 ‘항상 요약으로 비디오를 시작하기’와 같은 추가 도메인 규칙을 적용할 수 있습니다.
아래 사진은 미디어 공급망에 있는 비디오 asset의 일반적인 타임라인입니다. 시작 부분의 컬러바와 오프닝 크레딧, 요약 및 주요 프로그램과 같은 콘텐츠 세그먼트, 비디오 전체에 걸친 광고 삽입 마커를 나타내는 블랙 프레임, 그리고 끝 부분의 엔딩 크레딧을 주목해보세요. Amazon Rekognition Video를 사용하면 이러한 각 세그먼트를 자동으로 감지하고 정확한 프레임 시작 및 종료 타임스탬프, SMPTE 타임코드와 프레임 번호를 얻을 수 있습니다.
- 정확도 향상 새로운 세그먼트 유형을 도입하는 것 외에도 장면 감지 및 엔딩 크레딧 감지의 정확도도 개선하였습니다. 특히, 장면 위의 크레딧, 콘텐츠와 나란히 있는 크레딧, 간헐적인 콘텐츠가 포함된 긴 크레딧 시퀀스, 애니메이션의 양식화된 크레딧과 같은 까다로운 최종 크레딧 스타일을 더 정확하게 감지할 수 있게 되었습니다.
작동 원리
비디오 세그먼트 감지는 두 개의 작업으로 이루어진 비동기식 API로 분석을 시작하는StartSegmentDetection과 분석 결과를 얻을 수 있는GetSegmentDetection로 구성되어 있습니다.
StartSegmentDetection 은 입력 매개변수와 함께 Amazon Simple Storage Service (Amazon S3)에 저장된 H.264 비디오를 수락하고 성공적으로 완료되면 고유한 JobId 를 반환합니다.
이후 GetSegmentDetection 과 함께 사용하여 비디오 결과를 가져올 수 있습니다. 최상의 결과를 얻으려면 콘텐츠의 720p 또는 1080p ‘프록시’ 버전을 사용하는 것이 좋습니다. Apple ProRes 또는 MXF와 같은 형식의 고해상도 소스 파일이 있는 경우, 먼저 H.264로 트랜스코딩하기 위해 AWS Elemental MediaConvert를 사용할 수 있습니다.
블랙 프레임 필터
이번 릴리스에서는 무음 블랙 프레임 감지를 관리하기 위해 필터를 추가하였습니다. 고객은 다양한 수준의 품질 및 색상 레인지 지원을 통해 다양한 소스의 미디어 파일을 가질 수 있습니다. 예를 들어, 오래된 테이프 아카이브에서 디지털화된 파일은 최신 디지털 방식으로 제작된 파일과는 다른 블랙 레벨과 더 높은 노이즈를 가지고 있습니다. 이처럼 다양한 요구를 충족하기 위해 API 요청에 지정할 수 있는 블랙 프레임 필터를 제공하고 있습니다. 다음은 StartSegmentDetection에 대한 JSON 요청 예시를 함께 볼까요?
JSON
{
“Video”: {
“S3Object”: {
“Bucket”: “test_files”,
“Name”: “test_file.mp4”
}
“SegmentTypes”:[“TECHNICAL_CUES”, “SHOT”]
“Filters”: {
“TechnicalCueFilter”: {
“MinSegmentConfidence”: 90,
“BlackFrame” : {
“MaxPixelThreshold”: 0.1,
“MinCoveragePercentage”: 95
}
},
“ShotFilter” : {
“MinSegmentConfidence”: 60
}
}
}
이제 블랙 프레임 필터 매개변수를 더 자세히 살펴보겠습니다.
MaxPixelThreshold는 검은색으로 간주되는 픽셀의 최대 휘도 값을 결정하는 데 사용되는 임계값입니다. Full 컬러 비디오에서 휘도 값의 범위는 0-255입니다. 픽셀 값이 0은 순수한 검정색을 띄는 가장 엄격한 필터입니다. 최대 검정 픽셀 값은 다음과 같이 계산됩니다. max_black_pixel_value = minimum_luminance + MaxPixelThreshold *luminance_range. 예를 들어 BlackPixelThreshold = 0.1인 전체 색상 범위 비디오의 경우 max_black_pixel_value는 0 + 0.1 * (255-0) = 25.5입니다. MaxPixelThreshold의 기본값은 0.2이며 전체 색상 범위 비디오의 경우 max_black_pixel_value 51에 매핑됩니다.
MinCoveragePercentage는 프레임이 블랙 프레임으로 간주되기 위해 max_black_pixel_value 미만의 휘도를 가져야 하는 프레임의 픽셀의 최소 백분율입니다. 휘도는 BT.709 매트릭스를 사용하여 계산됩니다. 기본값은 99이며, 이는 프레임의 모든 픽셀 중 최소 99%가 MaxPixelThreshold 값 세트에 따라 검은색 픽셀이어야 함을 의미합니다. 이 값을 줄여 검은색 프레임에 더 많은 노이즈를 허용할 수 있습니다.
API 응답
다음으로 GetSegmentDetection의 샘플 응답을 살펴보겠습니다. 이제 타임스탬프 및 SMPTE 타임코드 외에도 프레임의 각 세그먼트에 대한 시작, 종료 및 지속 시간을 다시 얻을 수 있습니다.
JSON
“JobStatus”: “SUCCEEDED”,
“VideoMetadata”: [
{
“Codec”: “h264”,
“DurationMillis”: 478145,
“Format”: “QuickTime / MOV”,
“FrameRate”: 24.0,
“FrameHeight”: 360,
“FrameWidth”: 636
}
],
“AudioMetadata”: [
{
“Codec”: “aac”,
“DurationMillis”: 478214,
“SampleRate”: 44100,
“NumberOfChannels”: 2
}
],
“Segments”: [
{
“StartFrameNumber”: 0,
“EndFrameNumber”: 299,
“DurationFrames”: 299,
“StartTimestampMillis”: 0,
“EndTimestampMillis”: 9976,
“DurationMillis”: 9976,
“StartTimecodeSMPTE”: “00:00:00;00”,
“EndTimecodeSMPTE”: “00:00:09;29”,
“DurationSMPTE”: “00:00:09;29”,
“Type”: “TECHNICAL_CUE”,
“TechnicalCueSegment”: {
“Confidence”: 90.45006561279297,
“Type”: “BlackFrames”
}
},
{
“StartFrameNumber”: 299,
“EndFrameNumber”: 449,
“DurationFrames”: 150,
“StartTimestampMillis”: 9976,
“EndTimestampMillis”: 14981,
“DurationMillis”: 5005,
“StartTimecodeSMPTE”: “00:00:09;29”,
“EndTimecodeSMPTE”: “00:00:14;29”,
“DurationSMPTE”: “00:00:05;00”,
“Type”: “TECHNICAL_CUE”,
“TechnicalCueSegment”: {
“Confidence”: 100.0,
“Type”: “Content”
}
},
{
“StartFrameNumber”: 0,
“EndFrameNumber”: 299,
“DurationFrames”: 299,
“StartTimestampMillis”: 0,
“EndTimestampMillis”: 9976,
“DurationMillis”: 9976,
“StartTimecodeSMPTE”: “00:00:00;00”,
“EndTimecodeSMPTE”: “00:00:09;29”,
“DurationSMPTE”: “00:00:09;29”,
“Type”: “SHOT”
“ShotSegment”: {
“Index”: 0,
“Confidence”: 99.9982681274414
},
},
{
“StartFrameNumber”: 300,
“EndFrameNumber”: 449,
“DurationFrames”: 149,
“StartTimestampMillis”: 10010,
“EndTimestampMillis”: 14981,
“DurationMillis”: 4971,
“StartTimecodeSMPTE”: “00:00:10;00”,
“EndTimecodeSMPTE”: “00:00:14;29”,
“DurationSMPTE”: “00:00:04;29”,
“Type”: “SHOT”
“ShotSegment”: {
“Index”: 1,
“Confidence”: 99.9982681274414
},
}
],
“SelectedSegmentTypes”: [
{
“Type”: “SHOT”,
“ModelVersion”: “1.0”
},
{
“Type”: “TECHNICAL_CUE”,
“ModelVersion”: “2.0”
}
]
}
시작하기
최신 AWS SDK를 다운로드하여 비디오 세그먼트 감지 API 사용을 시작할 수 있습니다. API에 대한 더 자세한 정보나 코드 예시는 our documentation을, API 요금 정보에 대한 자세한 내용은 Amazon Rekognition Video 요금 페이지를 참조하십시오. 비디오 세그먼트 감지 API의 가격은 기술적인 신호 감지(블랙 프레임, 크레딧, 콘텐츠, 슬레이트, 스튜디오 로고) 및 shot 감지에 대해 각각 비디오당 $0.05/분 또는 $3/시간입니다.
API에서 생성된 결과를 시각화하는 데 도움이 되도록 GitHub의 오픈 소스 코드 프로젝트인 세그먼트 감지 솔루션을 확인해보세요. Codemill Accurate Player Validate와 같이 AWS 파트너가 구축한 애플리케이션을 통해 비디오 세그먼트 감지 API를 사용할 수도 있습니다.
이제 솔루션이 어떻게 작동하는지 볼까요?
세그먼트 감지 솔루션
탐지 결과 업로드, 분석 및 시각화
데모 솔루션을 사용하면 웹 포털을 통해 비디오를 업로드, 분석하고 탐지를 시각화할 수 있습니다.
- 제공된 AWS CloudFormation 템플릿을 통해 데모 솔루션을 생성하고 웹 포털에 로그인합니다.
- 비디오 파일을 드래그하여 분석을 시작합니다. 그런 다음 솔루션은 Amazon Rekognition Segment 감지 API를 실행하여 기술적 신호와 장면을 감지하고 감지 결과를 JSON 형식으로 반환합니다.
- 비디오가 완전히 분석되면 각 세그먼트 유형에 대한 버튼을 전환하여 감지 결과를 탐색하고 시각화합니다. 결과는 비디오 타임라인에 오버레이됩니다.
(움짤1)
Tears of steel | (CC) Blender Foundation | mango.blender.org
JSON을 EDL 형식으로 변환하기
Amazon Rekognition Segment 감지 JSON 결과가 있으면 데모 솔루션을 사용하여 다음 단계에 따라 JSON 파일을 EDL 파일 형식으로 변환할 수 있습니다.
- 솔루션의 웹 포털에 로그인한 후 SimpleConvert를 클릭합니다.
- JSON 파일을 포털에 드래그하여 변환 시작을 클릭합니다.
- JSON 파일이 변환되면 EDL 다운로드를 클릭하여 EDL 패키지를 다운로드합니다.
NLE 도구로 EDL 가져오기
EDL 패키지를 다운로드하고 압축을 풀면 각 EDL 파일을 NLE 도구에 타임라인 요소로 가져올 수 있습니다.
- DaVinci Resolve를 열고 새 프로젝트 만들기
- 비디오를 Media Pool로 드래그하여 놓습니다.
- 파일 > 가져오기 > 타임라인을 클릭 하고 EDL 파일 중 하나를 선택합니다(예: ‘shot.edl’).
- 가져온 후 모든 샷 세그먼트는 프레임 정확도가 있는 요소로 타임라인에 표시됩니다. 그런 다음 타임라인을 탐색하여 개별 세그먼트를 찾고 클립을 편집할 수 있습니다.
다음 애니메이션은 Amazon Rekognition에서 생성한 EDL 파일을 BlackMagic Design DaVinci Resolve로 가져오는 방법을 보여줍니다.
JSON에서 EDL CMX3600 형식으로 변환하기
변환 작동 방식을 더 자세히 이해하기 위해 EDL 파일 형식과 세그먼트 응답의 JSON 응답을 자세히 살펴보겠습니다.
EDL 파일
TITLE: TEARSOFSTEEL 4K
FCM: NON-DROP FRAME
001 SHOT000 V C 00:00:00:00 00:00:08:21 00:00:00:00 00:00:08:21
* FROM CLIP NAME: tearsofsteel_4k.mov
002 SHOT001 V C 00:00:08:22 00:00:13:10 00:00:08:21 00:00:13:10
* FROM CLIP NAME: tearsofsteel_4k.mov
Where
001, 필드 1은 편집 결정을 의미합니다.
SHOT000, 필드 2는 릴(reel) 번호를 의미합니다.
V, 필드 3은 관심이 있는 요소를 식별합니다. “V”는 ‘동영상 전용’을 의미합니다.
C, 필드 4는 결정 조치를 나타냅니다. “C”는 ‘잘라내기’를 의미합니다.
SPACE, 필드 5는 전환 유형을 나타냅니다. 이 경우 ” “는 ‘cut’ 작업을 위해 채워집니다.
00:00:00:00, 필드 6은 소스 재생 IN Time을 의미합니다.
00:00:08:21, 필드 7은 소스 재생 OUT Time을 의미합니다.
00:00:00 :00, 필드 8은 레코드 재생 IN Time을 의미합니다.
00:00:08:21, 필드 9는 레코드 재생 OUT Time을 의미합니다.
EDL CMX 3600 사양에 대해 자세히 살펴보지 않아도 EDL 파일에 결정/전환 목록(예: “Cut”)과 IN 및 OUT Time과 같은 타이밍 정보가 포함되어 있음을 알 수 있습니다.
EDL 파일 형식으로 변환하는 것은 탐지의 시작과 끝 SMPTE 타임코드를 매핑하고 이를 호환 가능한 EDL CMX3600 결정 라인으로 포맷하는 것만큼 간단합니다.
요약
이 포스팅에서는 미디어 고객이 VOD 애플리케이션에 대한 콘텐츠 준비 및 품질 관리(QC) 작업을 간소화할 수 있는 Amazon Rekognition Video 세그먼트 감지 API에 대해 알아보았습니다.
또한, 이번 릴리스에 추가된 4가지 새로운 세그먼트 유형인 오프닝 크레딧, 콘텐츠 세그먼트, 슬레이트 및 스튜디오 로고를 검토했습니다. 또한 새로운 필터 옵션을 사용하여 블랙 프레임 감지를 추가로 사용자 지정할 수 있는 방법도 확인했습니다.
마지막으로 Segment Detection 솔루션을 사용하여 비디오 파일을 쉽게 테스트하고 JSON API 응답을 EDL 파일로 변환하여 BlackMagic Davinci Resolve 또는 Adobe Premiere Pro와 같은 비선형 편집기로 쉽게 가져올 수 있는 방법을 살펴보았습니다. 아마존 Rekognition 비디오 세그먼트 감지 API에 대한 더 자세한 내용은 우리의 문서를 참조해주세요!
메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글이나 관련 기사 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.