Как при помощи gstreamer получить метаинфу аудиофайла используя Java?
У меня есть контроллер:
public AudioGSTController() {
Gst.init(Version.BASELINE, "audioPlayer", "run");
playbin = new PlayBin("playbin");
playbin.setAudioSink(null);
Element level = ElementFactory.make("level", "level");
playbin.set("audio-filter", level);
}
и метод передачи аудиофайла:
public void setFile(File file){
playbin.stop();
playbin.setURI(file.toURI());
playbin.play();
}
музыка воспроизводится, но я хочу получить информацию о названии трека, авторе и длительности.
Я точно уверен что это можно сделать при помощи gstreamer, но не могу найти информацию как...
Возможно, нужно использовать метод playbin.getAudioPad(), но я не знаю, какие аргументы нужно в него передавать.
Ответы (1 шт):
Автор решения: koji sky
→ Ссылка
Нашел решение сам.
Вся информация лежит в тэгах, доступ к ним можно получить таким образом:
playbin.getBus().connect(busTag);
Предварительно создав Bus.TAG
private final Bus.TAG busTag = new Bus.TAG() {
public void tagsFound(GstObject source, TagList tags) {
for (String tagName : tags.getTagNames()) {
for (Object o : tags.getValues(tagName)) {
System.out.println("Media tag: " + tagName + " => " + o);
}
}
}
};