빠른 시작: 브라이트코브 라이브 API를 사용하여 라이브 스트림 만들기

이 튜토리얼은 Live API를 사용하여 라이브 스트림 작업을 만드는 방법을 안내합니다.

필요한 것

이 자습서를 완료하려면 다음이 필요합니다.

  • Live API 용으로 설정된 계정
  • Live API 용 API 키 (계정 설정시 제공됨)
  • Video Cloud 계정 (라이브 스트림 작업을 생성하는 데 필요하지 않지만 Brightcove Player에서 재생을 설정하는 데 필요)
  • Studio가 아닌 를 사용하여 Video Cloud 비디오를CMS API만들려면 비디오/읽기 및 비디오/쓰기 권한이 있는 클라이언트 자격 증명이 필요합니다. 클라이언트 자격 증명을 가져오는 프로세스에 익숙하지 않은 경우 아래의인증섹션을 참조하십시오.
  • cURL또는인썸니아또는포스트맨과 같은 REST 클라이언트를 통해 REST API 요청을 할 수있습니다.

    도움을 드리기 위해 실습에 사용할 수있는 Insomnia 및 Postman 가져 오기를 준비했습니다 (Brightcove Learning Services에서는 Insomnia를 선호하고 사용하지만 Postman도 사용할 수 있습니다).

    각 zip 파일에는 도움이되는 readme 페이지가 있습니다.

  • 실제 라이브 스트림을 생성하려면 라이브 스트리밍을위한 소프트웨어 또는 하드웨어 인코더가 필요합니다. 아래 지침에는 Wirecast를 사용하여 실시간 스트림을 설정하는 단계가 포함되어 있습니다 (평가판신청 ). 다른 인코더를 사용하는 경우 프로세스는 다르지만 Live API 응답에서 필요한 정보 측면에서 유사해야합니다.

CMS API에 대한 자격 증명 가져오기

CMS API사용하려면 적절한 자격 증명이 필요합니다.

대부분의 경우 자격 증명을 얻는 가장 쉬운 방법은 Studio 관리 API 인증 섹션 (계정에 대한 관리자 권한 필요) 을 사용하는 것입니다. 보다 API 인증 자격 증명 관리자세한 내용은 이 경우 필요한 권한은 관계를공유하는 데 사용됩니다. 읽기 권한과 쓰기 권한이 모두 필요합니다.

관계 사용 권한 공유
관계 사용 권한 공유

Studio에서 필요한 권한을 사용할 수 없거나 OAuth API에서 직접 권한을 가져오려면 아래 나열된 클라이언트 자격 증명가져오기문서 중 원하는 것을 선택하십시오. 어떤 옵션을 선택하든 올바른 작업 권한을 요청해야합니다. 다음은 cURL 또는 우편 배달부와 함께 사용하여 적절한 권한을 얻을 수 있습니다.

"operations": [
    "video-cloud/videos/read",
    "video-cloud/videos/create",
    "video-cloud/videos/update"]

라이브 작업 생성

