Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

음성과 영상 변환 API

각 메서드의 media_item_rid: Optional[str]는 기본 None으로 집합 전체를 처리하며, 지정하면 해당 항목을 처리합니다. 미디어 자체를 생성하는 메서드는 MediaSetInputTransform을 반환하여 출력의 write()에 전달합니다. 아래 함수는 실제 입력/출력 핸들을 인자로 받습니다.

transcode와 extract_audio

메서드추가 인자기본값과 동작
transcode()encode_format: Optional[str]영상은 MP4, 음성은 MP3로 인코딩
extract_audio()output_format: str영상에서 음성을 추출. 기본 mp3, wav 등 선택
def transcode_video(videos, output):
    output.write(videos.transform().transcode(encode_format="mov"))


def extract_video_audio(videos, audio_output):
    audio_output.write(videos.transform().extract_audio(output_format="wav"))

extract_scene_frames

새 장면의 시작이나 큰 시각적 전환에 해당하는 프레임을 추출합니다.

인자기본값과 조건
scene_sensitivitySTANDARD. MORE_SENSITIVE, STANDARD, LESS_SENSITIVE 중 선택
output_formatPNG. 추출할 프레임의 이미지 형식
media_item_ridNone, 집합 전체

각 영상의 결과 이미지들은 TAR archive로 저장됩니다. 이를 받을 수 있는 multimodal 미디어 출력을 사용합니다.

def scene_frames(videos, multimodal_output):
    operation = videos.transform().extract_scene_frames(scene_sensitivity="MORE_SENSITIVE")
    multimodal_output.write(operation)

chunk

음성이나 영상을 지정한 기간의 작은 조각으로 나눕니다.

인자자료형기본값과 조건
chunk_duration_millisecondsint10000, 즉 10초. 양의 정수
output_formatOptional[str]영상은 MP4, 음성은 TS. 음성 chunk의 출력은 TS만 지원
media_item_ridOptional[str]None
def five_second_video_chunks(videos, output):
    output.write(videos.transform().chunk(chunk_duration_milliseconds=5000))

chunk의 기간은 밀리초이며 아래 프레임 추출의 timestamps는 초입니다. Transcode의 음성 기본 MP3와 chunk의 음성 TS 조건도 구분합니다.

extract_first_frame

영상의 첫 완전한 장면 프레임을 이미지로 추출합니다.

인자기본값과 동작
width: Optional[int]None. height만 있으면 그 크기에 맞춰 폭 조정
height: Optional[int]None. width만 있으면 그 크기에 맞춰 높이 조정
output_format: strPNG
media_item_rid: Optional[str]None

폭과 높이를 모두 생략하면 원래 크기를 사용합니다.

def first_video_frames(videos, image_output):
    image_output.write(videos.transform().extract_first_frame(width=800, height=600))

extract_frames_at_timestamp

인자자료형기본값과 조건
timestampsUnion[float, Column]필수. 프레임을 추출할 시각, 초 단위
media_item_ridOptional[str]None
dfOptional[DataFrame]동적 시각을 제공하거나 처리 대상을 제한하는 표
onOptional[str]media_item_rid 또는 media_reference. df와 함께 지정
widthOptional[int]None, height가 있으면 그에 맞춰 조정
heightOptional[int]None, width가 있으면 그에 맞춰 조정
output_formatstrPNG

크기를 모두 생략하면 원래 크기입니다. df를 지정하면 입력 집합과 표에 모두 있는 항목만 처리합니다. 다음 marks는 실제 미디어 식별자와 timestamp 열을 가진 Spark DataFrame입니다.

def frames_from_marks(videos, image_output, marks):
    operation = videos.transform().extract_frames_at_timestamp(
        timestamps=marks.timestamp, df=marks, on="media_item_rid"
    )
    image_output.write(operation)


def frames_at_thirty_seconds(videos, image_output):
    image_output.write(videos.transform().extract_frames_at_timestamp(timestamps=30))

음성과 영상의 값 추출

아래 추출 메서드는 단일 항목이면 문자열, 집합 전체이면 DataFrame을 반환합니다. 집합 결과에는 공통으로 media_item_rid, path, media_reference가 포함됩니다.

suppress_errors: bool=True가 기본이며 집합 전체에서 발생한 오류를 결과에 포함합니다. False이면 오류를 잡지 않고 빌드를 실패시킵니다. 이 옵션은 개별 항목에는 적용하지 않습니다.

get_waveform

peaks_per_second: Optional[int]는 기본 100이며 1~1000의 정수입니다. 단일 항목은 0~1로 정규화된 진폭 double 목록의 JSON 문자열을 반환합니다. 집합 결과의 추가 열은 waveform: str입니다.

def audio_waveforms(audio, dataset_output):
    dataset_output.write_dataframe(audio.transform().get_waveform())

transcribe

인자자료형기본값과 조건
media_item_ridOptional[str]None
languageOptional[str]None이면 언어 자동 감지
performance_mode문자열 열거값more_economical 기본, 또는 more_performant
output_format문자열 열거값text 기본, 또는 segments
add_timestampsOptional[bool]False. text 출력에만 적용
suppress_errorsboolTrue, 집합 전체에만 적용

단일 text 결과는 전사 문자열입니다. 단일 segments 결과도 문자열이지만 시각과 구간 신뢰도 등의 상세 정보를 담은 JSON입니다. 집합 결과는 transcription: str 열을 추가합니다. 언어 이름과 코드는 전사 언어 사전에 있습니다.

def transcribe_segments(audio, dataset_output):
    result = audio.transform().transcribe(output_format="segments")
    dataset_output.write_dataframe(result)


def transcribe_english_item(audio, media_item_rid):
    return audio.transform().transcribe(
        media_item_rid=media_item_rid, language="english"
    )

두 번째 함수의 반환은 단일 문자열입니다. 이를 집합 전체의 DataFrame 반환과 혼동하지 않습니다.

get_scene_frame_timestamps

scene_sensitivity는 기본 STANDARD이며 MORE_SENSITIVE와 LESS_SENSITIVE도 지원합니다. 공통 media_item_rid와 suppress_errors 인자를 받습니다.

단일 결과는 frames 필드에 장면 프레임 목록을 담은 JSON 문자열입니다. 각 프레임에는 timestamp와 sceneScore가 있습니다. 집합 결과의 추가 열은 scene_frames: str입니다.

def scene_frame_times(videos, dataset_output):
    dataset_output.write_dataframe(videos.transform().get_scene_frame_timestamps())