https://github.com/nuvious/qrwatermark
A simple set of scripts which embed a QR code in a video. The watermark is non-stationary to make it resistant to being cropped out and dynamic so that it changes throughout the video without changing the information payload.
https://github.com/nuvious/qrwatermark
Last synced: about 1 year ago
JSON representation
A simple set of scripts which embed a QR code in a video. The watermark is non-stationary to make it resistant to being cropped out and dynamic so that it changes throughout the video without changing the information payload.
- Host: GitHub
- URL: https://github.com/nuvious/qrwatermark
- Owner: nuvious
- Created: 2017-07-04T17:10:45.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-07-04T20:49:23.000Z (almost 9 years ago)
- Last Synced: 2025-04-17T21:44:18.273Z (about 1 year ago)
- Language: Shell
- Size: 4.88 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# QRWatermark
Dependencies:
ffmpeg - https://ffmpeg.org/
qrencode - https://linux.die.net/man/1/qrencode
Tested Environments:
Ubuntu Bash on Windows 10
Demo Videos:
QR Watermarked Video
https://youtu.be/aOVnH15Npao
Extracted QR Watermark Video
https://youtu.be/ETBfQPdyNZ0
Use Case:
This is designed for people wanting to protect video content exposed on a website or other online media provider where they want to be able to identify the person/entity that downloaded the content while making it obvious to the downloader that the content is tracked. To facilitate this an information payload is encoded in a QR code which moves around the video to make it resistant to cropping and filters normally used to remove stationary watermarks. To be as generic as possible the payload for the qr code is just a string.
Usage:
./qr_watermark_adv.sh [VIDEO_FILE] [STRING PAYLOAD]
This generates a video [VIDEO_FILE].qr.mp4 which contains the QR watermark. By default it is encoded by h264 with lossless quality settings.
To extract the watermark from a video:
./qr_watermark_diff.sh [QR_VIDEO_FILE] [SOURCE_VIDEO_SCALED_TO_QR_VIDEO]
This creates a video [QR_VIDEO_FILE].diff.mp4] that is a basic white-background video with the qr code exposed in black. The qr code is resilient to scaling down to about 50% in testing and glitches in the video may make the qr code not readble throughout the whole video but you only need one read to get the string payload.