먼저 라이브 작업을 생성합니다.

  1. 이 단계에서는 다음 주소로POST 요청을 제출해야 합니다.
    https://api.bcovlive.io/v1/jobs

    다음을 요청 본문으로 사용하십시오.

    {
        "live_stream": true,
        "region": "us-west-2",
        "reconnect_time": 1800,
        "outputs": [
            {
                "label": "hls720p",
                "live_stream": true,
                "width": 1280,
                "height": 720,
                "video_codec": "h264",
                "h264_profile": "high",
                "video_bitrate": 2100,
                "segment_seconds": 4,
                "keyframe_interval": 60
            },
            {
                "label": "hls540p",
                "live_stream": true,
                "width": 960,
                "height": 540,
                "video_codec": "h264",
                "h264_profile": "main",
                "video_bitrate": 1500,
                "segment_seconds": 4,
                "keyframe_interval": 60
            },
            {
                "label": "hls360p",
                "live_stream": true,
                "width": 640,
                "height": 360,
                "video_codec": "h264",
                "h264_profile": "main",
                "video_bitrate": 800,
                "segment_seconds": 4,
                "keyframe_interval": 60
            }
        ]
    }
  2. Insomnia또는 Postman과 같은 REST 클라이언트를 사용하는 경우 요청에 다음 헤더를 추가해야 합니다.
    X-API- 키 API 키
    컨텐츠 타입 응용 프로그램/json

    위의 1 단계에 표시된 요청 본문을 사용하고 POST 메서드를 사용하여 요청을 보내야합니다.

  3. API의 응답은 다음과 유사해야합니다.
    샘플 응답
    		{
    				"id": "15981d93877e490185e6ebc9af2c79a3",
    				"outputs": [
    						{
    								"id": "0-15981d93877e490185e6ebc9af2c79a3",
    								"playback_url": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/profile_0/chunklist.m3u8",
    								"playback_url_dvr": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/profile_0/chunklist_dvr.m3u8",
    								"playback_url_vod": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/profile_0/chunklist_vod.m3u8",
    								"label": "hls720p"
    						},
    						{
    								"id": "1-15981d93877e490185e6ebc9af2c79a3",
    								"playback_url": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/profile_1/chunklist.m3u8",
    								"playback_url_dvr": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/profile_1/chunklist_dvr.m3u8",
    								"playback_url_vod": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/profile_1/chunklist_vod.m3u8",
    								"label": "hls540p"
    						},
    						{
    								"id": "2-15981d93877e490185e6ebc9af2c79a3",
    								"playback_url": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/profile_2/chunklist.m3u8",
    								"playback_url_dvr": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/profile_2/chunklist_dvr.m3u8",
    								"playback_url_vod": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/profile_2/chunklist_vod.m3u8",
    								"label": "hls360p"
    						},
    						{
    								"id": "3-15981d93877e490185e6ebc9af2c79a3",
    								"playlist_type": "defaultS3",
    								"type": "playlist",
    								"filename": "playlist.m3u8",
    								"dvr_filename": "playlist_dvr.m3u8",
    								"playback_url": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/playlist.m3u8",
    								"playback_url_dvr": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/playlist_dvr.m3u8",
    								"ssai_playback_urls": {
    										"685b239f582c42fca49da33be4f2328e": {
    												"playback_url": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/685b239f582c42fca49da33be4f2328e/playlist_ssaiM.m3u8",
    												"playback_url_dvr": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/685b239f582c42fca49da33be4f2328e/playlist_dvr_ssaiM.m3u8",
    												"playback_added_cdns": [],
    												"description": "House Ads - a95ac581551b4478b27910e5675db1f8",
    												"type": "ads"
    										},
    										"c96e2d00d6744c65a3eddb15425e4a51": {
    												"playback_url": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/counter/playlist_ssaiM.m3u8",
    												"playback_url_dvr": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/counter/playlist_dvr_ssaiM.m3u8",
    												"playback_added_cdns": [],
    												"description": "House Counter - a95ac581551b4478b27910e5675db1f8",
    												"type": "counter"
    										}
    								}
    						}
    						],
    						"stream_url": "rtmp://ep1-apse2.bcovlive.io:1935/15981d93877e490185e6ebc9af2c79a3",
    						"stream_name": "alive",
    						"encryption": {},
    						"playback_url": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/playlist.m3u8",
    						"playback_url_dvr": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/playlist_dvr.m3u8",
    						"ssai_playback_urls": {
    								"685b239f582c42fca49da33be4f2328e": {
    								"playback_url": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/685b239f582c42fca49da33be4f2328e/playlist_ssaiM.m3u8",
    								"playback_url_dvr": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/685b239f582c42fca49da33be4f2328e/playlist_dvr_ssaiM.m3u8",
    								"playback_added_cdns": [],
    								"description": "House Ads - a95ac581551b4478b27910e5675db1f8",
    								"type": "ads"
    								},
    								"c96e2d00d6744c65a3eddb15425e4a51": {
    								"playback_url": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/counter/playlist_ssaiM.m3u8",
    								"playback_url_dvr": "https://bcovlive-a.akamaihd.net/15981d93877e490185e6ebc9af2c79a3/us-west-2/counter/playlist_dvr_ssaiM.m3u8",
    								"playback_added_cdns": [],
    								"description": "House Counter - a95ac581551b4478b27910e5675db1f8",
    								"type": "counter"
    						}
    				}
    		}
    		
    		
  4. 우리의 목적을 위해 응답의 중요한 필드는 다음과 같습니다.
    • stream_url (51 행)
    • stream_name (52 행)
    • playback_url (54 행)

    이 필드의 값은 다음 단계에서 사용자의 응답에서 필요합니다.

