ubuntu下实现echoprint建库和查询
在服务器搭建好之后可以试一试 readme 里面的几个例子,看一下有没有其他问题。
首先是在 python 中运行:
>>> import fp |
得到上述结果就说明这个例子没什么问题,就是写入了一条记录然后查询,一般没啥问题。
第二个例子是 API server
进入 API 目录,开启例子
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 来查询:
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,这个要安装一些依赖:
sudo apt-get install ffmpeg |
都装好了就可以直接在 codegen/src 的目录下 make 了,makefile 都已经写好了,编译完成后再 codegen/目录下看到 echoprint-codegen 文件,可以直接运行。
服务器的 readme 文件中写了一种构建库的方法,首先是将音乐放在 ubuntu 中,例如放在 Music 文件夹下,可以使用 find 命令生成需要产生指纹的音乐列表:
find /home/Music -name "*.mp3" > music_to_ingest |
根据列表索引路径来生成音频指纹:
./echoprint-codegen -s < music_to_ingest > allcodes.json |
此时所有的音频指纹都保存在 allcodes.json 文件中,然后通过 fastingest 将其写入数据库:
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/