【问题标题】:Use metadata to uniquely identify files使用元数据唯一标识文件
【发布时间】:2018-05-06 01:40:28
【问题描述】:

您好需要知道如何识别设备存储中的音频文件,问题如下:

我正在开发一个音乐播放器,并将一些播放数据存储在数据库中,这些数据分别附加到每个音频文件,应用程序会不时检查用户音频库(在 SD 卡或内部存储器上)中的更改并插入数据库中的新歌曲(如果有),问题是我无法识别数据库是否已经存在,因为我无法获得通用标识符,我尝试使用存储中的音乐路径,但在某些情况下音乐名称有禁止我在 sqlite 中使用的字符,所以问题是:

如何识别音频文件?

EDIT1:

我认为我的问题不是很清楚,我想要的是一种单独识别每个音频文件的方法,例如使用文件的某些元数据,这些元数据是独一无二的,不能重复,例如文件的创建日期以毫秒为单位,或每个文件独有的任何其他元数据,如指纹。

我正在测试一个我认为不是理想的解决方案,我采用文件的路径并使用 Base64 类对其进行编码:

String path = "/storage/emulated/0/Download/Disturbed-万拳.mp3";

Base64.encodeToString(path.getBytes(), Base64.DEFAULT);'

结果是:L3N0b3JhZ2UvZW11bGF0ZWQvMC9Eb3dubG9hZC9EaXN0dXJiZWQtVGVuIFRob3VzYW5kIEZpc3Rz lm1wMw

大小因路径而异,但 String 仅获取数据库中接受的字母和数字,并且每个路径的结果始终相同。你怎么看?

【问题讨论】:

  • 您的解决方案基本上与仅使用文件的确切名称相同(“Disturbed-The Thoushand Fists.mp3”)。在这种情况下,散列它不会给你带来任何好处。也许你应该考虑散列音频文件的元数据?或者,可能是它的一些内容?
  • 使用 BASE64 删除了所有禁止的字符,使字符串只剩下字母和数字。我想要的是一种使用任何无法更改、删除或重复的信息来识别每个文件的方法,因为我会生成与每个文件相关联的播放统计信息,并且如果用户使用标签编辑器或更改,我不希望它们丢失内存中的文件名。我还需要一个唯一的 id 以避免在数据库中插入重复的音乐,因为没有唯一的 id 我无法验证是否已经在数据库中获取了文件。

标签: java android sqlite audio media


【解决方案1】:

可以通过扩展名识别音频文件。可以在 Wikipedia Audio_file_format

上找到使用的格式列表(不完整)

您最好的选择可能是检查文件扩展名并列出与音频相关的已知扩展名类型。

但是,这不包括诸如 MP4 文件有音频但没有视频的情况。

【讨论】:

  • 你好,请再看问题,tnks!
【解决方案2】:

为此,我假设您已经有一个变量,无论是硬编码还是在循环/列表中,它都是您要检查的 File 对象。

File audioFile;
//this is just for readability, do not write in your code as this should be replaced with the variable you have which is storing the audio file File.
String name = audioFile.getName();
//This is where you can do your logic. The name also returns the extension of the file so you can make sure your music player can handle the file extension, and also check the characters in the name
//Here is an example of detecting the ' character
if(name.contains("'")){
    //do something
}

如果您还有其他问题,请告诉我!

【讨论】:

  • 你好,请再看问题,tnks!
【解决方案3】:

您必须在文件类型框中单击所有文件格式,然后选择audio格式的插入文件,例如mp3,真实,wmp

【讨论】:

  • 你好,请再看问题,tnks!
猜你喜欢
  • 1970-01-01
  • 2012-04-25
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 2021-10-30
  • 2013-03-12
相关资源
最近更新 更多