Video Cloud 비디오 설정

이제 라이브 스트림 정보가 있으므로 Brightcove Player에서 재생할 수 있도록 Video Cloud에 원격 비디오를 설정합니다.

이 단계에서는 다음을 사용하여 비디오를 설정합니다. CMS API하지만 원하는 경우 Video Cloud Studio에서도 수행할 수 있습니다. 아래 대체 단계 .

Insomnia 또는 Postman을 사용하는 경우 클라이언트 자격 증명을 사용하여 OAuth2 인증을 설정해야합니다. 도움이 필요하면 다음 가이드 중 하나를 참조하세요.

  1. 먼저 다음을POST요청하여 새 동영상을 만들어야 합니다.

    https://cms.api.brightcove.com/v1/accounts/account_id/videos
  2. 요청 본문에는 여러 메타데이터가 포함될 수 있습니다(참조: API 참조자세한 내용은 참조) 하지만 필요한 것은name :

    {
        "name": "some name for your live stream"
    }
  3. 응답에는 모든 비디오 메타데이터가 포함되지만 중요한 필드는 원격 자산을 추가하는 데 필요한 필드입니다. id

  4. HLS 스트림을 추가하려면 다음을 다시POST요청해야 합니다.

    https://cms.api.brightcove.com/v1/accounts/account_id/videos/video_id/assets/hls_manifest
  5. 이번에 요청 본문은 다음과 같습니다.

    {
        "remote_url": "playback_url for your live stream"
    }

플레이어에 비디오 추가

이제 간단한 HTML 페이지를 만들고 방금 만든 비디오로 플레이어를 추가합니다.

  1. 간단한 HTML 페이지를 만들어 라이브 스트림 플레이어를 테스트합니다. 원하는 다른 콘텐츠를 포함하거나 전혀 포함하지 않을 수 있습니다.
  2. 스튜디오 미디어 모듈에서 이전 단계에서 만든 비디오를 선택하고게시 및 임베드 > 웹 플레이어를 클릭합니다 .
    비디오 게시
    비디오 게시
  3. 게시 대화 상자에서 플레이어를 선택합니다 (Brightcove 기본 플레이어는 괜찮습니다).
    플레이어 선택
    플레이어 선택
  4. 아래로 스크롤하여 플레이어의 크기를 원하는대로 설정 한 다음 코드 블록을 클릭하여 표준 플레이어 코드를 선택합니다.이 코드를 복사하여 html 페이지 본문에 붙여 넣습니다.
    게시 코드 받기
    게시 코드 받기
  5. HTML 페이지를 찾아볼 수 있도록 원격 또는 로컬 웹 서버에 저장합니다.
  6. 웹 브라우저에서 페이지를 엽니 다. 스트리밍을 시작하지 않았으므로 미디어 오류가 표시됩니다.
    미디어 오류
    미디어 오류

cURL 명령

이 섹션에서는 Insomnia 또는 Postman과 같은 REST 클라이언트를 사용하지 않는 사용자를위한 대체 cURL 명령을 제공합니다.

라이브 작업 생성을위한 cURL

## Create Job - Simple
	curl -X "POST" "https://api.bcovlive.io/v1/jobs" \
	-H "X-API-KEY: YOUR_API_KEY_HERE" \
	-H "Content-Type: application/json" \
	-d $'{
	"outputs": [
	{
	"height": 720,
	"video_bitrate": 2100,
	"segment_seconds": 4,
	"keyframe_interval": 60,
	"width": 1280,
	"video_codec": "h264",
	"label": "hls720p",
	"h264_profile": "high",
	"live_stream": true
	},
	{
	"height": 540,
	"video_bitrate": 1500,
	"segment_seconds": 4,
	"keyframe_interval": 60,
	"width": 960,
	"video_codec": "h264",
	"label": "hls540p",
	"h264_profile": "main",
	"live_stream": true
	},
	{
	"height": 360,
	"video_bitrate": 800,
	"segment_seconds": 4,
	"keyframe_interval": 60,
	"width": 640,
	"video_codec": "h264",
	"label": "hls360p",
	"h264_profile": "main",
	"live_stream": true
	}
	],
	"region": "us-west-2",
	"reconnect_time": 1800,
	"live_stream": true
	}'

