FFmpeg Fingerprint Without Reencode
Budget: $10 – $30 USD
i need solution to get fingerprinting working next players iboPlayer, GSE, and TiviMate
something that will fingerprint on listed players with same logic without encoding burnin mode.
current setup already works like this:
- ts_fingerprint runs in the pipe, standby mode (no fingerprint visible)
- Python sends "SHOW username123" via ZMQ
- Fingerprint appears (DVB subtitle injected)
- Python sends "HIDE" via ZMQ
- Fingerprint disappears, stream clean again
architecture is already set up correctly for per-user fingerprinting:
- Shared source feeds into per-user ts_fingerprint process
- Each user gets their own unique text
The problem is that iboPlayer doesn't render ANY subtitle format from MPEG-TS:
- DVB subtitle: not rendered
- CEA-608/708 CC: not rendered
- HLS WebVTT: you tested and also not rendered
FILTER INJECTION / SIDE DATA: That's exactly what we already built. ts_fingerprint injects DVB subtitles (side data) and CEA-608/708 (metadata in SEI NALs) into the live stream without re-encoding. The BSF plugin (fingerprint_bsf.c) does the same via FFmpeg's bitstream filter API. Both work perfectly - the data IS in the stream. The problem is iboPlayer refuses to render any of it.
We've exhausted option A - iboPlayer doesn't support DVB subtitles, CEA-608, CEA-708, or HLS WebVTT FORCED subtitles. No matter what format we inject as metadata, iboPlayer ignores it.
- "persistent FFmpeg-based live injector" = ts_fingerprint (runs continuously in the pipe)
- "stays running in standby" = passes video/audio through untouched until triggered
- "applies fingerprint metadata on demand" = ZMQ SHOW command triggers injection
- "DVB/CC/SEI" = ts_fingerprint injects DVB subtitles + CEA-608/708, BSF plugin injects SEI NALs
- "via Python control" = db_trigger.py sends ZMQ commands
- "without touching encoding" = video passes through byte-for-byte, no decoding or encoding
We have this. It works. The DVB subtitle shows on MAG, Enigma2, VLC, Kodi. The problem is specifically that iboPlayer, GSE, and TiviMate don't render any of the injected metadata.
something that will fingerprint on listed players with same logic without encoding burnin mode.
current setup already works like this:
- ts_fingerprint runs in the pipe, standby mode (no fingerprint visible)
- Python sends "SHOW username123" via ZMQ
- Fingerprint appears (DVB subtitle injected)
- Python sends "HIDE" via ZMQ
- Fingerprint disappears, stream clean again
architecture is already set up correctly for per-user fingerprinting:
- Shared source feeds into per-user ts_fingerprint process
- Each user gets their own unique text
The problem is that iboPlayer doesn't render ANY subtitle format from MPEG-TS:
- DVB subtitle: not rendered
- CEA-608/708 CC: not rendered
- HLS WebVTT: you tested and also not rendered
FILTER INJECTION / SIDE DATA: That's exactly what we already built. ts_fingerprint injects DVB subtitles (side data) and CEA-608/708 (metadata in SEI NALs) into the live stream without re-encoding. The BSF plugin (fingerprint_bsf.c) does the same via FFmpeg's bitstream filter API. Both work perfectly - the data IS in the stream. The problem is iboPlayer refuses to render any of it.
We've exhausted option A - iboPlayer doesn't support DVB subtitles, CEA-608, CEA-708, or HLS WebVTT FORCED subtitles. No matter what format we inject as metadata, iboPlayer ignores it.
- "persistent FFmpeg-based live injector" = ts_fingerprint (runs continuously in the pipe)
- "stays running in standby" = passes video/audio through untouched until triggered
- "applies fingerprint metadata on demand" = ZMQ SHOW command triggers injection
- "DVB/CC/SEI" = ts_fingerprint injects DVB subtitles + CEA-608/708, BSF plugin injects SEI NALs
- "via Python control" = db_trigger.py sends ZMQ commands
- "without touching encoding" = video passes through byte-for-byte, no decoding or encoding
We have this. It works. The DVB subtitle shows on MAG, Enigma2, VLC, Kodi. The problem is specifically that iboPlayer, GSE, and TiviMate don't render any of the injected metadata.