PallyCon Distributor Watermarking 가이드

개요

PallyCon Distributor Watermarking 제품(이하 DWM)은 여러 채널로 배포된 비디오 콘텐츠가 불법 유출된 경우에 해당 유출 채널을 추적하기 위한 워터마크 솔루션입니다.

PallyCon DWM은 원본 영상에 배포할 채널의 정보를 눈에 보이지 않는 워터마크의 형태로 삽입하고, 유출된 영상으로부터 해당 워터마크 정보를 검출할 수 있습니다. 또한 보이지 않는 워터마크 정보 외에 눈에 보이는 워터마크도 영상에 추가할 수 있습니다.

DWM 워크플로우

PallyCon DWM은 아래와 같은 워크플로우를 통해 적용할 수 있습니다.

PallyCon DWM Workflow
PallyCon DWM Workflow
  1. 원본 영상을 배포될 채널의 정보와 함께 DWM Embedder에 입력합니다.
  2. PallyCon DWM 서버는 DWM Embedder와의 연동을 통해 각 채널마다 고유의 DWM ID를 발급합니다.
  3. DWM Embedder는 배포될 채널의 갯수만큼 각각 고유의 DWM ID가 삽입된 영상을 생성합니다.
  4. 배포 채널마다 해당 DWM 영상을 전달합니다.
  5. 콘텐츠 유출 발생 시, 유출본을 PallyCon 서비스에 전달해 워터마크 검출을 요청합니다.
  6. PallyCon 서비스는 유출본에서 워터마크(DWM ID)를 검출해 해당 채널 정보를 고객사에 전달합니다.

DWM 지원 사양

PallyCon DWM 솔루션은 아래와 같은 사양을 지원합니다.

항목 내용 비고
콘텐츠 유형 비디오 콘텐츠 지원
영상 포맷 및 코덱 MP4 VOD 영상, H.264/H.265/VP9/XDCAM 코덱 지원 Apple ProRes MOV 지원 추가 예정
지원 해상도 최대 4K/UHD 해상도 지원
Dynamic Range SDR (Standard Dynamic Range), HDR (High Dynamic Range) 지원
DWM ID 크기 12비트, 각 영상마다 최대 4095개 DWM ID 지원
최소 영상 길이 워터마크 검출을 위해서는 최소 5분 이상의 연속된 녹화 영상이 필요
검출 영상 화질 검출을 위해서는 최소 480p 1Mbps 이상 화질 필요. 720p 이상의 화질 권장

DWM 삽입 (DWM Embedder)

PallyCon DWM Embedder는 리눅스 CLI(Command Line Interface) 기반의 DWM 삽입 툴로, 원본 영상과 DWM ID 정보를 입력받아 해당 ID가 삽입된 DWM 영상을 출력합니다.

DWM Embedder 실행 파일을 단독으로 사용 시에는 PallyCon 서버와의 연동 없이 DWM ID와 배포 채널 정보에 대한 관리를 고객사에서 직접 처리해야 합니다. 서버 연동을 위해서는 해당 실행 파일과 함께 배포되는 Python 스크립트를 통해 DWM 삽입을 수행합니다.

모듈 구성

PallyCon DWM Embedder는 PallyCon 서비스 가입 후 별도 요청을 통해 받을 수 있으며, 다음과 같이 구성되어 있습니다.

  • DwmEmbedder 실행 파일: 아래 Python 스크립트가 실행하는 코어 모듈로, 원본 영상에 배포 대상 채널 별로 고유의 워터마크(DWM ID)를 삽입합니다.

  • DwmEmbedderWithServer.py: DwmEmbedder와 PallyCon 서버 사이의 통신 연동을 담당하는 Python 스크립트입니다. DWM 삽입 작업은 위 코어 모듈을 직접 실행하는 대신 이 스크립트를 통해 수행해야 합니다.

  • dwm_info.json: DWM ID를 삽입할 원본 영상과 출력 파일, 각 채널 별 정보 등의 작업 정보를 입력하는 파일입니다.

  • fmkeyDemo.dat: DWM Embedder에 사용되는 데모버전 키 파일로, 트라이얼 계정에서의 테스트에 사용됩니다. 데모키로 처리된 영상에는 보이지 않는 DWM ID 외에도 ‘PALLYCON DEMO’라는 문구가 눈에 보이게 표시됩니다. 상용 가입 후에는 PallyCon 콘솔에서 다운로드 가능한 상용 키(fmkey.dat) 파일을 사용합니다.

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

실행 환경

DWM Embedder를 실행하려면 다음과 같은 환경이 필요합니다.

