为了教育目的,我需要在互联网上提供一些MP3。我不希望它被非法下载。因此,我想破坏MP3文件的方式,使它们在其他媒体播放器音乐上不可读。
问题:
我需要保持元数据不受影响(长度、标记等),因为我需要在这些mutagen.mp3
文件上使用mutagen.id3
和MP3。
我还没试过什么呢。我想知道有没有人知道该怎么做?
发布于 2022-01-15 15:07:49
您可以录制您自己的“音乐”(低语或拍手),并创建您自己的mp3。或者你可以使用维基百科中的一些版税免费片段。
发布于 2022-02-02 08:34:22
我已经有很长一段时间(几年)不想使用MP3字节了,所以在下面的建议中再检查一下帧大小的数字。如果你在我的指导下尝试一些东西,我可以帮你解决任何问题。
注意:
使用十六进制编辑器查看MP3的内部,并遵循下面解释的字节结构。
可能的解决方案
如果您的MP3文件有元数据,那么它实际上是的两个部分,连接了.
(例如: ID3元数据+ MP3音频数据)
ID3编辑器只关心第一部分的,这样就可以在不影响音频的情况下编辑部分。
第一部分是ID3元数据,它以3个字节的文本"ID3“(或字节:49
44
33
)开始。
它将有一个字节中列出的大小(字节长度),因此您可以跳过ID3到MP3的开头。
第二部分是MP3数据,它以2字节的数字255
251
(或字节:FF
FB
)开头。
这两个字节FF FB
是典型的MP3帧的启动(MP3帧头有4个字节,例如:FF FB XX XX
)。XX
部件将取决于其频率、比特率、版本等MP3设置。
要损坏MP3数据,可以尝试:
E 233
)。这使得查找每个MP3帧的开始变得更加容易。每个帧都有一个匹配的FF FB XX XX
签名。它们都是相同的大小,因此,一旦从检查第一个帧中知道字节的长度,就可以跳过相同的数字到达下一个(或任何) MP3帧的开始(例如:您可以使用乘来达到特定的帧号)。
公式为FrameSize = 144 * BitRate / (SampleRate + Padding)
(CBR =零填充)。
示例:(bitrate=192,sampleRate=44.1 khz)
144 * 192 / (44.1 + 0) = 626 bytes per audio frame
。
FF FB
都是随机字节,比如AA AA
甚至AB CD
.如果不再是预期的FF FB
,那么MP3播放器应该拒绝播放它,给出一个错误,例如:“无效的MP3文件”.。
FF FB
,然后进行音频播放。通过跳过un-corruption字节以到达第一个帧的位置并将找到的前两个字节替换为FF FB
.来实现这个ID3
https://stackoverflow.com/questions/70717624
复制相似问题