빠른 시작: MPEG2-TS 입력을 위한 라이브 작업 만들기

이 튜토리얼은 MPEG2-TS 입력을 받아들이는 라이브 작업을 만드는 과정을 안내합니다. 작업은 Live API를 사용하여 생성됩니다.

개요

일반 블록 다이어그램블록 다이어그램

이 튜토리얼에서는 API 수준에서브라이트코브 라이브에서 MPEG2-TS 입력을받아들이는 라이브 스트리밍 작업을 만드는 방법을 설명합니다. MPEG2-TS 입력 사용의 핵심은 MPEG2-TS 지원 및 인코더가 제공할 수 있는protocol a를 선택하는 것입니다. Live API에서 지원하는 TS 지원 프로토콜은 다음과 같습니다.

  • rtp
  • rtp-fec
  • srt

기본 입력 프로토콜은 이므로 TS 입력을 사용하려면 이러한 프로토콜 중 하나를 명시적으로 지정해야rtmp합니다.

클리핑, SSAI 큐 포인트 또는 ID3 태그에 SMPTE 타임코드를 사용하려면 SEI Picture Timing 메시지의 H.264(AVC) 비디오에 삽입해야 합니다.

이러한 프로토콜은 인코더와 Live 간의 통신에 TCP가 아닌 UDP (사용자 데이터 그램 프로토콜)를 사용하므로 방화벽 / 라우터를 올바르게 구성하고 인코더의 IP에서 인터넷으로 UDP 출력을 허용해야합니다.

를 사용하는rtp-fec경우 FEC 정보는 미디어와 다른 포트로 전송되므로, 예를 들어 포트 2000을 사용하는 경우 포트 2002와 2004 (2D FEC를 사용하는 경우) 도 열어야 합니다.

이 튜토리얼은curl API 요청을 만들 수 있지만 다음에서 쉽게 만들 수 있습니다. Insomnia , Postman또는 다른 REST 클라이언트 대신.

라이브 작업 만들기

먼저, 우리는 라이브 직업을 만들 것입니다. 라이브 API에는API-KEY가 필요합니다. 그렇지 않고 액세스 권한을 얻는 데 관심이 있는 경우 고객 성공 관리자에게 문의하십시오.

  1. 다음curl명령을 복사하여 텍스트 편집기에 붙여넣습니다.

      curl -X POST \
        https://api.bcovlive.io/v1/jobs \
        -H 'Content-Type: application/json' \
        -H 'x-api-key: ' \
        -d '{
          "live_stream": true,
          "region": "",
          "protocol": "",
          "cidr_whitelist": ["", ""],
          "outputs": [{
              "label": "hls360p",
              "live_stream": true,
              "height": 360,
              "video_bitrate": 365,
              "segment_seconds": 6,
              "keyframe_interval": 60
         },
         {
              "label": "hls432p",
              "live_stream": true,
              "height": 432,
              "video_bitrate": 730,
              "segment_seconds": 6,
              "keyframe_interval": 60
         },
         {
              "label": "hls540p",
              "live_stream": true,
              "height": 540,
              "video_bitrate": 2000,
              "segment_seconds": 6,
              "keyframe_interval": 60
         },
         {
              "label": "hls720p3M",
              "live_stream": true,
              "height": 540,
              "video_bitrate": 2000,
              "segment_seconds": 6,
              "keyframe_interval": 60
         },
         {
              "label": "hls720p4.5M",
              "live_stream": true,
              "height": 720,
              "video_bitrate": 4500,
              "segment_seconds": 6,
              "keyframe_interval": 60
         }]
      }'
  2. 다음과 같이 교체하십시오.

    • 브라이트코브 라이브 API 키와 함께 예를 들면 다음과 같습니다. abcdfeg-this-is-a-fake-api-key-FgJajjasd12hJHsZ
    • 사용 가능한 영역이 엔코더에서 가장 가까운 경우 엔코더에서가장 가까운 사용 가능한 영역을확인할 수 있습니다. 예를 들면 다음과 같습니다. us-west-2
    • 인코더가 전달하는 입력 프로토콜을 사용하면: rptrtp-fec , 또는srt
    • 엔코더가 사용할 IP 범위를 다음과 같은 형태로1.2.3.4/32
    • (있는 경우) 백업 인코더가 사용할 IP 범위를 다음과 같은 형태로1.2.3.4/32
  3. 변경 한 후 코드를 터미널 또는 사용하는 명령 줄 앱에 복사하여 붙여 넣고 실행하십시오.
  4. rtp-fec프로토콜을 사용하는 경우 응답은 다음과 같아야 합니다.

      {
          "id": "42c913e5373844a99a6285367f2704ec",
          "outputs": [... removed for simplicity ...],
          "stream_url": "rtp://ec2-34-212-0-224.us-west-2.compute.amazonaws.com:12675",
          "stream_name": "42c913e5373844a99a6285367f2704ec.stream",
          "static": false,
          "encryption": {},
          "playback_url": "https://bcovlive-a.akamaihd.net/42c913e5373844a99a6285367f2704ec/us-west-2/NA/playlist.m3u8",
          "playback_url_dvr": "https://bcovlive-a.akamaihd.net/42c913e5373844a99a6285367f2704ec/us-west-2/NA/playlist_dvr.m3u8"
      }

    또는 다음과 같은 경우srt :

      {
          "id": "cdb820f2d7764b91a79536dac799fb77",
          "outputs": [... removed for simplicity ...],
          "stream_url": "srt://ec2-34-212-0-224.us-west-2.compute.amazonaws.com:13820",
          "stream_name": "cdb820f2d7764b91a79536dac799fb77.stream",
          "static": false,
          "encryption": {},
          "playback_url": "https://bcovlive-a.akamaihd.net/cdb820f2d7764b91a79536dac799fb77/us-west-2/NA/playlist.m3u8",
          "playback_url_dvr": "https://bcovlive-a.akamaihd.net/cdb820f2d7764b91a79536dac799fb77/us-west-2/NA/playlist_dvr.m3u8"
      }

