Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何按内容存储和搜索mp3_Php_Mysql_File_Mp3_Format - Fatal编程技术网

Php 如何按内容存储和搜索mp3

Php 如何按内容存储和搜索mp3,php,mysql,file,mp3,format,Php,Mysql,File,Mp3,Format,我想存储多个mp3文件,并通过提供歌曲的某些部分来搜索它们,以检测它是哪首歌曲 我正在考虑将所有二进制内容存储在mysql中,当我想按内容搜索特定歌曲时,我会将歌曲的中间部分与mysql中的二进制数据进行匹配 我的问题是: 这是根据歌曲内容查找歌曲的合理方式吗 将歌曲内容存储在数据库中是正确的,还是应该使用文件系统 这是行不通的。MP3是一种“有损”格式。这意味着它在编码时会不断地改变音乐的细微差别,从而在同一首歌的几乎每种编码上产生完全不同的字节数据 此外,即使是像WAV这样的未压缩格式,不同

我想存储多个mp3文件,并通过提供歌曲的某些部分来搜索它们,以检测它是哪首歌曲

我正在考虑将所有二进制内容存储在mysql中,当我想按内容搜索特定歌曲时,我会将歌曲的中间部分与mysql中的二进制数据进行匹配

我的问题是:

  • 这是根据歌曲内容查找歌曲的合理方式吗
  • 将歌曲内容存储在数据库中是正确的,还是应该使用文件系统

  • 这是行不通的。MP3是一种“有损”格式。这意味着它在编码时会不断地改变音乐的细微差别,从而在同一首歌的几乎每种编码上产生完全不同的字节数据

    此外,即使是像WAV这样的未压缩格式,不同卷上的两条相同记录也会产生不同的字节数据。因此,不可能通过比较文件内容的字节值来比较音乐

    二进制比较仅适用于同一MP3文件的两个完全相同的副本。当你用相同的设置对相同的MP3文件重新编码时,它甚至不再工作

    比较音乐不是一件小事,有几种方法存在,但据我所知,没有一种可以在PHP中使用


    如果幸运的话,存在允许某种匹配的web服务。尽管如此,我还是希望它在某种程度上是商业化的——我怀疑我们还处在可以免费使用这种东西的阶段。

    这是行不通的。MP3是一种“有损”格式。这意味着它在编码时会不断地改变音乐的细微差别,从而在同一首歌的几乎每种编码上产生完全不同的字节数据

    此外,即使是像WAV这样的未压缩格式,不同卷上的两条相同记录也会产生不同的字节数据。因此,不可能通过比较文件内容的字节值来比较音乐

    二进制比较仅适用于同一MP3文件的两个完全相同的副本。当你用相同的设置对相同的MP3文件重新编码时,它甚至不再工作

    比较音乐不是一件小事,有几种方法存在,但据我所知,没有一种可以在PHP中使用

    如果幸运的话,存在允许某种匹配的web服务。尽管如此,我还是希望它在某种程度上是商业化的——我怀疑我们还处在可以免费使用这种东西的阶段

    这是一个正确的方式来找到歌曲的歌曲内容

    只有当你能确定你作为搜索标准得到的部分实际上是某个MP3文件的摘录时。。。这是非常非常不可能的。如果该部分可以来自不同的来源(例如,同一首歌的不同录音,或者只是不同压缩的MP3),那么您将不得不使用更加复杂的方法

    将歌曲内容存储在数据库或文件存储中是否正常

    如果您进行简单的二进制匹配,那么使用数据库是没有意义的。如果您有更复杂的索引技术(如音频指纹),那么使用数据库是有意义的

    这是一个正确的方式来找到歌曲的歌曲内容

    只有当你能确定你作为搜索标准得到的部分实际上是某个MP3文件的摘录时。。。这是非常非常不可能的。如果该部分可以来自不同的来源(例如,同一首歌的不同录音,或者只是不同压缩的MP3),那么您将不得不使用更加复杂的方法

    将歌曲内容存储在数据库或文件存储中是否正常


    如果您进行简单的二进制匹配,那么使用数据库是没有意义的。如果你有一种更复杂的索引技术(如音频指纹),那么使用数据库是有意义的。

    我不完全理解你想做什么,但是如果你要索引一个MP3收藏,最好存储一个散列(足够长)而不是实际的文件


    问题是字节不能让您了解文件的内容,即其中的音乐。即使从要比较的字节中剪切元数据(以消除元数据拼写/大写方面的噪音变化),您也只知道唯一文件本身的一些信息。因此,您可以比较两个相同的文件(即完全相同的副本)以获得相等性,但无法比较任意两个随机文件的相似性。

    我不完全理解您的意图,但如果要为MP3收藏编制索引,最好存储一个哈希(足够长)而不是实际的文件


    问题是字节不能让您了解文件的内容,即其中的音乐。即使从要比较的字节中剪切元数据(以消除元数据拼写/大写方面的噪音变化),您也只知道唯一文件本身的一些信息。因此,您可以比较两个相同的文件(即完全相同的副本)是否相等,但无法比较任意两个随机文件的相似性。

    正如其他人所指出的,通过查看文件的二进制内容来比较MP3是行不通的

    我在大学最后一年的项目中用Java写了这样的东西。我很乐意把源代码发给你。它涉及的是相对的相似性——“宋X更类似于宋Y,而不是宋Z”,而不是匹配,但这可能是朝着正确方向迈出的一步

    请,无论你做什么,不要尝试用PHP来做这件事。我使用的算法需要我计算(如果我没记错的话——我大约3年前就做过这项工作)它分析的每一个MP3的30个30x30矩阵。在我那台笨重的旧机器上,每首歌都花了大约30秒的时间处理成一组矩阵(我相信我的新电脑可以更快地完成这项工作)。有一次我有了n宋的矩阵