하드웨어

소프트웨어

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

설치 가이드

NVIDIA CUDA 툴킷 설치

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

DWM Embedder 제품은 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
    

DWM Embedder 사용 방법

위 설치 과정을 통해 준비된 실행 환경에서 DWM Embedder 배포본의 압축을 해제한 후, bin 폴더에 관련 파일들(코어 모듈, Python 스크립트, dwm_info.json, 키 파일 등)이 있는지 확인 합니다. 그 후 다음과 같은 과정으로 DWM Embedder를 실행해 원본 영상에 DWM ID를 삽입할 수 있습니다.

credentials 파일 생성

DWM 서버와 통신하려면 PallyCon 회원 가입 시 발급되는 Site ID, Site Key, Access Key 정보가 필요합니다. 이 값들을 다음의 형식으로 ~/.pallycon/credentials 파일로 저장합니다.

site_id=YOUR_SITE_ID
access_key=YOUR_ACCESS_KEY
site_key=YOUR_SITE_KEY

credentials 파일에 입력할 실제 값들은 PallyCon 콘솔 로그인 후 Distributor Watermarking > DWM 세팅 화면에서 확인할 수 있습니다.

작업 파일 생성

아래 예시와 설명을 참고로 DWM 작업 정보 파일인 dwm_info.json 파일을 업데이트합니다.

{
    "content_id":"contentid_test",
    "input": "~/input.mp4",
    "output": "~/output.mp4",
    "visible_watermark": {
      "type": "text",
      "text": {
        "message": "for test",
        "fontsize": 20
      },
      "image": {
        "filename": "~/watermark.png"
      },
      "alpha": 0.3,
      "position": [
        { "x": 200, "y": 100},
        { "x": 300, "y": 200}
      ],
      "timing": {
        "interval": "00:05:00",
        "disappear": "00:01:00"
      }
    },
    "distribution": [
        {
            "distributor_name": "distributor 1",
            "distribution_purpose": "test"
        },
        {
            "distributor_name": "distributor 2",
            "distribution_purpose": "for editing"
        },
        {
            "distributor_name": "distributor 3",
            "distribution_purpose": "for auditing"
        }
    ]
}
  • content_id: 원본 콘텐츠에 대한 고유 ID (임의로 입력)
  • input: DWM을 삽입할 원본 파일명과 경로를 입력합니다.
  • output: DWM이 삽입된 결과 파일이 저장될 경로와 기본 파일명을 입력합니다.
    • 실제 생성되는 결과 파일명에는 기본 파일명 뒤에 배포 정보(distributor name, distribution purpose, DWM ID)가 추가됩니다.
  • visible_watermark: 결과 영상에 눈에 보이는 워터마크를 추가합니다. (선택 사항)
    • 보이지 않는 DWM ID 정보 외에 이미지 또는 텍스트 형태의 워터마크를 영상에 표시할 수 있습니다.
    • Visible Watermark 기능을 적용하지 않는 경우에는 해당 키워드와 하위 항목들을 입력하지 않습니다.
    • 입력 가능한 상세 옵션은 아래 별도로 설명된 내용을 참고하시기 바랍니다.
  • distribution: distributor_namedistribution_purpose 목록
    • distributor_namedistribution_purpose: 영상을 배포할 채널의 이름과 배포 목적을 입력합니다.
    • 이 값들은 DWM 서버에 전송되어 DB에 저장되지만, 결과 영상 자체에는 삽입되지 않고 파일명에만 추가됩니다.

위 작업 정보는 Python 스크립트를 통해 DWM 서버 API에 전송되며, 서버로부터 회신된 DWM ID는 DWM Embedder 코어 모듈을 통해 보이지 않는 워터마크의 형태로 결과 영상에 삽입됩니다.

DWM Embedder Python 스크립트 실행

DWM 트라이얼 중에는 상용 버전 키 파일 대신 배포본에 포함된 데모용 키 파일(fmkeyDemo.dat)이 사용됩니다. 이 경우 다음과 같이 dwm_info.json 파일명과 함께 --demo 파라미터를 추가해 실행합니다.

$ python3 DwmEmbedderWithServer.py dwm_info.json --demo

DWM 상용 플랜에 가입한 후에는 PallyCon Console에서 상용 키 파일(fmkey.dat)을 내려 받아 bin 디렉토리, 즉 DwmEmbedderWithServer.py와 동일한 위치로 복사합니다. 상용 버전은 다음과 같이 --demo 파라미터를 제외하고 실행합니다.

$ python3 DwmEmbedderWithServer.py dwm_info.json

