서문
여러 오디오 트랙을 단일 제목과 연결하는 기능은 다음 두 가지 주요 시나리오에서 유용 할 수 있습니다.
- 전 세계적으로 더 광범위한 도달을 위해 동일한 비디오를 다른 언어로 재생
- 시각 장애인을위한 설명과 함께 오디오 제공
오디오 트랙 추가는 Studio에서도 수행할 수 있습니다. 미디어 모듈을 사용하여 비디오에 오디오 트랙 추가상세 사항은.
지원되는 비디오 형식
여러 오디오 트랙이 지원됩니다. HLS V4+
그리고DASH
- 유무에 관계없이DRM
보호.
샘플
다음은 여러 오디오 트랙이있는 비디오의 간단한 예입니다.
설정
Dynamic Ingest요청 설정은 비디오, 이미지, 오디오 트랙, WebVTT파일 또는 다음 모두를 인제스트하든 동일합니다.
- 요청 URL
-
https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
- 인증
- 인증에는 다음으로 전달된 액세스 토큰이 필요합니다.
Bearer
토큰Authorization
머리글:Authorization: Bearer {access_token}
액세스 토큰을 얻으려면 다음이 필요합니다. 클라이언트 자격 증명 (아래 참조). 액세스 토큰을 얻는 과정은 액세스 토큰가져오기를 참조하십시오 .
S3에 대한 참고 사항
보호된 S3 버킷에서 소스 파일을 가져오는 경우 파일에 액세스할 수 있도록Video Cloud버킷 정책을 설정해야 합니다. 보다사용Dynamic Ingest S3와 함께자세한 내용은
자격 증명 가져오기
광고를 받으려면 OAuth UI로 이동하여 다음 앱을 등록해야 합니다. client_id
client_secret
다음은 필요한 권한입니다.
CURL또는 다음을 통해 자격 증명을 얻을 수도Postman있습니다.
API에서 직접 자격 증명을 얻는 경우 필요한 권한은 다음과 같습니다.
[
"video-cloud/video/all",
"video-cloud/ingest-profiles/profile/read",
"video-cloud/ingest-profiles/account/read",
"video-cloud/upload-urls/read"
]
작업 흐름
두 가지 주요 사용 사례가 있습니다.
- 여러 오디오 트랙이있는 새 비디오 수집
- 기존 비디오에 여러 오디오 트랙 추가
아래 섹션에서 API 요청에 대한 세부 정보를 살펴 보겠습니다.
오디오 트랙 메타 데이터
오디오 트랙에는 메타데이터 필드가 몇 개 첨부되어 있습니다. 이 중 일부는 트랙을 인제스트할 때 설정되고 다른 필드는 트랙에 의해 생성됩니다Video Cloud . 이러한 필드 중 일부는 읽기 전용이고 다른 필드는 사용자가 업데이트 할 수 있습니다. 메타 데이터 필드는 관련 API 요청과 관련하여 아래에 자세히 설명되어 있지만, 두 가지 특정 필드는 Brightcove Player가 여러 오디오 트랙을 처리하는 방법을 결정하는 데 중요하므로 여기에 몇 가지 설명이 필요합니다.
language
인제션 중에 각 트랙에 설정된language
필드는 트랙의 언어를 지정합니다. 트랙이 비디오에서 음성으로 더빙 된 경우 중요합니다. 와 같은 기본 코드fr
또는 로캘 식별자가 있는 코드 (예:) 를 사용할 수fr-CA. See the ISO Language Code Table
있습니다.
variant
variant
필드는 오디오 트랙의 종류를 설명합니다. 표준 의미로 가능한 값은 다음과 같습니다.
main
-메인 트랙, 일반적으로 비디오 파일에 다중화 된 트랙alternate
-대체 오디오 트랙commentary
-비디오 트랙에 대한 해설을 제공하는 오디오 트랙dub
-다른 언어로 된 더빙 버전의 음성 단어가 포함 된 트랙descriptive
-트랙은 어떤 방식 으로든 동영상 콘텐츠를 설명합니다.
계정 기본값
계정 기본값을 설정하고 Brightcove Player에서 기본값으로 처리할 오디오 트랙을 결정할 수 있습니다 (아래 섹션에서 볼 수 있듯이 트랙 메타데이터를 업데이트하여 기본값을 재정의할 수도 있습니다). language
variant
계정의 기본값을 설정하려면 Brightcove 지원팀에 문의하십시오 .
오디오 트랙 수집
이제 앞에서 설명한 두 가지 사용 사례에 대한 오디오 트랙을 수집하기위한 API 호출을 살펴 보겠습니다.
여러 오디오 트랙이있는 새 비디오
비디오 객체 만들기 ( CMS API )
- 비디오 객체를 만들 때 비디오 메타데이터의 여러 항목을 추가할 수 있지만 여기서는 비디오의 최소 값인
name
a만 추가하겠습니다.{ "name": "YOUR_VIDEO_NAME" }
- 위의 JSON (플레이스홀더 텍스트는 동영상 이름으로 대체) 을 요청 본문으로 제출하여 다음 주소로 제출하세요.
POST
https://cms.api.brightcove.com/v1/accounts/YOUR_ACCOUNT_ID/videos
- 응답으로 많은 동영상 메타데이터가 반환되지만 여기서 중요한 부분은 다음 단계에서 필요한
id
(동영상 ID) 입니다.
비디오 및 오디오 트랙 수집
다음으로 비디오 및 오디오 트랙을 수집합니다 (이미지 및 텍스트 트랙과 같은 다른 자산을 추가 할 수 있지만 여기서는 간단하게 유지하겠습니다). 약간 혼란스러울 수 있는 한 가지는 요청 본문의 JSON에 두 번audio_tracks
표시된다는 것입니다.
audio_tracks
객체 내의master
객체에는 비디오 파일에 포함된 오디오 트랙에 대한 메타데이터가 포함되어 있습니다 (있는 경우 - 오디오에서 멀티플렉스라고도 함). 오디오 트랙은 비디오 파일에 이미 포함되어 있으므로 오디오 파일의 URL 없이 메타데이터만 포함됩니다. 인코딩된 오디오 트랙은 오디오 형식 에 대한 규칙을 준수하는 한 스테레오, 5.1, 7.1로 압축될 수 있으며 알려진 문제 에 표시된 대로 기본 오디오를 설정하는 것 외에는 오디오 트랙을 주문할 수 있는 다른 방법이 없습니다.- 인제스팅 중인 추가 오디오 트랙을 설명하는 최상위
audio_tracks
객체. 여기에는 오디오 파일의 URL과 기타 메타데이터가 포함됩니다.
- 요청 본문에 보낼 JSON 데이터는 다음과 같습니다.
{ "master": { "url": "https://support.brightcove.com/test-assets/videos/Great_Blue_Heron.mp4", "audio_tracks": [ { "language": "en", "variant": "main" } ] }, "audio_tracks": { "merge_with_existing": true, "masters": [ { "url": "https://support.brightcove.com/test-assets//audio/celtic_lullaby.m4a", "language": "en", "variant": "alternate" }, { "url": "https://support.brightcove.com/test-assets//audio/audio1.m4a", "language": "en", "variant": "commentary" } ] }, "profile": "BoltIngestProfile", "capture-images": true, "callbacks": [ "https://solutions.brightcove.com/bcls/di-api/di-callbacks.php" ] }
- 위의 JSON을 전송하고 자리 표시자를 자신의 URL로 대체하고
language
그리고variant
값,POST
요청하다https://ingest.api.brightcove.com/v1/accounts/ACCOUNT_ID/videos/ID/ingest-requests
(그만큼ID
다음은 동영상 객체 생성 요청에서 반환된 동영상 ID입니다.)
기존 비디오에 오디오 트랙 추가
기존 비디오에 오디오 트랙을 추가하는 절차는 동일합니다. 단, 비디오가 이미 존재하기 때문에 에 비디오 생성을 요청할 필요가 없다는 점이 다릅니다. CMS API 그리고 요청사항에Dynamic Ingest API를 사용하면 동영상 파일의 URL이나audio_tracks
아래에master
다중화된 오디오에 대한 메타데이터를 제공합니다. 그러나 기존 비디오의 오디오 트랙에 muxed에 대한 메타 데이터를 포함하려고합니다. 오디오 트랙은 오디오 형식 의 규칙에 따라 압축되어야 한다는 점을 기억하는 것도 중요합니다. 따라서 수집 요청에 대한 JSON은 다음과 같습니다.
{
"audio_tracks": {
"merge_with_existing": true,
"masters": [
{
"url": "https://support.brightcove.com/test-assets/audio/celtic_lullaby.m4a",
"language": "en",
"variant": "alternate"
},
{
"url": "https://support.brightcove.com/test-assets/audio/audio1.m4a",
"language": "en",
"variant": "commentary"
}
]
},
"profile": "BoltIngestProfile",
"capture-images": true,
"callbacks": [
"https://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
]
}
수집을위한 오디오 트랙 필드
필드 | 유형 | 설명 |
---|---|---|
master.audio_tracks |
객체 [] | 다중 오디오에 대한 메타 데이터 |
master.audio_tracks.language |
스트링 | 다중화된 오디오의 언어 코드입니다. 와 같은 기본 코드fr 또는 로캘 식별자가 있는 코드 (예:) 를 사용할 수fr-CA. See the ISO Language Code Table 있습니다. |
master.audio_tracks.variant |
문자열 | 오디오 트랙의 종류: main | alternate dub | commentary | | descriptive main ((일반적으로 오디오의 멀티플렉싱에 사용됨) |
audio_tracks |
객체 | 추가 오디오 트랙에 대한 정보 |
audio_tracks.merge_with_existing |
부울 | 이 트랙을 기존 트랙에 병합해야하는지 교체해야하는지 여부 |
audio_tracks.masters |
객체 [] | 개별 오디오 트랙에 대한 정보 |
audio_tracks.masters.url |
문자열 | 오디오 트랙 파일의 URL |
audio_tracks.masters.language |
스트링 | 오디오 트랙의 언어 코드입니다. 와 같은 기본 코드fr 또는 로캘 식별자가 있는 코드 (예:) 를 사용할 수fr-CA. See the ISO Language Code Table 있습니다. |
audio_tracks.masters.variant |
문자열 | 오디오 트랙의 종류: main | alternate dub | commentary | | descriptive main ((일반적으로 오디오의 멀티플렉싱에 사용됨) |
알림
콜백 URL을 하나 이상 지정하면 (위의 인제스트 요청에 대한 샘플 JSON에서와 같이) 인제스트한 각 오디오 트랙에 대해 알림이 전송됩니다. Video Cloud 알림은 다음과 같이 표시됩니다.
{
"entity": "default/audio128",
"entityType": "DYNAMIC_RENDITION",
"version": "1",
"action": "CREATE",
"jobId": "0f703adb-0f17-4a35-8395-21c7fcdd2649",
"videoId": "5298468208001",
"dynamicRenditionId": "default/audio128",
"accountId": "1910141565001",
"status": "SUCCESS",
"language" : "en",
"variant" : "alternate"
}
오디오 트랙에 대한 알림을 식별하려면 알림에서language
및variant
필드를 찾으십시오. "action": "CREATE"
및"status": "SUCCESS"
필드는 트랙이 성공적으로 인제스트되었음을 나타냅니다.
오디오 트랙 관리
오디오 트랙을 인제스트한 후에는 를 통해 관리할 수CMS API있습니다.
비디오에 대한 모든 오디오 트랙 메타 데이터 가져 오기
비디오와 관련된 모든 오디오 트랙의 메타데이터를 검색하려면 다음을GET
요청하십시오.
https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks
응답은 각 오디오 트랙에 대한 메타 데이터를 포함하는 개체의 배열입니다. 자세한 내용은 아래 응답 필드 표를 참조하십시오.
[
{
"id": "en_alternate",
"language": "en",
"variant": "alternate",
"duration": 86100,
"encoding_rates": [
64000,
96000,
127000
]
},
{
"id": "en_commentary",
"language": "en",
"variant": "commentary",
"duration": 34203,
"encoding_rates": [
10000,
13000,
15000
]
},
{
"id": "en_main",
"language": "en",
"variant": "main",
"duration": 31488,
"encoding_rates": [
62000,
94000,
125000
]
}
]
미디어 모듈에서 비디오를보고 Studio에서이 정보를 볼 수도 있습니다.
하나의 오디오 트랙에 대한 메타 데이터 가져 오기
비디오와 연결된 하나의 오디오 트랙에 대한 메타데이터를 검색하려면 다음을GET
요청하십시오.
https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id
응답은 각 오디오 트랙에 대한 메타 데이터가 포함 된 개체입니다. 자세한 내용은 아래 응답 필드 표를 참조하십시오.
오디오 트랙 메타 데이터 업데이트
다음을PATCH
요청하여 오디오 트랙의 쓰기 가능한 메타데이터 필드를 업데이트할 수 있습니다.
https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id
요청 본문에 수정하려는 필드를 포함합니다. 예를 들면 다음과 같습니다.
{
"language": "es",
"is_default": true
}
오디오 트랙 삭제
오디오 트랙을 삭제하려면 다음 주소로 DELETE 요청을 보내십시오.
https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id
삭제 프로세스가 비동기적이고 즉시 완료되지 않을 수 있기 때문에 성공 응답 코드는 204 (콘텐츠 없음)가 아닌 202 (수락 됨) 일 수 있습니다.
필드 | 유형 | 읽기 전용 | 설명 |
---|---|---|---|
id |
문자열 | 예 | language_variant로 구성된 트랙의 ID - 이 값이 변경되면 ID도 변경될 수 있습니다. |
language |
문자열 | 아니요 | 오디오 트랙의 언어 코드입니다. 와 같은 기본 코드fr 또는 로캘 식별자가 있는 코드 (예:) 를 사용할 수fr-CA. See the ISO Language Code Table 있습니다. |
variant |
문자열 | 아니요 | 오디오 트랙의 종류: main | alternate dub | commentary | | descriptive main ((일반적으로 오디오의 멀티플렉싱에 사용됨) |
duration |
번호 | 예 | 밀리 초 단위의 트랙 길이 |
encoding_rates |
번호[] | 예 | 이 트랙의 사용 가능한 인코딩 목록 (bps) |
is_default |
부울 | 아니요 | true인 경우 재생을 위한 기본 트랙으로 사용됩니다 (계정 수준 기본값 재정의). |
재생
Brightcove 웹 및 SDK 플레이어가 여러 오디오 트랙을 처리하는 방법에 대한 자세한 내용은 다음을 참조하십시오.
알려진 문제
- 오디오 마스터가 저장되지 않음
-
- Video Cloud오디오 마스터를저장하지 않습니다.
- 오디오 전용 파일을 사용해야 합니다.
- 오디오 트랙은 비디오 트랙이 없는 오디오 전용 파일이어야 합니다.
HLSv3
,HLS
오디오와 비디오가 동일한 세그먼트에 있는 경우-
- 재생 API는
HLSv3
매니페스트를 반환하지 않습니다. - 모든
HLS
매니페스트에는 멀티멀티플렉싱된 비디오/오디오가 포함됩니다.
- 재생 API는
- 원활한 스트리밍
- 부드러운 스트리밍 URL은 사용할 수 없습니다.
- 소셜 배포
- 배포에 사용할 오디오 트랙을 선택할 수 없습니다. 비디오 소스에 포함 된 트랙 (오디오에 muxed) 은 항상 사용됩니다.
- Studio
-
- Studio는 오디오 트랙에 대한 정보를 표시합니다.
- Studio를 사용하여 오디오 트랙을 추가하려면다중 오디오 트랙을 참조하십시오.
- 하나의 “기본” 트랙을 넘어서 오디오 트랙 순서 지정
-
- 다음을 사용하여 기본 오디오 트랙을 선택할 수 있습니다. CMS API제목별로
is_default
필드true
- 지원에서 설정할 수 있는 계정 기본값도 있습니다.
- 이것은 HLS 매니페스트의 “기본”트랙에만 영향을 미칩니다.
- 다른 주문은 할 수 없습니다
- 다음을 사용하여 기본 오디오 트랙을 선택할 수 있습니다. CMS API제목별로
- 단일 소스에서 두 개 이상의 오디오 트랙 수집
- 소스당 하나의 오디오 트랙 만 지원합니다. 각 오디오 트랙은 별도로 수집되어야합니다.
- 오디오만 포함된 비디오에 대한 DRM 보호
- 비디오 트랙이 추가되는 즉시 DRM 보호가 활성화됩니다.
- 최종 사용자 친화적 라벨
- 오디오 트랙에 대한 사용자 지정 레이블은 지원하지 않습니다. 필요한 경우 Player API를 통해 클라이언트 측에서 변경해야합니다.
- 경우에 따라 트랙을 전환하면 브라이트코브 플레이어가 불안정해질 수 있습니다.
-
- 모든 오디오 세그먼트가 다운로드되기 전에 트랙 전환
- Silverlight 플러그인을 사용하여 비디오를 재생하는 경우(10 미만의 IE 버전 또는 Window 8 미만 버전의 모든 IE 버전) - 여러 오디오 트랙이 ~ 아니다 Silverlight에서 지원됩니다.
- 오디오와 비디오의 지속 시간이 다르면 짧은 시간이 다 떨어질 때마다 플레이어가 멈출 수 있습니다.
- 비디오 "
duration
” - 오디오 트랙의 지속 시간이 다른 경우 카탈로그/재생 API에서
duration
보고하는 비디오가 올바르지 않을 수 있습니다.