[FFmpeg-trac] #4016(avformat:new): DRM protected content should be detected
FFmpeg
trac at avcodec.org
Wed Oct 8 15:15:39 CEST 2014
#4016: DRM protected content should be detected
----------------------------------+---------------------------------------
Reporter: hendrik | Type: enhancement
Status: new | Priority: normal
Component: avformat | Version: 2.4.2
Keywords: DRM m4p | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
----------------------------------+---------------------------------------
AFAIK FFmpeg libraries contain no special code to recognize whether a file
has been DRM protected e.g. by Apple's so-called "FairPlay". mp4 files are
decoded and played - but the result is simply garbage.
It would be nice, if it was possible to detect whether a file is protected
or not.
Please note, that I don't mean to suggest building a decoder (like
ticket:1800). Instead, just knowing that we simply cannot decode a file
properly is already valuable.
A possible implementation could be for `avcodec_decode_audio4(...)` to
return an appropriate error code, if the packet is encrypted and therefore
cannot be decoded properly.
For `.m4p` this is not hard to detect. It contains an atom called `drms`.
If it is present, the file cannot be properly decoded. For WMA there seems
to be also some sort of mechanism (see e.g. https://mail.kde.org/pipermail
/taglib-devel/2011-March/001885.html).
Further resources for m4p are:
* http://atomicparsley.sourceforge.net/mpeg-4files.html
*
http://www.cs.sjsu.edu/faculty/stamp/students/RamyaVenkataramu_CS298Report.pdf
To illustrate where to find the `drms` atom, here's an excerpt generated
with AtomicParsely:
{{{
> AtomicParsley.exe test.m4p -T +
Atom ftyp @ 0 of size: 32, ends @ 32
Atom moov @ 32 of size: 98194, ends @ 98226
Atom mvhd @ 40 of size: 108, ends @ 148
Atom trak @ 148 of size: 39374, ends @ 39522
Atom tkhd @ 156 of size: 92, ends @ 248
Atom edts @ 248 of size: 36, ends @ 284
Atom elst @ 256 of size: 28, ends @ 284
Atom mdia @ 284 of size: 39238, ends @ 39522
Atom mdhd @ 292 of size: 32, ends @ 324
Atom hdlr @ 324 of size: 58, ends @ 382
Atom minf @ 382 of size: 39140, ends @ 39522
Atom smhd @ 390 of size: 16, ends @ 406
Atom hdlr @ 406 of size: 57, ends @ 463
Atom dinf @ 463 of size: 36, ends @ 499
Atom dref @ 471 of size: 28, ends @ 499
Atom stbl @ 499 of size: 39023, ends @ 39522
Atom stsd @ 507 of size: 999, ends @ 1506
Atom drms @ 523 of size: 983, ends @ 1506
Atom esds @ 559 of size: 51, ends @ 610
Atom sinf @ 610 of size: 896, ends @ 1506
Atom frma @ 618 of size: 12, ends @ 630
Atom schm @ 630 of size: 20, ends @ 650
Atom schi @ 650 of size: 856, ends @ 1506
Atom user @ 658 of size: 12, ends @
670
Atom key @ 670 of size: 12, ends @
682
Atom iviv @ 682 of size: 24, ends @
706
Atom righ @ 706 of size: 88, ends @
794
Atom name @ 794 of size: 264, ends @
1058
Atom priv @ 1058 of size: 448, ends @
1506
Atom stts @ 1506 of size: 24, ends @ 1530
Atom stsc @ 1530 of size: 7756, ends @ 9286
Atom stsz @ 9286 of size: 27640, ends @ 36926
Atom stco @ 36926 of size: 2596, ends @ 39522
Atom udta @ 39522 of size: 58704, ends @ 98226
Atom meta @ 39530 of size: 58696, ends @ 98226
[...]
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/4016>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list