This repository serves as a proof of concept for real-time watermarking technology. It includes a simple pseudo-DASH server that resolves a local DASH manifest. A proxy server intercepts video segments and overlays text using ffmpeg to demonstrate the watermarking function.
- go1.22.1: Required for the watermarking proxy server written in Go. It may work with other versions of Go.
- ruby 3.3.2: Needed to run the pseudo-DASH server. In reality, any Ruby version should suffice as it runs a basic WEBrick server.
- foreman: Used to execute the Procfile, which in turn starts the demonstration.
- abema/go-mp4: Go library for parsing MP4 files.
- u2takey/ffmpeg-go: Go bindings for ffmpeg.
- ffmpeg (version 6.1.1): Installed separately, used by the watermarking proxy server to overlay text on video segments.
To run the demonstration:
-
Setup:
- Clone the repository.
- Install necessary dependencies.
-
Download DASH Segments:
- Download the DASH segments from this Dropbox link.
-
Extract and Place Files:
- Unzip the downloaded file.
- Place the extracted files into the project directory under
testdata/example_1/
. For example, the files should be structured as follows:<repo_dir>/testdata/example_1/chunk-0-00001.m4s <repo_dir>/testdata/example_1/chunk-0-00002.m4s ...
-
Start Servers:
- Run the pseudo-DASH server:
ruby bin/simple_http_server.rb
- Start the watermarking proxy server:
go run cmd/cli/main.go
- Run the pseudo-DASH server:
-
OR Run the Demonstration:
- Execute Foreman to start both servers simultaneously:
foreman start
- Execute Foreman to start both servers simultaneously:
-
Access the Demo:
- Open a browser or media player that supports DASH streaming and navigate to the demo URL (http://localhost:8000/manifest.mpd)
Contributions are welcome! If you have suggestions or improvements, feel free to fork the repository and submit a pull request.
This project is licensed under the MIT License.