Извлеките аудиоданные в память, используя vlcj - PullRequest
3 голосов
/ 15 января 2020

Я хочу извлечь аудиоданные в память, используя vlcj (https://github.com/caprica/vlcj, версия 4.2.0). Я не хочу воспроизводить видео одновременно, просто извлекаю аудиоданные настолько быстро, насколько позволяет производительность.

Сейчас я использую обходной путь, основанный на этом: https://github.com/caprica/vlcj/blob/master/src/test/java/uk/co/caprica/vlcj/test/rip/RipAudioTest.java, т.е. сначала вывести данные в файл, а затем прочитать файл. Пока это решение работает, оно не является оптимальным и занимает место на диске.

Возможно, приведенный выше пример можно изменить, чтобы вместо него направить звук на обратный вызов.

Второй пример:

https://github.com/caprica/vlcj/blob/master/src/test/java/uk/co/caprica/vlcj/test/directaudio/DirectAudioPlayerTest.java

В этом примере аудиоданные извлекаются в память, что я и хочу. Но он также воспроизводит видео в окне, а это не то, что я хочу. Может быть, этот пример можно изменить, чтобы как-то отключить видео и сделать его максимально быстрым?

1 Ответ

2 голосов
/ 15 января 2020

К сожалению, здесь нет идеального ответа.

Используя уже найденную DirectAudioPlayerTest.java, вы можете изменить создание фабрики медиапроигрывателя так, чтобы он передавал этот параметр для предотвращения открытия видео окна:

factory = new MediaPlayerFactory("--novideo");

Вы получите звук в буфер памяти со скоростью, с которой VL C декодирует его, поэтому если у вас есть 5-минутное видео, для извлечения аудио потребуется 5 минут - не идеально.

Это единственный способ использования vlcj, в котором вы можете захватывать аудиоданные в память.

Найденный вами RipAudioTest.java, IIR C, извлекает аудио максимально быстро, что может быть намного быстрее, чем нормальная скорость воспроизведения - но здесь вы не можете захватить декодированный звук непосредственно в ваше приложение Java.

Так что решение, которое у вас уже есть, сначала скопировать дорожку на диск, может на самом деле быть лучшим решением, которое вы можете достичь с помощью vlcj здесь (поскольку это может быть значительно быстрее, чем с помощью прямого аудиоплеера).

...