Skip to content

Commit 1902c71

Browse files
authored
Update README.md
1 parent b3f96cd commit 1902c71

File tree

1 file changed

+36
-14
lines changed

1 file changed

+36
-14
lines changed

README.md

+36-14
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## 简介
44

5-
针对Android平台的一个基于Chromaprint的音频指纹计算库,可计算音频指纹用于判断音频是否“相同”,可用音频指纹调用 [MusicBrainz](https://musicbrainz.org/) 的API查询音频的相关信息
5+
针对Android平台的一个基于Chromaprint的音频指纹计算库,可计算音频指纹用于判断音频是否“相同”,可用音频指纹调用 [Acoustid](https://acoustid.org/webservice) 的API查询 [MusicBrainz](https://musicbrainz.org/) 库中所存有的与该音频相似的数据的相关信息
66

77
本仓库的核心代码基于Chromaprint的`fpcalc.cpp`。与原始实现不同,使用Android NDK提供的`MediaCodec`来替代`FFMpeg``AvCodec`进行音频解码。降低了动态库的大小。同时针对Android平台,提供了使用`FileDescriptor`读取文件的方法,以便更好地集成到Android应用中。
88

@@ -19,27 +19,49 @@
1919

2020
## 如何使用
2121

22+
[![](https://jitpack.io/v/cy745/fpcalc.svg)](https://jitpack.io/#cy745/fpcalc)
23+
2224
```gradle
2325
// 导入jitpack源
2426
maven(url = "https://jitpack.io")
2527
26-
// 所需使用的project中引入library
28+
// 所需使用的project中引入library
2729
implementation("com.github.cy745:fpcalc:<version>")
2830
```
2931

3032
```kotlin
3133
// 配置传入fpcalc的参数,fd为文件的FileDescriptor
32-
val args: Array<String> = arrayOf("-json", "$fd")
34+
val params: FpcalcParams = FpcalcParams(
35+
targetFd = fd // Int
36+
)
3337

34-
// 调用Fpcalc
35-
val result: String = Fpcalc.calc(args)
36-
```
38+
// 或者传入文件路径
39+
val params: FpcalcParams = FpcalcParams(
40+
targetFilePath = filePath // String
41+
)
3742

38-
result的格式根据传入参数可能不同,需要注意,以下是JSON格式的示例
39-
```json
40-
{
41-
"duration": 42.62,
42-
"fingerprint": "AQABN0myKWmYBkJwvEfDo-gcHWGeQ0eYo8N__GjeoT_y5-jh_eiP_PjR48djvEc-G_6gXcHT4McDfUeYvWiPozeabkEO8QryhMrx40c_ozmB5kF5tDHCfDku3NAO0-hz6Md_9EoD68MHP8V_Qz_-oEf-4ymOEp8uXMIdoXmxC8d7tDsS5jHSH7UY_Dt6o_mCbpuH5vjxGTfR50hz-ERn4SX6HFYOHzlhBWGJQ8tn9AzCfPHQcsdn9EZKDoco32jW4B1KQjzyD5aIw8cP__iPVFvRozbE5-iDdonQnMYnhGVwhC-H5_iORg_0zuiO4zy65_CHH-IP60c_HK0FLc_Ro3mO44VP6OiPH9fxQzx-pCcO67hIHH7xwd1RPuiPKWcO5kb67Jh0RdCXoDdikTm-FI10XMyJIyeJN2OgfTquCYcuGDm-4ceRC-ehHn-D4zP84oeI6oPe4T8uI_qD52gfnNKA-Pjg44RxHpR8_PAPlTjSE_8RHN3xQyV-vEcv-BNu-DMu4oj2Cz2DyoH1oM-OSpQMvyhv_MiP0mjiLC7-F_mN5j2q7UEPPxOcz3h_JMuJL0d-ouGYwmoQ6tDVICSzw-dxYsdRyziu4zeebMcnNP_QA_mhKiR6Huk9dNVw_MibQeuQ80T34TKa_EfxEnk_9EZzvC9uHqVepIf7Fz16_Dhw-IcVH8cF66gBRyBgBipimHBGEUIEwkQYIp0EhmhDLBCGOCIUIYAoJ4QgTgwilBCIEKIUJAY4Ax0yAChCiAWAUGkcEUqJYpFBAACnhHLGAKEEEAIKxawQgEBliRAAWCGMQEYABpQCzBJBHCCAQEMEEcIIZRChgDBAxBWcKGEcE0YIKywQDhglCARAASaIQM4BghQRBBupIFAiOKSIFFtihpAgDhjCmGPYGoeAskwYy4hCgDDLDDEGMIIQAoIIAoQUhAhChFDCMGCEAYQBhzxxgDhjoXREEMCAMcIJgJyEQhggARGECIaMAA4AIBQSRDxCiBMG"
43+
// 调用Fpcalc
44+
val result: FpcalcResult = Fpcalc.calc(params)
45+
46+
// 输入的FpcalcParams定义如下
47+
data class FpcalcParams(
48+
val targetFd: Int = -1,
49+
val targetFilePath: String? = null,
50+
val gMaxDuration: Int = 120, // in second
51+
val gRaw: Boolean = false,
52+
val gSigned: Boolean = false,
53+
val gAlgorithm: Int = 2,
54+
)
55+
56+
// 输出的FpcalcResult定义如下
57+
class FpcalcResult {
58+
var fingerprint: String? = null
59+
var rawFingerprint: String? = null
60+
var errorMessage: String? = null
61+
var sourceDurationMs: Long = 0
62+
var sourceSampleRate: Int = 0
63+
var sourceChannels: Int = 0
64+
var sourceLength: Int = 0
4365
}
4466
```
4567

@@ -57,9 +79,9 @@ git submodule update --init --recursive
5779

5880
### 后续任务
5981

60-
- 解决各种闪退问题
61-
- 完善API,降低Android平台使用的难度
62-
- 完全剔除对libavutils的依赖(目前还有resample部分依赖libavutils用于缓冲区的创建)
82+
- 解决各种闪退问题
83+
- 完善API,降低Android平台使用的难度
84+
- 🔘 完全剔除对libavutils的依赖(目前还有resample部分依赖libavutils用于缓冲区的创建)
6385
- ......
6486

6587
## 贡献与反馈

0 commit comments

Comments
 (0)