LTX-2 Marking Pack (VideoSeal / AudioSeal)

Weights and configs for the opt-in, post-hoc invisible marking used by LTX-2: PixelSeal (VideoSeal family) for video frames and AudioSeal for stereo PCM.

This repository contains weights only. The code that loads, embeds, and detects lives in the public LTX-2 repository under packages/ltx-pipelines/src/ltx_pipelines/marking. Full documentation is in packages/ltx-pipelines/docs/marking.md.

The marks are not cryptographic signatures. They are a robust, invisible signal that a clip was produced by an LTX-2 pipeline with marking enabled. Absence of a detected mark does not prove a clip was not generated.

Files

The LTX-2 loader (create_markers) requires all five model files to be present in one directory.

File Description SHA-256
pixelseal.pth PixelSeal embedder + extractor weights (model state only) 97cff15f75515259b49a2cffc8fcd600c287cafe3f29c1d5c6ef9c81b492c088
pixelseal.yaml PixelSeal model card (architecture, 256-bit payload, 256 px processing size) 96c4a448f7d81810780e5bde5a51b039db544b7ec2baf65a605302c1b17362c9
videoseal_attenuation.yaml JND attenuation channel map referenced by the card e0d71354f8945cf600bd4ebd5e2641a9c879e017548dd6cc8a6de10239d7e821
audioseal_generator.pth AudioSeal 16-bit generator (embed) 7a845b5fbe9364a63a3909d8ab3fe064d13a76ae4c2e983573e08c69b7b51748
audioseal_detector.pth AudioSeal 16-bit detector 8a78e8a83584113523e161fc599fcab10fd0e94c04d2eb9d2fa1e9ec91ab69d9
LICENSE-videoseal, LICENSE-audioseal Upstream MIT licenses

.pth files are PyTorch pickles. Verify the checksums after download and load them only from this repository:

sha256sum pixelseal.pth pixelseal.yaml videoseal_attenuation.yaml audioseal_generator.pth audioseal_detector.pth

Usage

Install

Clone LTX-2 and install the marking extras:

uv sync --extra videoseal --extra audioseal
# or
pip install 'ltx-pipelines[videoseal,audioseal]'

Download the pack

The LTX-2 library never downloads weights itself. Fetch this repository to a local directory:

hf download Lightricks/LTX-2-Marking --local-dir path/to/marking

Mark during generation

Video-generation and editing CLIs, HDR IC-LoRA, and text-to-audio accept --marker-root-path. Omit the flag to leave pixels and PCM unchanged.

python -m ltx_pipelines.distilled \
    ... \
    --marker-root-path path/to/marking \
    --output-path out.mp4

Pipeline-specific behavior:

  • HDR: video marking is skipped; audio is still marked.
  • Audio-to-video: only the video is marked, because the source audio is passed through.
  • Text-to-audio: only the audio marker is used.

Detect

import torch
from ltx_pipelines.marking import create_markers, detect_audio_mark, detect_video_mark

video_marker, audio_marker = create_markers("path/to/marking", torch.device("cuda"))
print(detect_video_mark(video_marker, "out.mp4"))
print(detect_audio_mark(audio_marker, "out.mp4"))

Each call returns MarkDetectResult(detected, bit_accuracy, p_value, payload). bit_accuracy and p_value come from a binomial test of the decoded bits against the payload, which is fixed in the LTX-2 code (not in these weights). detected is each marker's own decision:

  • Video: every 8th decoded frame is resized to 256Γ—256 and run through the extractor; bit logits are averaged over the sampled frames. detected is log10(p_value) < -6.
  • Audio: the full track is scanned, with each stereo channel processed as its own mono signal. detected means at least half of the samples have a watermark probability above 0.5.

Detection runs on CPU or GPU. A GPU is much faster: on one B200, video detect takes about 15–30 ms per 5–10 s clip at up to 4K, versus 0.6–3 s on CPU. Both figures exclude file decoding.

Scope and limitations

  • Video marking targets SDR H.264 output; HDR output is not video-marked.
  • AudioSeal runs at the native 24/48 kHz rate and does not resample.
  • These are Meta's general-purpose models. Anyone holding the weights and the LTX-2 code can run detection, and a determined adversary may be able to weaken or remove the mark.

Provenance

  • pixelseal.pth is Meta's public PixelSeal checkpoint (facebookresearch/videoseal), repacked to the model state dict only. The optimizer, discriminator, EMA, and scheduler state were dropped; the model tensors are unchanged.
  • pixelseal.yaml is the PixelSeal card from videoseal commit 870ca7f. videoseal_attenuation.yaml is the jnd_1_1 entry of that repo's configs/attenuation.yaml, which the pip package does not ship.
  • audioseal_generator.pth and audioseal_detector.pth are the unmodified 16-bit base models from facebook/audioseal.

License

All weights and configs are released by Meta Platforms, Inc. under the MIT License; see LICENSE-videoseal and LICENSE-audioseal. The LTX-2 code is licensed separately; see the LTX-2 repository.

Citation

@article{fernandez2024video,
  title   = {Video Seal: Open and Efficient Video Watermarking},
  author  = {Fernandez, Pierre and Elsahar, Hady and Yalniz, I. Zeki and Mourachko, Alexandre},
  journal = {arXiv preprint arXiv:2412.09492},
  year    = {2024}
}

@inproceedings{sanroman2024proactive,
  title     = {Proactive Detection of Voice Cloning with Localized Watermarking},
  author    = {San Roman, Robin and Fernandez, Pierre and Elsahar, Hady and D{\'e}fossez, Alexandre and Furon, Teddy and Tran, Tuan},
  booktitle = {International Conference on Machine Learning (ICML)},
  year      = {2024}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Paper for Lightricks/LTX-2-Marking