CLI Preprocessor Guide
PallyCon CLI Preprocessor is a command line interface (CLI) tool for watermark preprocessing on an encoded video file. It runs on a packaging server built by the content service, and processes the source mp4 video into two streaming contents with watermark (0/1 versions, also known as A/B variants).
sequenceDiagram participant A as Encoder participant B as Packaging server participant C as CDN A ->> B: Encoded MP4 Note right of B: CLI Preprocessor B -->> B: Watermark embedding opt Multi DRM Note right of B: CLI Packager B -->> B: Content encryption end B ->> C: Packaged streams Note right of C: DASH / HLS contents<br>(0 and 1 marked)
You may contact PallyCon team to get the PallyCon CLI Preprocessor after joining PallyCon watermarking service. It consists of the following two modules.
FMembedder: Creates two content files, each marked ‘0’ or ‘1’. For example, when the input content is ‘A.mp4’, it creates ‘A_0.mp4’ and ‘A_1.mp4’. Each of the two generated content can be packaged as DASH / HLS streaming content using PallyCon CLI Packager.
Sample Mixer: A test mixer that combines two mp4 files created by FMembedder into a single mp4 file. If you enter a payload string of up to 7 bytes, it will produce a combined result based on that payload. For actual service scenario, the watermark embedder module running on CDN is used to perform the combination of session information at playback time.
You need the following environment to run the CLI Preprocessor.
- CPU : Intel CPU
- RAM : 8GB or more
- GPU : NVIDIA graphics card that supports HW video encoding and decoding acceleration
AWS GPU instance performance
- Geforce GTX1050 (Desktop, Pascal) « P2 (Tesla K80) « P3 (Tesla V100), G3 (Tesla M60)
- When using an AWS EC2 instance as a watermark preprocessing server, we recommend an instance of type P3 or G3 for GPU acceleration.
- Ubuntu server 16.04, 18.04, or CentOS 7
- Intel IPP (Integrated Performance Primitives) 2018
- NVIDIA CUDA Toolkit 9.1 (NVIDIA hardware acceleration)
- Dependency libraries
Intel IPP 2018 installation
Follow these steps to install the Intel IPP 2018 library:
If you have existing Intel IPP library installed, it is recommended to re-install it.
- Install the GPG key for the repository
sudo apt update sudo apt install apt-transport-https wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
- Add the Intel® IPP repository
sudo sh -c 'echo deb https://apt.repos.intel.com/ipp all main > /etc/apt/sources.list.d/intel-ipp.list'
- Update the list of the packages
sudo apt update
- Install IPP library
sudo apt install intel-ipp-64bit-2018.3-051
- Uninstall IPP library (if needed)
sudo apt autoremove intel-ipp-64bit-2018.3-051
NVIDIA CUDA Toolkit 9.1 installation
Run the following script to install the NVIDIA CUDA toolkit.
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1604_9.1.85-1_amd64.deb sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub sudo apt-get update sudo apt-get install -y \ linux-headers-$(uname -r) \ cuda
Install Dependencies (Ubuntu)
$ sudo apt update $ sudo apt install -y \ libbz2-dev \ zlib1g-dev \ libva-dev \ libvdpau-dev \ libssl-dev
Install Dependencies (CentOS)
$ sudo yum update $ sudo yum install -y \ openssl-devel \
CLI Preprocessor guide
Execute the FMembedder executable file in the ‘bin’ folder in the downloaded archive with the following command.
- Required parameters
||Input media filename||
||Output media filename||
||The resulting output will be two files with ‘0’ and ‘1’ marked. (~/demo/output_0.mp4 and ~/demo/output_1.mp4)|
||Access Key for service authorization||
||- Trial customer: Enter
- commercial customer of watermarking service: Enter the access key value shown in the PallyCon Console site
access keyvalue is used in pairs with the
seed keyfile(fmdat.key) stored in the CLI Preprocessor’s ‘bin’ folder. For watermark trials using the CLI Preprocessor, you must use the access key for the trial (‘FOR_INKA_FORENSIC_WATERMARK_TEST’), not the access key issued at the PallyCon Console site. The seed key file for the trial is included in the deployed CLI Preprocessor. To use the CLI Preprocessor commercially, you need to replace the file with the commercial seed key that is delivered after a separate contract. And you need to enter the value of the access key issued at PallyCon Console site for the
- Descriptions of all parameters can be checked with ‘-h’ option.
Example of FMembedder usage
Example 1: to apply NVIDIA HW acceleration encoder(nvenc), use ‘-n’ option
FMembedder -i ~/demo/input.mp4 -o ~/demo/output.mp4 -n --access_key FOR_INKA_FORENSIC_WATERMARK_TEST
Example 2: to apply NVIDIA HW acceleration encoder(nvenc) and decoder(cuvid), use both ‘-n’ and ‘-c’ options
FMembedder -i ~/demo/input.mp4 -o ~/demo/output.mp4 -n -c --access_key FOR_INKA_FORENSIC_WATERMARK_TEST
DRM packaging (optional)
For content that applies both forensic watermarking and DRM, you can package the ‘0’ and ‘1’ version mp4 files generated by FMembedder using PallyCon Packager. Depending on the service’s target platform, the two versions of watermark content are packaged in DASH or HLS format, and delivered to the user in real time through the embedder module of the CDN.
For details on DRM packaging and watermark mixing, please refer to the following guide documents.