Video Transcoding

최신 업데이트:2025-05-26 18:21:23

비디오 트랜스코딩 기능은 오브젝트 스토리지에 저장된 영상 파일을 원본 포맷에서 다양한 대상 포맷으로 변환합니다. 이 서비스는 비디오 비트레이트, 해상도, 인코딩 방식 등을 유연하게 조정할 수 있도록 지원합니다. 이를 통해 다양한 기기에서 동영상 콘텐츠가 정상적으로 재생되어 모든 사용자가 최적화된 시청 경험을 누릴 수 있습니다.

핵심 기능

  • 다양한 포맷 지원: 주요 및 전문 동영상·오디오 포맷과 코덱을 폭넓게 지원합니다.
  • 맞춤형 파라미터 설정: 비트레이트, 해상도, 프레임률 등 주요 출력 동영상 파라미터를 직접 정의할 수 있습니다.
  • 호환성 강화: 트랜스코딩된 영상이 다양한 최종 사용자 기기 및 플레이어에서 원활하게 재생될 수 있도록 보장합니다.
  • 무결점 연동: 오브젝트 스토리지와 매끄럽게 연동되어 영상 리소스의 관리 및 처리가 편리합니다.

지원되는 포맷 및 코덱

CDNetworks 영상 트랜스코딩 서비스는 다음과 같은 파일 형식과 인코딩 표준을 지원합니다:

카테고리 지원 항목
비디오 포맷 MP4, FLV, HLS (m3u8), DASH (mpd), TS, MKV, MOV, WMV, AVI, VP8, VP9, RealVideo, Windows Media Video
오디오 포맷 AAC, AC-3, MP1, MP2, MP3, PCM, RealAudio, Windows Media Audio (WMA), OGG
인코딩 포맷 H.266 (VVC), H.265 (HEVC), H.264 (AVC), H.263, MPEG

트랜스코딩 사용 사례

다음과 같은 시나리오에서 live streaming transcoding을 사용할 수 있습니다:

  • 업로드 시 트랜스코딩: 비디오 파일을 Object Storage에 업로드할 때 자동 또는 수동으로 트랜스코딩 작업을 트리거합니다.
  • 기존 동영상 트랜스코딩: 이미 Object Storage에 저장된 동영상 파일을 처리하고 트랜스코딩합니다.
  • 미디어 처리 워크플로우: 트랜스코딩을 복잡한 미디어 처리 워크플로우(예: 동영상 썸네일 생성, 워터마킹)의 일부로 통합합니다.

사용 방법

요청 구조

비디오 트랜스코딩 작업은 요청 시 fops(파일 작업) 파라미터를 설정하여 정의합니다. fops 파라미터는 일련의 명령어와 하위 파라미터로 구성되며, 슬래시(/)로 연결되어 구분됩니다.

일반적인 구조는 다음과 같습니다:
<op>/<Format_value>[/param1/<value1>/param2/<value2>...]|saveas/<Urlsafe_Base64_Encoded_Save_Path>

예를 들어, 일반적으로 사용되는 일부 파라미터를 포함한 좀 더 자세한 구조는 다음과 같습니다:



<op>/<Format>
    /r/<value>
    /ab/<value>
    /vb/<value>
    /vcodec/<value>
    /acodec/<value>
    /s/<value>
    /autoscale/<value>
    /autofill/<value>
    /GOPInterval/<value>
    /rotate/<value>
    /an/<value>
    /vn/<value>
    /moovToFront/<value>
    /sar/<value>
    /preset/<value>
|saveas/<Urlsafe_Base64_Encode(bucket:savedfilename)>



주요 사항:

  • op: 작업 유형입니다. 비디오 live streaming transcoding의 경우, 이 값은 avthumb로 고정되어 있습니다.
  • Format: 출력 비디오의 대상 포맷(예: mp4, flv)을 나타냅니다.
  • |saveas/...: 필수 항목입니다. 변환된 파일의 저장 위치(버킷)와 파일명을 URL-안전 Base64 인코딩을 통해 지정합니다.

상세 매개변수 설명

아래 표는 비디오 live streaming transcoding에서 지원하는 매개변수 및 그 설명을 나열합니다:

