在视频文件中嵌入代码
如果问题含糊不清,我会尽力解释。在视频文件中嵌入代码
我正在处理视频的现有PHP下载脚本,并且它的某些部分已损坏。那里有代码应该在下载之前在视频文件中放置一个特定的成员代码,但它不起作用。这里的代码:
//embed user's code in video file
$fpTarget = fopen($filename, "a");
fwrite($fpTarget, $member_code);
fclose($fpTarget);
$ member_code是一个随机的6个字符的代码。
现在,如果它是一个文本文件,这对我来说是有意义的,但由于它是一个视频文件,这怎么可能工作,它应该做什么?如果会员代码以某种方式添加到视频中,下载后我怎么看?我没有视频文件的使用经验,所以我们对此表示赞赏(对可用代码或新代码的修改同样受到欢迎)。
对不起,我不能更准确地描述代码应该做什么,我试图自己弄清楚。
它可能会工作,具体取决于视频的格式/类型。 MPG文件相当容忍文件中的“噪声”,并且播放器会跳过您的代码,因为它看起来不像有效的视频帧数据。
其他格式/播放器可能会呕吐,因为格式要求某些数据处于相对于文件末尾的特定偏移量,您现在已将这些数据偏移了6个字符。
最好的办法就是看看你提供的任何格式是否符合其规范中元数据的规定。例如可能会支持注释字段,您可以简单地将代码放入。但是,如果您为了'安全性'或追踪未经授权的视频共享而做了所有这些事情,那么只需将该数字写入标头就很容易绕过。更好的办法是以某种方式为视频加水印,以便将代码嵌入实际视频数据中,以便在播放时显示“此视频仅属于成员XYZ”。
谢谢。无论如何,该网站正在考虑为它们加水印,这是一个临时解决方案。格式大多是mp4。你知道这有多宽容吗? – robert 2012-01-11 15:35:25
mp4确实有元数据规定。尽管有一些工具可以从命令行操作(可能是gui版本),但您仍然必须查看官方规格说明:http://forum.videohelp.com/threads/285993-MP4-Metadata-tags - 如何对加 – 2012-01-11 15:37:55
您不直接写入文件的内容,也不像使用文本文件。正如你所注意到的,这有效地破坏了视频,你无法合理地阅读信息。
对于音频/视频文件,您可以写入随文件打包的元数据。这是如何打包的,你可以用它做什么,通常很大程度上取决于用于该文件的容器格式。 (请记住,容器和编解码器是两种不同的东西,编解码器是用于编码音频/视频的格式,容器是存储数据流的文件格式。)
类似getID3的库可能是好的地方开始。我从来没有使用它,但它似乎是你在找什么。你基本上要做的是为容器中的元数据(或者是该容器的预定义值,或者可能是一个自定义的键/值对等)写入一个值,它将成为该文件的一部分。然后,在阅读文件时,您可以获取该数据。 (现在,最后一部分很大程度上取决于读取文件的内容,数据在那里,但并不是每个玩家都在意它,你需要将你正在写的内容与你通常从文件中看到/阅读的内容进行匹配内部元数据。)
您使用什么视频格式? – MrGlass 2012-01-11 15:36:58