Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用vlcj将音频数据提取到内存中_Java_Libvlc_Vlcj - Fatal编程技术网

Java 使用vlcj将音频数据提取到内存中

Java 使用vlcj将音频数据提取到内存中,java,libvlc,vlcj,Java,Libvlc,Vlcj,我想使用vlcj(,版本4.2.0)将音频数据提取到内存中。我不想同时播放视频,只要在性能允许的情况下尽快提取音频数据即可 现在我正在使用一种基于以下内容的变通方法:,即先将数据输出到文件,然后读取文件。虽然此解决方案可行,但它不是最佳解决方案,而且需要占用磁盘空间 也许可以修改上面的示例,将音频定向到回调 第二个例子是: 在那个例子中,音频数据被提取到内存中,这就是我想要的。但它也在窗口中播放视频,这不是我想要的。也许可以修改该示例,以某种方式关闭视频,并使其尽可能快地运行?遗憾的是,这里没

我想使用vlcj(,版本4.2.0)将音频数据提取到内存中。我不想同时播放视频,只要在性能允许的情况下尽快提取音频数据即可

现在我正在使用一种基于以下内容的变通方法:,即先将数据输出到文件,然后读取文件。虽然此解决方案可行,但它不是最佳解决方案,而且需要占用磁盘空间

也许可以修改上面的示例,将音频定向到回调

第二个例子是:


在那个例子中,音频数据被提取到内存中,这就是我想要的。但它也在窗口中播放视频,这不是我想要的。也许可以修改该示例,以某种方式关闭视频,并使其尽可能快地运行?

遗憾的是,这里没有完美的答案

使用已找到的
DirectAudioPlayerTest.java
,您可以更改媒体播放器出厂创建以传递此参数,以防止打开视频窗口:

factory = new MediaPlayerFactory("--novideo");
您将以VLC解码的速率将音频接收到内存缓冲区中,因此如果您有5分钟的视频,则需要5分钟来提取音频-这并不理想

这是vlcj唯一可以在内存中获取音频数据的方法

您发现的
RipAudioTest.java
IIRC尽可能快地提取音频,这可能比正常的播放速度快得多,但在这里,您无法将解码后的音频直接捕获到java应用程序中


因此,您已有的解决方案,首先将曲目翻录到磁盘,实际上可能是使用vlcj可以实现的最佳解决方案(因为它可能比使用direct audio player快得多)。

谢谢!在这种情况下,以实时速度运行不是一个选项,因此我认为我必须继续使用RipAudioTest.java方法。