Parameter Required Description
op Yes 작업 유형입니다. 비디오 트랜스코딩 작업의 경우 avthumb로 설정하십시오.
format Yes 출력 대상 포맷을 지정합니다. 지원하는 포맷: mp4, flv, m3u8 (HLS), mpd (DASH) 등.
r No 비디오 프레임 레이트(fps)입니다. 일반 값: 24, 25, 30.
참고: 동적 프레임 레이트 캡처는 지원하지 않습니다.
ab No 오디오 비트레이트, 단위는 비트/초 (bit/s)입니다. 일반적인 값: 64k, 128k, 192k, 256k, 320k (예: 128k는 128 kbps).
vb No 비디오 비트레이트, 단위는 비트/초 (bit/s)입니다. 동적 비트레이트를 지원합니다. 일반적인 값: 128k, 1.25m, 5m (예: 128k는 128 kbps, 1.25m는 1.25 Mbps를 의미).
vbRatio No 계수로 표현된 비디오 비트레이트입니다. 출력 비디오 비트레이트는 입력 비디오 비트레이트에 이 계수를 곱한 값으로 결정됩니다. 값의 범위는 (0, 15]이며, 소수점 값을 지원합니다.
참고: 값이 0이거나 15를 초과하면 오류가 반환됩니다. vbRatio로 계산된 비디오 비트레이트가 50 Mbps를 초과하면 비정상적으로 간주되어 해당 파라미터는 적용되지 않습니다. vbRatiovb가 모두 설정된 경우 vbRatio가 우선 적용됩니다.
vcodec No 비디오 인코딩 방식을 지정합니다. 지정하지 않으면 시스템이 원본 인코딩 방식을 유지하려고 시도합니다.
옵션:
libx264 - H.264
libvpx - VP8 및 VP9 (구글 코덱)
libxvid - MPEG-4
libws265 - H.265
vvc - H.266
acodec No 오디오 인코딩 방식을 지정합니다. 지정하지 않으면 시스템이 원본 인코딩 방식을 유지하려고 시도합니다. MP3, AAC, OGG 등 다양한 인코딩 방식을 지원합니다.
s 아니오 출력 비디오 해상도를 widthxheight 형식(예: 1920x1080) 또는 미리 설정된 값으로 지정합니다.

가로 x 세로 모드: 정확한 가로/세로 크기를 설정합니다. 가로와 세로를 모두 지정하면 트랜스코더가 이 값을 그대로 사용합니다. 참고: 설정한 해상도의 종횡비가 원본과 다를 경우(예: autoscale 또는 autofill 미사용 시) 영상이 눌리거나 늘어날 수 있습니다.

