CLI 전처리기 가이드

PallyCon CLI 전처리기는 인코딩된 MP4 동영상을 대상으로 워터마크 전처리를 수행하는 CLI(Command Line Interface) 기반 툴입니다. 서비스 사이트에서 자체적으로 구축한 패키징 서버에서 구동되며, 워터마크 전처리와 별도의 DRM 패키징 과정을 통해 mp4 원본 영상을 워터마크(0 또는 1)가 적용된 두 벌의 스트리밍 콘텐츠로 만들어냅니다. (A/B Variants)

sequenceDiagram
    participant A as 인코더
    participant B as 패키징 서버
    participant C as CDN
    A ->> B: 인코딩된 MP4
    Note right of B: CLI 전처리기
    B -->> B: 워터마크 전처리
    opt 멀티DRM 적용
    Note right of B: CLI 패키져
    B -->> B: 콘텐츠 암호화
    end
    B ->> C: 패키징 결과물
    Note right of C: DASH / HLS 콘텐츠<br>(각각 A/B 두 벌)

모듈 구성

PallyCon CLI 워터마크 전처리기는 워터마킹 서비스 가입 후 별도 요청을 통해 받을 수 있으며, 다음과 같이 구성되어 있습니다.

  • FwmPreprocessor 실행파일: 각각 ‘0’ 또는 ‘1’로 마크된 두 개의 콘텐츠 파일을 만듭니다. 예를 들어, 입력 콘텐츠가 ‘A.mp4’일 때 ‘A_0.mp4’와 ‘A_1.mp4’를 생성합니다. 생성된 두 벌의 콘텐츠는 각각 PallyCon 패키져를 이용해 DASH/HLS 스트리밍 콘텐츠로 패키징할 수 있습니다.

  • fmkeyDemo.dat: 워터마크 전처리에 사용되는 데모버전 키 파일로, 트라이얼 계정에서의 테스트에 사용됩니다. 데모키로 전처리된 영상에는 보이지 않는 포렌식 워터마크 외에도 ‘PALLYCON DEMO’라는 문구가 눈에 보이게 표시됩니다.

  • 각종 라이브러리 파일: ‘lib’ 폴더 내에는 CLI 전처리기에서 사용되는 각종 라이브러리가 있습니다.

실행 환경

CLI 전처리기를 실행하려면 다음과 같은 환경이 필요합니다.

하드웨어

AWS GPU 인스턴스 성능

  • Geforce GTX1050 (데스크탑, 파스칼) « P2 (테슬라 K80) « P3 (테슬라 V100), G3 (테슬라 M60)
  • AWS EC2 인스턴스를 워터마크 전처리용 서버로 사용시, GPU 가속 기능을 위해 P3 또는 G3 유형의 인스턴스를 권장합니다.

소프트웨어

  • 우분투 서버 18.04, 20.04 또는 CentOS 7
  • Intel IPP (Integrated Performance Primitives) 2018 (배포본 내에 포함되어 있음)
  • NVIDIA CUDA Toolkit 9.1 이상 (NVIDIA 하드웨어 가속 사용)
  • 각종 연관 라이브러리

설치 가이드

NVIDIA CUDA 툴킷 설치

CLI 전처리기 제품은 NVIDIA 하드웨어 인코딩/디코딩 가속을 지원합니다. 지원되는 GPU 및 코덱은 여기에서 확인할 수 있습니다.

CLI 전처리기 제품은 CUDA Toolkit 9.1 이상에서 동작하지만, 다른 프로그램과의 호환성 문제가 없는 경우 CUDA 10.0 이상의 버전을 권장합니다. 아래 스크립트는 CUDA Toolkit 10.0을 설치합니다. 다른 CUDA Toolkit 버전을 설치해야 하는 경우 최신 다운로드 또는 아카이브를 참고하시기 바랍니다.

다음과 같은 스크립트를 실행하여 NVIDIA CUDA 툴킷을 설치합니다.

  • Ubuntu 18.04 버전 설치 스크립트

    $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID|tr -d '.')
    $ wget https://developer.download.nvidia.com/compute/cuda/repos/${distribution}/x86_64/cuda-repo-${distribution}_10.0.130-1_amd64.deb
    $ sudo dpkg -i cuda-repo-${distribution}_10.0.130-1_amd64.deb
    $ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/${distribution}/x86_64/7fa2af80.pub
    $ sudo apt-get update
    $ sudo apt-get install -y linux-headers-$(uname -r)
    $ sudo apt-get install -y cuda-10-0
    $ rm cuda-repo-${distribution}_10.0.130-1_amd64.deb
    $ sudo reboot
    
  • CentOS 7 버전 설치 스크립트

    $ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    $ wget https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
    $ sudo rpm -i cuda-repo-rhel7-10.0.130-1.x86_64.rpm
    $ sudo yum clean all
    $ sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
    $ sudo yum install cuda-10-0
    $ rm cuda-repo-rhel7-10.0.130-1.x86_64.rpm
    $ sudo reboot
    
  • AWS Linux2 버전 설치 스크립트

  • 설치 후 확인

    $ nvidia-smi
    
  • 참고 자료