Visible Watermark 설정 (선택 사항)

DWM Embedder는 기본적으로 배포 채널 별로 고유한 DWM ID를 눈에 보이지 않게 영상에 삽입합니다. 영상에 추가로 눈에 보이는 워터마크를 입력하기 원하는 경우, dwm_info.json 파일의 visible_watermark 항목에 다음과 같은 옵션을 설정할 수 있습니다.

키워드 타입 필수 여부 설명 예시
type String Y Visible Watermark의 유형 (텍스트 또는 이미지) “type”: “image”
text Json Y (텍스트 유형의 경우) 텍스트 워터마크 관련 설정 값들. 이미지 타입 워터마크에는 사용되지 않음.
message String Y (텍스트 유형의 경우) 워터마크로 표시될 문자열. 영숫자, 공백, 마침표(.) 및 밑줄(_) 입력 가능. “message”: “for_test”
fontsize Int N 워터마크 문자열 크기. 미입력 시 기본값 사용. “font_size”: 20
image Json Y (이미지 유형의 경우) 이미지 워터마크 관련 설정. 텍스트 타입 워터마크에는 사용되지 않음.
filename String Y (이미지 유형의 경우) 워터마크로 표시될 이미지 경로. “filename”: “~/watermark.png”
alpha Float N 워터마크의 투명도 (기본값 1) “alpha”: 0.5
position Json 배열 N 워터마크 표시 위치 설정. 배열로 여러 값을 입력 시, Interval에 의해 화면에 표시될 때마다 새로운 위치로 설정됨.
x, y Int N 화면 상에서 워터마크가 표시될 위치를 X/Y 좌표로 지정 “x”: 200, “y”: 100
timing Json N Visible Watermark를 주기적으로 화면에 표시하거나 숨기는 Interval 기능과 관련된 옵션
interval String N ‘HH:MM:SS’의 포맷으로 워터마크가 새로 표시될 주기를 설정 “interval”: “00:05:00” 입력 시, 5분마다 워터마크가 새로 표시되고 disappear 값 이후 사라짐 (반복)
disappear String N ‘HH:MM:SS’의 포맷으로 얼마나 오래 워터마크를 표시할지 설정 “disappear”: “00:01:00” 입력 시, Interval 주기에 의해 워터마크가 표시된 후 1분 뒤에 사라짐

DWM 작업 이력 조회

Python 스크립트를 통한 연동으로 서버에 전송된 DWM 삽입 정보는 PallyCon 콘솔에서 조회 및 수정이 가능합니다.

Distributor Watermarking > 패키징 이력 조회 화면에서 dwm_info.json 작업 파일에 입력한 유통 채널 정보를 조회하거나 필요 시 수정할 수 있습니다.

DWM 검출

DWM이 적용된 영상이 유출되어 불법 배포되는 경우, 유출이 의심되는 영상을 PallyCon 헬프데스크로 보내 검출을 의뢰할 수 있습니다. (대용량 파일 전송 서비스나 클라우드 스토리지 링크로 티켓에 첨부. 구글 드라이브 링크 추천)

워터마크 검출은 영상의 각 프레임을 분석하여 원본 워터마크 패턴을 감지하고, 삽입 시 사용한 비밀 키로 데이터를 해독합니다. 검출 과정을 통해 영상에서 DWM ID를 찾아내면, 데이터베이스에서 해당 ID를 키 값으로 하는 배포 채널 정보를 찾아 검출 결과로 리포트합니다.

워터마크 검출을 위해서는 최소 5분 이상의 연속된 녹화 영상이 필요합니다. PallyCon DWM 제품은 리사이징을 비롯한 각종 공격에 대한 강인성을 가지고 있지만, 실제 워터마크의 검출율은 검출에 사용되는 영상의 화질(해상도, 비트레이트, 흔들림 등)에 따라 달라질 수 있습니다. 검출에 필요한 최소 사양은 480p 1Mbps 이상이며, 일반적으로 720p 이상의 영상에 대해서는 대부분 검출이 가능합니다.

DWM 검출 워크플로우

sequenceDiagram
    participant A as 서비스 사이트
    participant B as PallyCon 서비스
    A ->> B: 유출 의심 영상
    Note right of B: DWM ID 검출
    B -->> B: 영상 프레임 분석
    opt DWM ID 검출 시
    Note right of B: DWM 데이터베이스
    B -->> B: 해당 ID 정보 검색
    end
    B ->> A: 검출 결과 리포트

DWM 검출 관련 상세 안내는 별도로 문의해 주시기 바랍니다.

문의하기

이전
다음