가로 또는 세로 모드: 한쪽 값만 입력(예: 1280x 또는 x720) 시, 트랜스코더가 원본 종횡비를 유지하면서 다른 값을 자동 계산합니다. 예를 들어, 원본이 1920x1080일 때 1280x를 지정하면, 출력 해상도는 1280x720이 됩니다.
autoscale 아니오 s 파라미터와 함께 사용하여 종횡비 처리 방식을 제어합니다:
0 (기본값): s 파라미터에서 지정된 해상도대로 엄격하게 처리하여, 영상이 늘어나거나 줄어들 수 있습니다.
1: 원본의 종횡비를 유지한 채로 s 값 이내에 맞춰 스케일링하며, 출력 비디오는 지정한 가로/세로 크기를 넘지 않습니다.
autofill 아니오 s 파라미터와 함께 사용하여 비디오 출력 크기와 채우기를 제어합니다:
1: 목표 종횡비가 원본 비디오와 다른 경우, 원본 비디오의 종횡비를 유지한 채 s 파라미터로 지정된 크기에 맞게 스케일링합니다. 빈 영역에는 검은색 막대(레터박스 또는 필러박스)가 추가되어 출력이 최종 해상도(s값)와 일치하도록 합니다.
GOPInterval 아니오 키프레임(I-프레임) 간의 시간 간격을 밀리초(ms) 단위로 설정합니다.
참고: 이 파라미터는 g 파라미터(키프레임 간 프레임 수 설정)와 상충하므로, 두 파라미터를 함께 사용할 수 없습니다.
rotate 아니오 시계 방향 회전 각도를 지정합니다. 옵션은 90, 180, 270 또는 auto(비디오 메타데이터를 기반으로 자동 감지 및 보정)입니다. 기본값은 회전 미적용입니다.
an 아니오 오디오 스트림 비활성화:
0 (기본값): 오디오 스트림을 유지합니다.
1: 오디오 스트림을 제거합니다. 출력 비디오는 오디오를 포함하지 않습니다.
vn 아니오 비디오 스트림 비활성화:
0 (기본값): 비디오 스트림을 유지합니다.
1: 비디오 스트림을 제거하며, 출력 파일에는 오디오 스트림(존재 시)만 남습니다.
moovToFront 아니오 MP4 파일에서 moov 원자(메타데이터)의 위치를 제어합니다:
0 (기본값): 메타데이터를 파일 끝에 유지합니다.
1: 메타데이터를 파일의 시작 부분으로 이동합니다. 이를 통해 재생 플레이어가 초기화 정보를 더 빨리 참조할 수 있어 일반적으로 동영상 스트리밍 시작이 빨라집니다.
sar 아니오 샘플 종횡비(Sample Aspect Ratio). 특정 픽셀 종횡비(예: 1:1, 1:2)를 설정합니다. 이 파라미터는 최종 표시 종횡비에 영향을 미치며, 보통 s(해상도) 파라미터에 의해 암시되는 종횡비보다 우선 적용됩니다. 예를 들어 해상도가 720x720이고 SAR이 1:2라면, 표시 시 픽셀이 세로로 늘어나 실제 표시 해상도(또는 인식 해상도)는 720x1440이 됩니다.
/crf/<value> 아니오 일정 비트율 계수(Constant Rate Factor, CRF). 장면의 복잡도에 따라 출력 비트 전송률이 동적으로 조정되어 일정한 시각적 품질을 유지합니다. 단순 장면은 더 낮은 비트 전송률, 복잡한 장면은 더 높은 비트 전송률을 가지며, 보통 0~51(H.264/H.265 기준)의 값을 사용합니다. 값이 작을수록 품질이 높고 파일 크기는 커지며, 값이 클수록 품질은 낮고 파일은 작아집니다. 권장 사용 범위는 [18, 28]입니다.
level 아니요 H.264/H.265 인코딩 레벨을 설정합니다. 레벨은 디코더 제약 조건(예: 최대 해상도, 프레임 속도, 비트레이트)을 정의합니다. 값 예시는 10(레벨 1.0)에서 51(레벨 5.1)까지입니다. 이 파라미터는 비디오 코덱이 libx264일 때만 적용됩니다.
pix_fmt 아니요 픽셀 포맷을 설정합니다. 예시: yuv420p, yuv422p, yuv444p. yuv420p(YUV 4:2:0)은 웹 비디오 스트리밍에서 가장 일반적으로 사용되는 포맷으로, 좋은 호환성과 압축률을 제공합니다.
vprofile 아니요 비디오 인코딩 프로파일을 설정합니다. 예시: baseline, main, high, high10, high422, high444(주로 H.264/H.265 용). 프로파일은 사용되는 인코딩 도구 집합을 정의해 압축 효율 및 호환성에 영향을 줍니다.
maxrate 아니요 동적 비트레이트의 최대 비트레이트 한계입니다. kbit/s(예: 1000k) 또는 Mbit/s(예: 8M; 'M’은 반드시 대문자여야 함)로 지정합니다.
참고: 이 파라미터를 사용할 경우, 반드시 bufsize 파라미터도 지정해야 합니다.
bufsize 아니요 인코더 버퍼 크기입니다. maxrate와 함께 사용하며, kbit/s(예: 1000k) 또는 Mbit/s(예: 8M; 'M’은 반드시 대문자여야 함)로 지정합니다. 디코더가 비디오 스트림을 검증하는 데 필요한 버퍼 크기를 정의합니다.
seiKeep 아니요 트랜스코딩 중 SEI(Supplemental Enhancement Information) 정보를 보존할지 여부를 결정합니다.
0(기본값): SEI를 보존하지 않음.
1: SEI를 보존함.
참고: 리믹스(즉, 재인코딩 없이 컨테이너 포맷만 변경)만 수행하는 경우, SEI 정보는 기본적으로 보존됩니다.
preset 아니요 (주로 HLS용) 프리셋 이름을 지정합니다. 프리셋이란 최적화된 트랜스코딩 파라미터 그룹의 사전 설정입니다. 프리셋 이름을 사용하면 해당 파라미터 그룹이 적용됩니다. 요청에 특정 파라미터를 추가하여 프리셋 내 개별 설정을 재정의할 수도 있습니다. 아래 "HLS 프리셋"에서 자세한 내용을 확인하세요.
saveas 트랜스코딩된 파일의 저장 위치(bucket)와 파일명을 정의합니다. URL-safe Base64 인코딩을 사용하며, 형식은 Urlsafe_Base64_Encode(bucket:savedfilename)입니다.

참고 사항:

  • 파라미터 이름과 값은 대소문자를 구분합니다.
  • 특정 파라미터 조합을 사용할 경우, 종속성 또는 충돌이 발생할 수 있습니다. 자세한 내용은 해당 파라미터 설명을 참조해 주시기 바랍니다.

HLS 사전 설정

HLS(m3u8) 트랜스코딩 구성을 간소화하기 위해 일련의 사전 설정이 제공됩니다. 각 사전 설정은 최적화된 파라미터 조합을 의미합니다.

유형 사전 설정 이름 설명
오디오 audio_32k 오디오 비트레이트: 32 kbps
오디오 audio_48k 오디오 비트레이트: 48 kbps
오디오 audio_64k 오디오 비트레이트: 64 kbps
비디오 video_16x9_150k 비트레이트: 150 kbps, 화면비: 16:9, 해상도: 약 400x224
비디오 video_16x9_240k 비트레이트: 240 kbps, 화면비: 16:9, 해상도: 약 400x224
비디오 video_16x9_440k 비트레이트: 440 kbps, 화면비: 16:9, 해상도: 약 400x224
비디오 video_16x9_640k 비트레이트: 640 kbps, 화면비: 16:9, 해상도: 약 400x224
비디오 video_4x3_150k 비트레이트: 150 kbps, 화면비: 4:3, 해상도: 약 400x300
비디오 video_4x3_240k 비트레이트: 240 kbps, 화면비: 4:3, 해상도: 약 400x300
비디오 video_4x3_440k 비트레이트: 440 kbps, 화면비: 4:3, 해상도: 약 400x300
비디오 video_4x3_640k 비트레이트: 640 kbps, 화면비: 4:3, 해상도: 약 400x300
비디오 video_150k 비트레이트: 150 kbps, 원본 비율 유지, 너비는 400px 기준일 수 있음
비디오 video_240k 비트레이트: 240 kbps, 원본 비율 유지, 너비는 400px 기준일 수 있음
비디오 video_440k 비트레이트: 440 kbps, 원본 비율 유지, 너비는 400px 기준일 수 있음
비디오 video_640k 비트레이트: 640 kbps, 원본 비율 유지, 너비는 400px 기준일 수 있음
비디오 video_1000k 비트레이트: 1000 kbps, 원본 비율 유지
비디오 video_1500k 비트레이트: 1500 kbps, 원본 비율 유지

참고: 프리셋의 해상도는 원본 비디오의 특성에 따라 비율 유지를 위해 조정될 수 있습니다.

예시

예시 1: MP4를 FLV로 변환

이 예시는 Object Storage 버킷 vod-wcs-test001에 위치한 test.mp4라는 비디오를 FLV 포맷으로 live streaming transcoding 하는 방법을 보여줍니다. 비디오 비트레이트는 128k로 설정됩니다. 변환된 파일은 test_file.flv로 명명되어 동일한 버킷에 저장됩니다.

파라미터 조합 (fops):
avthumb/flv/vb/128k|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test_file.flv)

의사 코드 요청 (curl):

curl -v -X POST \
  --data "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/flv/vb/128k|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test_file.flv))&force=1&separate=1" \
  --header "Authorization: AccessKey:EncodeSign" \
  --url "<http://mgrDomain/fops>"

실제 요청(Base64 인코딩됨):

curl -v -X POST \
  -d "bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9mbHYvdmIvMTI4a3xzYXZlYXMvZG05a0xYZGpjeTEwWlhOME1EQXhPblJsYzNSZlptbHNaUzVtYkhZPQ==&force=1&separate=1" \
  -H "Authorization: AccessKey:EncodeSign" \
  --url "<http://mgrDomain/fops>"

예시 2: MP4를 HLS로 변환 (프리셋 사용)

이 예시는 오브젝트 스토리지 버킷 vod-wcs-test001에 저장된 test.mp4 동영상을 HLS 포맷으로 변환하며, .m3u8 매니페스트 파일과 관련 .ts 세그먼트를 생성합니다. 이 예시에서는 video_16x9_150k 프리셋을 사용합니다. 해당 프리셋에는 일반적으로 다음과 같은 파라미터가 포함되어 있습니다:

  • 비트레이트: 150kbps
  • 화면 비율: 16:9
  • 해상도: 약 400x224 (또는 소스를 기준으로 조정)

주요 트랜스코딩된 .m3u8 파일은 test.m3u8으로 명명되어 동일한 버킷에 저장됩니다.

파라미터 조합 (fops):
avthumb/m3u8/preset/video_16x9_150k|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test.m3u8)

의사 코드 요청 (curl):

curl -v -X POST \
  --data "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/m3u8/preset/video_16x9_150k|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test.m3u8))&force=1&separate=1" \
  --header "Authorization: AccessKey:EncodeSign" \
  --url "<http://mgrDomain/fops>"

실제 요청(Base64 인코딩됨):

curl -v -X POST \
  -d "bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9tM3U4L3ByZXNldC92aWRlb18xNng5XzE1MGt8c2F2ZWFzL2RtOWtMWGRqY3kxMFpYTjBNREF4T25SbGMzUXViVE4xT0E9PQ==&force=1&separate=1" \
  -H "Authorization: AccessKey:EncodeSign" \
  --url "<http://mgrDomain/fops>"


이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.