Record Delivery | 0.16.5.0+

OvenMediaEngine Enterprise 0.16.5.0-1 버전부터 Record Delivery 기능을 지원합니다.

OvenMediaEngine을 사용하여 라이브 스트림을 녹화하고 녹화된 파일을 Object Storage로 전송하는 방법을 설명합니다.

이 가이드에서는 다음과 같은 내용을 실습합니다.

  • OvenMediaEngine 및 OvenMediaEngine Delivery를 설정하여 녹화 파일 전송을 활성화 합니다.

  • OvenMediaEngine의 자동 녹화 기능을 이용하거나, 녹화 RestAPI를 이용해 녹화 전송을 시작합니다.

  • 녹화 전송 상태를 모니터링 합니다.

1단계: OvenMediaEngine에서 녹화 기능 설정

OvenMediaEngine의 File Publisher 기능을 활성화하여 스트림 녹화 기능을 사용합니다.

설정 파일 경로:

  • /usr/share/ovenmediaengine/conf/Server.xml에서 File Publisher를 활성화할 수 있습니다.

자동 녹화 설정

스트림 송출이 시작되면 자동으로 녹화 및 전송을 시작할 수 있게 설정합니다.

Server.xml 예시:

<Applications>
  <Application>
    <Name>app</Name>
    ...
    <Publishers>
      <FILE>
        <RootPath>/mnt/shared_volumes/records</RootPath>
        <StreamMap>
          <Enable>true</Enable>
          <Path>./record_map.xml</Path>
        </StreamMap>
      </FILE>
    </Publishers>
    ...
</Applications>

OvenMediaEngine이 자동으로 녹화 및 전송 작업을 수행할 수 있게 하기 위해 FILE.StreamMap.Path에 녹화 파일의 경로, 형식, Object Storage 정보 등을 정의한 파일을 지정합니다.

Server.xml에 지정한대로 record_map.xml 파일을 생성:

  • /usr/share/ovenmediaengine/conf/record_map.xml

record_map.xml 예시:

<RecordInfo>
  <Record>
    <Enable>true</Enable>
    <StreamName>stream</StreamName>
    <VariantNames>video_1080, aac_audio</VariantNames>
    <FilePath>${VirtualHost}/${Application}/${Stream}-${StartTime:YYYYMMDDhhmmss}_${EndTime:YYYYMMDDhhmmss}.mp4</FilePath>
    <InfoPath>${VirtualHost}/${Application}/${Stream}-${StartTime:YYYYMMDDhhmmss}_${EndTime:YYYYMMDDhhmmss}.xml</InfoPath>
    <Metadata>aws_access_key_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',endpoint='https://object.storage.com',region='us-east-1',bucket_name='bucket_name',object_dir='my/vod/path/',delete='true'</Metadata>
  </Record>
</RecordInfo>

MetaDatakey='value',key='value',... 형식으로전송 정보를 설정합니다.

- 기본 형식

aws_access_key_id='****',aws_secret_access_key='****',endpoint='https://object.storage.com',region='us-east-1',bucket_name='record-bucket',object_dir='/my/vod/path/',delete='true'

- aws_access_key_id (required)

Object Storage에 접근 가능한 access key id를 지정합니다.

- aws_secret_access_key (required)

Object Storage에 접근 가능한 secret access key를 지정합니다.

- endpoint (optional)

Object Storage의 접속 endpoint를 지정합니다. 빈 값일 경우 AWS의 S3의 endpoint를 사용합니다.

- region (optional)

Object Storage의 지역을 지정합니다. 빈 값일 경우 AWS의 S3의 기본 지역을 사용합니다.

- bucket_name (required)

녹화 파일을 전송 할 버킷명을 입력합니다.

- object_dir (required)

Bucket 내 녹화 파일을 전송할 경로를 지정합니다.

-delete (optional)

전송을 완료 후 Server.xml 의 File Publisher의 RootPath에 생성되었던 녹화 파일 삭제 여부를 true 또는 false로 지정합니다.

녹화 형식에 대한 상세한 내용은https://airensoft.gitbook.io/ovenmediaengine/recording#automated-recording에서 확인할 수 있습니다.