코드를 텍스트 편집기에 복사하고 자체 API YOUR_API_KEY_HERE 키로 교체합니다. 그런 다음 명령 줄에 코드를 복사하여 붙여넣고 실행합니다.

Studio를 사용하여 비디오 만들기

다음은 Studio에서 동영상을 만드는 대체 단계입니다.

  1. Video Cloud Studio에 로그인합니다.
  2. 미디어 모듈로 이동합니다.
  3. 왼쪽의 옵션에서 원격 비디오추가를 클릭합니다 .
    원격 비디오 메뉴 항목 추가
    원격 비디오 메뉴 항목 추가
  4. 원격 비디오추가대화 상자에서 비디오 이름을 추가하고 Live API 응답의playback_url값을 복사하여 URL 필드에 붙여넣습니다. 그런 다음 [렌디션추가] 를 클릭하고 [ 저장] 을 클릭합니다 .
    변환 추가 대화 상자
    변환 추가 대화 상자

Wirecast를 사용하여 이벤트 스트리밍

이 섹션에서는 라이브 스트리밍 이벤트를 지원하기 위해 Telestream Wirecast 인코더를 구성 및 사용합니다. Telestream Wirecast 소프트웨어는 카메라로부터 입력을 캡처하여 CDN에서 전달할 수 있는 스트림을 생성하는 데스크톱 애플리케이션입니다. 라이브 스트리밍 이벤트를 전달하는 데 더욱 적합할 수 있는 하드웨어 및 기타 소프트웨어 기반 인코딩 솔루션이 있을 수 있습니다. Telestream 웹 사이트에서 Wirecast 소프트웨어 평가판을 다운로드할 수있습니다.

참고: 계속하기 전에 컴퓨터에 Wirecast 소프트웨어가 설치되어 있고 카메라가 연결되어 있어야 합니다.

라이브 이벤트를 위해 Wirecast를 구성하려면 다음 단계를 따르십시오.

  1. Wirecast를 엽니다.
  2. +를 마우스로가리키고캡처 장치를클릭한 다음 카메라를 선택합니다.
    카메라 선택
    카메라 선택
  3. 화살표 버튼 ( ) 을 클릭하면 카메라가 라이브 샷으로 촬영됩니다.
    카메라 설정
    Wirecast 카메라 구성
  4. 스트림버튼 ( ) 을 클릭합니다. 출력 설정을 구성하라는 메시지가 표시됩니다.
  5. 설정목적지에게 RTMP 서버 . OK (확인) 를 클릭합니다 .
  6. 을 위해주소 , 사용 stream_url Live API에서 반환됩니다(3단계).
  7. 스트림의 경우 alive를 사용하세요.
    출력 설정
    Wirecast 출력 설정
  8. (선택사항) 추가 출력 스트림을 생성하려면 추가...를 클릭합니다 추가 출력 스트림을 생성할 때 사용자는 고유한 사용자 정의 인코딩 프로파일을 생성하여 출력 비트레이트를 제어하려 할 수 있습니다. 스트림 이름에 새 비트레이트가 반영되었는지 확인합니다.
  9. 확인을클릭하여 출력 설정을 저장합니다.
  10. 스트림버튼 ( ) 을 클릭합니다. 라이브 스트림이 시작되어야 합니다.

결론

이제 라이브 스트리밍 세션을 만들 준비가되었습니다. 인코더 구성에 다음을 추가해야합니다.

  • stream_url : stream_url직장에서 입력 ( rtmp주소)
  • stream_name : 스트림 이름은 다음과 같아야 합니다. alive

라이브 스트림을 시작하면 이전 단계에서 만든 Brightcove 플레이어에 표시되어야합니다.