이 작업은 5개의 변환을 생성합니다. 기반을 둔 ~에애플 추천 .

인코더 구성 (TS + FEC)

여기에 표시된 단계는 이 튜토리얼의 단계를 테스트하는 데 사용된 Elemental 라이브 박스인코더를 가정합니다. 인코더가 다른 경우 설정이 비슷해야합니다.

rtp-fec입력의 가장 중요한 설정은 다음과 같습니다.

  • 시간 코드 소스를 “시스템 클럭”으로 구성
  • "Forward error correction"을 "Column and Row"로 설정하고 "Column Depth"및 "Row length"값을 설정합니다.
    • 컬럼 깊이: 4 (“컬럼 깊이” TS 패킷마다 1개의 추가 FEC 패킷이 추가됩니다.)
    • 행 길이: 10 (“행 길이” TS 패킷마다 1개의 추가 FEC 패킷이 추가됨)
    • 추가 된 추가 데이터를 계산할 수 있습니다. TotalBitrate = MediaBitrate * (1 / (ColumnDepth + 1) + 1 / (RowLength + 1)
  • 비디오 내에서 “시간 코드 삽입”을 확인하십시오.
  • 권장: 프레임 속도 = 소스 따르기

다음은이 TS + FEC 샘플에 사용한 구성입니다.

elemental-live-job-config
Elemental 라이브 구성

인코더 (SRT) 구성

여기에 표시된 설정은 이 자습서의 단계를 테스트하는 데 사용된 Haivision KB인코더를 기반으로 합니다. 인코더가 다른 경우 설정이 비슷해야합니다.

다음은이 SRT 샘플에 사용한 구성입니다.

Haivision 라이브 작업 구성
Haivision 라이브 구성

재생 테스트

VideoJS HLS 데모 페이지를 사용하여 재생을테스트할 수 있습니다. 생성 작업 응답에playback_url반환된 값을 붙여넣기만 하면 됩니다.

videojs-hls- 재생
VideoJS HLS 재생 데모 페이지