Ну можно непосредственно от liquidsoap узнать что играло, другое дело что сохранит он 10, 20, ну сто треков, ему от этого лучше не становится, а если Вы еще и дергать будете постоянно то совсем капец...
Конечно вот конкретно c json возможен ход конем, но я даже пробовать не стану, не надо компонент отвечающий за самое главное занимать еще чем - то.
Самый простой вариант сделать внешний обработчик, вызывать по событию on_metadata, а там что снаружи напишете - то и будет, хоть в json, хоть в xml, хоть в базу данных.
Или, ну мало ли, если у Вас Requests-based source, тот же скрипт что отдает url может и json и что угодно генерить, но надо будет делать это асинхронно, совсем чуть сложнее.
Что касается не реенкодить... Если Вы его как секвенсор используете - ну можно ченить сваять, если с кроссфейдами и так далее - забудьте.