Rest API를 이용한 녹화 설정

OvenMediaEngine의 녹화 REST API를 이용해 송출 중인 스트림을 녹화 및 전송할 수 있게 설정합니다.

녹화 형식 및 Object Storage 정보는 녹화 시작 REST API를 호출하면서 설정할 수 있습니다.

Server.xml 예시:

<Applications>
  <Application>
    <Name>app</Name>
    ...
    <Publishers>
      <FILE>
        <RootPath>/mnt/shared_volumes/records</RootPath>
        <FilePath>${VirtualHost}/${Application}/${Stream}-${StartTime:YYYYMMDDhhmmss}_${EndTime:YYYYMMDDhhmmss}.ts</FilePath>
        <InfoPath>${VirtualHost}/${Application}/${Stream}-${StartTime:YYYYMMDDhhmmss}_${EndTime:YYYYMMDDhhmmss}.xml</InfoPath>
      </FILE>
    </Publishers>
    ...
</Applications>

자동 녹화 및 Rest API를 이용한 녹화는 동시에 설정이 가능합니다.

관련 내용 및 자세한 녹화 기능 설정은 https://airensoft.gitbook.io/ovenmediaengine/recording에서 확인 가능합니다.

2단계: 전송 서비스 설정 및 서비스 활성화

전송 서비스 설정

전송 서비스 설정에서 OvenMediaEngine이 녹화한 파일 경로를 설정합니다.

전송 서비스 설정 파일 경로:

  • /usr/share/ovenmediaengine/delivery/conf/config.ini

설정 파일에서 RECORD_INFO_FILE_BASE_DIR 을 OvenMediaEngine의 File Publisher가 녹화 파일을 생성하는 경로로 설정합니다. (기본적으로 다른 설정은 변경할 필요가 없습니다.)

config.ini 예시:

[DELIVERY]
# database uri
DATABASE_URI = /usr/share/ovenmediaengine/delivery/delivery.db
# log file will saved
LOG_DIR = /var/log/ovenmediaengine/delivery/
# dump base directory
DUMP_INFO_FILE_BASE_DIR = 
# recording base directory
RECORD_INFO_FILE_BASE_DIR = /mnt/shared_volumes/records

전송 서비스 활성화

전송 서비스는 기본적으로 비활성화 되어있습니다. 전송 서비스를 활성화 합니다.

sudo systemctl start ovenmediaengine-delivery

3단계: 녹화 및 전송 시작

자동 녹화 기능을 이용할 경우

app/stream 스트림을 송출시작합니다. OvenMediaEngine이 자동으로 녹화를 시작하고 설정된 Object Storage로 녹화 파일을 전송합니다.

녹화 REST API를 이용할 경우

app/stream 스트림을 송출 합니다. app/stream에 대해 녹화 시작 REST API를 호출하면 OvenMediaEngine이 녹화를 시작하고 녹화가 완료되면 전송 서비스가 Object Storage에 녹화 파일을 전송합니다.

녹화 시작 API 호출 예시:

curl --location 'http://{OME_HOST}:{OME_REST_API_PORT}/v1/vhosts/default/apps/app:startRecord' \
--header 'Authorization: Basic b21lOmRlZmF1bHQ=' \
--header 'Content-Type: application/json' \
--data '{
    "id": "unique_id",
    "stream": {
        "name": "stream",
        "variantNames": ["video_1080", "aac_audio"]
    },
    "metadata": "aws_access_key_id='\''xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'\'',aws_secret_access_key='\''xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'\'',endpoint='\''https://object.storage.com'\'',region='\''us-east-1'\'',bucket_name='\''bucket_name'\'',object_dir='\''my/vod/path/'\'',delete='\''true'\''"
}'

전송 상태 확인

전송 서비스 로그를 확인하여 녹화 파일의 전송 상태를 모니터링합니다.

tail -f /var/log/ovenmediaengine/delivery/delivery-daemon.log

이상으로 OvenMediaEngine을 사용하여 라이브 스트림 녹화 및 녹화된 파일을 Object Storage로 전송하는 방법을 마칩니다.

Last updated