의존성 라이브러리 설치

  • Ubuntu 18.04 버전

    $ sudo apt update
    $ sudo apt install -y \
            libva-drm2 \
            libvdpau1 \
            libmediainfo0v5 \
            libpng16-16
    
  • Ubuntu 20.04 버전

    $ sudo apt update
    $ sudo apt install -y \
            libnuma1 \
            libva-drm2 \
            libvdpau1 \
            libmediainfo0v5 \
            libpng16-16
    
  • CentOS 7 버전

    $ sudo yum update
    $ sudo yum install -y \
            openssl-devel \
            libpng-devel \
            libmediainfo-devel
    

CLI 전처리기 사용 방법

압축 파일의 bin 폴더 내 FwmPreprocessor 실행파일을 아래 명령으로 실행합니다.

필수 파라미터

파라미터 설명 예시 비고
-i 입력 미디어 파일 명 -i ~/demo/input.mp4
-o 출력 미디어파일 명 -o ~/demo/output.mp4 출력되는 결과물은 ~/demo/output_0.mp4 와 ~/demo/output_1.mp4 두 파일이 생성됩니다.
--fmkey_file 워터마킹 시드 키 파일 명 --fmkey_file fmkey.dat - 트라이얼 고객: 배포본에 포함된 fmkeyDemo.dat 파일 입력
- 워터마킹 상용 고객: 별도로 전달받은 시드 키 파일의 파일명 입력
--access_key 서비스 인증 액세스 키 --access_key QSTO2zE7 - 트라이얼 고객: FOR_INKA_FORENSIC_WATERMARK_TEST 입력
- 워터마킹 상용 고객: PallyCon 콘솔 사이트의 연동 설정에 표시된 액세스 키 값 입력
액세스 키 값은 CLI 전처리기의 ‘bin’ 폴더에 저장되어 있는 시드 키 파일(fmdat.key)과 쌍을 이루어 사용됩니다. CLI 전처리기를 이용한 워터마크 트라이얼의 경우 콘솔 사이트에서 발급되는 액세스 키가 아닌 트라이얼용 액세스 키(‘FOR_INKA_FORENSIC_WATERMARK_TEST’)를 사용해야 하며, 트라이얼용 시드 키 파일은 배포되는 CLI 전처리기에 포함되어 있습니다. 상용으로 CLI 전처리기를 사용하려면 별도 계약 후 전달되는 상용 시드 키로 해당 파일을 교체하고 --access_key 파라미터에 콘솔 사이트에서 발급된 액세스 키 값을 입력해야 합니다.
  • 전체 파라미터에 대한 설명은 ‘-h’ 옵션으로 확인할 수 있습니다. FwmPreprocessor -h

FwmPreprocessor 실행 예제

  • 예제 1: NVIDIA 하드웨어 가속 인코더(nvenc) 적용 시, ‘-n’ 옵션 사용

    FwmPreprocessor -i ~/demo/input.mp4 -o ~/demo/output.mp4 -n  --fmkey_file fmkeyDemo.dat --access_key FOR_INKA_FORENSIC_WATERMARK_TEST
    
  • 예제 2: NVIDIA 하드웨어 가속 인코더(nvenc) 및 디코더(cuvid) 적용 시, ‘-n’ 과 ‘-c’ 옵션 사용

    FwmPreprocessor -i ~/demo/input.mp4 -o ~/demo/output.mp4 -n -c --fmkey_file fmkeyDemo.dat --access_key FOR_INKA_FORENSIC_WATERMARK_TEST
    
공용 라이브러리 경로와 관련된 에러 발생 시, PATH 환경 변수에 LD_LIBRARY_PATH 를 설정해야 합니다. 상세 내용은 압축파일에 포함된 FwmPreprocessor.sh 파일을 참고하시기 바랍니다.

DRM 패키징 (옵션)

포렌식 워터마킹과 DRM을 동시에 적용하는 콘텐츠의 경우, 전처리기로 생성된 ‘0’과 ‘1’ 버전 mp4 파일을 각각 PallyCon 패키져를 이용해 DRM 패키징 합니다. 서비스 대상 플랫폼에 따라 DASH 또는 HLS 형태로 패키징된 두 벌의 콘텐츠는 CDN의 워터마크 삽입 모듈을 통해 실시간으로 조합되어 사용자에게 전달됩니다.

DRM 패키징과 워터마크 믹싱에 대한 상세 사항은 다음의 가이드 문서들을 참고하시기 바랍니다.

다음