[FFmpeg-user] Adding macrovision style copy protection to a theora video

Ted Park kumowoon1025 at gmail.com
Sun Oct 20 20:07:32 EEST 2019

> On Oct 19, 2019, at 2:04 PM, Marc Roos <M.Roos at f1-outsourcing.eu> wrote:
> Why not develop some watermarking technology? For audio you have even 
> some technique that can survive (some) re-encoding. And then have with 
> your users a license agreement. You can also just tell them you are 
> using this technology, while you do not ;)

Speaking of licensing, where do copy protection features or producing copy protected content using GPL’ed software stand in the legalese? Just curious...

I wanna say though, I feel like how copy protection mechanisms usually work is, the more invested the content producers are in implementing it, the more likely it is to be defeated. Like MPAA level studios and their distributors are really into all the DRM and copy prevention schemes, and you see, not bootlegged, but pirated versions online all the time, with all the colorimetry info, HDR metadata, I mean that 4K HDR10 Atmos .torrent is not some analog hole capture, it’s the original source with its expensive DRM chopped off!

Sometimes, as long as content has the right balance of obscurity and a tricky enough copy protection to defeat, it’ll stay “protected”. So basically if your product becomes a successful commercially (a favorable situation) and the protection mechanism becomes defeated (now an eventuality) it’s like, why would you try to put the effort into something that’s only useful If your product is a failure you know?

But back to the op’s question, I do know it’s possible to include program metadata that _signals_ to the decoder that copy protection should be generated in any analog signals it outputs. But it can also ignore it and not do the extra work implementing clock sensitive analog signal processing (read: mangling), and to the user, since it can play more content, it’s not hard to see how it became de facto standard practice.

But a while back Vista Media Center up and refused to record some network’s shows one day (I think it was a Comcast one not sure tho), because Microsoft had implemented that particular feature, which is a real thing that nobody really did..? Especially for software? Then it turned out MS didn’t mean to do that, they just must have been really following the specs to the letter. Then the network said oh yeah that metadata flag we must have enabled it on that stream by accident sorry. But this was a rare exception. It pretty much shows almost no player respects this metadata (since other cablecard boxes had no problem) and content providers don’t even include it unless by mistake (since it known not to be very effective).

If you haven’t, read up on HDCP, which I’d say is the modern, digital data analogy to MV I think, It’s history is pretty impressive for all the wrong reasons, as it was pretty much a complete failure as DRM. HDCP actually encrypts the video in transmission with respectably sized keys, but how it negotiated how devices exchanged key data was revealed to be flawed in its design. Now the master key is out in the open. That’s like, not something even fee-paying content participants with executed licensing contracts had access to. To top it all off, it's the frequent cause of compatible sinks and sources not working claiming the other device is incompliant.

I’ve been rambling for a while now, but actually I think yeah it’s probably possible to insert metadata that signals copy protection using ffmpeg into a program stream. What I’m pretty sure of is that it can’t generate one on its own. Something else to consider, for this to work, the media decoder in the console(?) needs to be able to see that and insert the vblank pulses. And whatever media your game is distributed on is only compatible with a device that implements the copy protection mechanism. Basically you need control of the whole ecosystem, something like the NES comes to mind, what exactly is your distribution method?

> Is there a way to get a video output by ffmpeg to send an extra vblank with
> random pixels that a TV would ignoreicense agreement. You can also just tell them you are 
> using this technolbut would mess up a video recorded on
> a vcr?
In other words, what is between the “video output” and “ffmpeg”? Obviously it’s not ffmpeg -> video output, or is it some hardware device that actually makes this possible?


More information about the ffmpeg-user mailing list