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
예시:
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
예시:
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>
MetaData
에 key='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로 지정합니다.
Rest API를 이용한 녹화 설정
OvenMediaEngine의 녹화 REST API를 이용해 송출 중인 스트림을 녹화 및 전송할 수 있게 설정합니다.
녹화 형식 및 Object Storage 정보는 녹화 시작 REST API를 호출하면서 설정할 수 있습니다.
Server.xml
예시:
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>
2단계: 전송 서비스 설정 및 서비스 활성화
전송 서비스 설정
전송 서비스 설정에서 OvenMediaEngine이 녹화한 파일 경로를 설정합니다.
전송 서비스 설정 파일 경로:
/usr/share/ovenmediaengine/delivery/conf/config.ini
설정 파일에서 RECORD_INFO_FILE_BASE_DIR
을 OvenMediaEngine의 File Publisher가 녹화 파일을 생성하는 경로로 설정합니다. (기본적으로 다른 설정은 변경할 필요가 없습니다.)
config.ini
예시:
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로 전송하는 방법을 마칩니다.