ubuntu下实现echoprint建库和查询
在服务器搭建好之后可以试一试readme里面的几个例子,看一下有没有其他问题。
首先是在python中运行:
1 | >>> import fp |
得到上述结果就说明这个例子没什么问题,就是写入了一条记录然后查询,一般没啥问题。
第二个例子是API server
进入API目录,开启例子
1 | cd API |
会看到显示的地址是0.0.0.0:8080,这里的0.0.0.0是本机的所有IP的合集,是个比较特殊的IP,127.0.0.1是本机的IP,但这些都不是物理IP地址,我们在网络配置时都是配置物理IP地址,如果其他计算机想要访问你的电脑,则必须通过物理IP来唯一确定你的地址。
下面要用到curl命令,没有安装的安装一下,curl是个强大的http命令行工具,我也不了解,只是这里通过这个命令来写入数据,例如将第一个例子的数据通过curl命令写入服务器:
再通过在http来查询:
1 | http://(服务器物理ip地址):8080/query?fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw |
这样就可以看到查询结果了,如果不是在自己的电脑上查询,必须通过服务器的物理ip地址。
顺便说一下虚拟机的网络配置问题,NAT模式是直接就能够上网的,此时虚拟机对网络的访问时通过宿主机实现的,虚拟机的ip地址是虚拟出来的,不作为网络上的一台独立的计算机,我理解其实还是通过宿主机的ip来连入网络的。
而桥接模式是可以将虚拟机配置成一台独立接入互联网的电脑的,此时虚拟机必须也有自己的实际ip地址。我在桥接中使用静态ip地址,能够ping通宿主机和内网,但不能ping同外网,dns也不能解析,最终又换回了NAT模式,直接在真机ubuntu上配置服务器就不用考虑这些了。后面会单独记录一下虚拟机网络配置的问题。
最后是在ubuntu下编译codegen,这个要安装一些依赖:
1 | sudo apt-get install ffmpeg |
都装好了就可以直接在codegen/src 的目录下make了,makefile都已经写好了,编译完成后再codegen/目录下看到echoprint-codegen文件,可以直接运行。
服务器的readme文件中写了一种构建库的方法,首先是将音乐放在ubuntu中,例如放在Music文件夹下,可以使用find命令生成需要产生指纹的音乐列表:
1 | find /home/Music -name "*.mp3" > music_to_ingest |
根据列表索引路径来生成音频指纹:
1 | ./echoprint-codegen -s < music_to_ingest > allcodes.json |
此时所有的音频指纹都保存在allcodes.json文件中,然后通过fastingest将其写入数据库:
1 | python fastingest.py [-b] allcodes.json |
指纹较多的时候可以使用python splitdata.py allcodes.json
将其分成5份,否则会耗尽内存。
写入的时候ttserver和echoprint-server都会有log信息提示,如果出错也会提示,按之前的步骤操作应该是没有问题的。
写入成功后,可以查询一下试试看:
在这里我将库中的一首歌曲 「林志炫-烟花易冷-我是歌手第六期」只保留第1分钟后的20秒,改名为test.mp3,在windows下使用编译好的codegen.exe获取其指纹信息:
结果保存在result1中,打开可以看到指纹信息:
将指纹信息留作后面查询。
这里要修改fp.py文件,打开将其中的localhost修改为服务器端的ip地址:
然后打开python命令行:
输入命令:
可以看到查询结果了,在不同的平台下编译codegen并修改fp.py文件,可以实现在不同平台实现连接服务器的查询。
上面介绍的ubuntu中的服务器搭建及相关内容在32位和64位上的差别就是安装java的bin文件,要下载对应系统的bin文件,其他的问题不大,反正有版本要求的就选择和系统相对应的版本就可以了,之前在虚拟机上配置完成,昨天在自己电脑上的32位及64位都搞定了,方法应该是没有问题的啦~
The Why·Liam·Blog by WhyLiam is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由WhyLiam创作并维护的Why·Liam·Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于Why·Liam·Blog (https://blog.naaln.com),版权所有,侵权必究。
本文永久链接:https://blog.naaln.com/2013/10/echoprint-under-ubuntu-database-and-queries/