gpt4 book ai didi

java - 使用 vlcj 将音频数据提取到内存

转载 作者:行者123 更新时间:2023-12-02 08:56:08 25 4
gpt4 key购买 nike

我想使用 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

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

最佳答案

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

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

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

您将以 VLC 解码的速率将音频接收到内存缓冲区中,因此,如果您有 5 分钟的视频,则需要 5 分钟才能提取音频 - 这并不理想。

这是使用 vlcj 获取内存中音频数据的唯一方法。

你找到的RipAudioTest.java,IIRC,尽可能快地提取音频,这可能比正常播放速度快很多 - 但在这里你无法抓取解码后的音频直接进入您的 Java 应用程序。

因此,您已经拥有的解决方案(首先将轨道翻录到磁盘)实际上可能是您可以在此处使用 vlcj 实现的最佳解决方案(因为它比使用直接音频播放器要快得多)。

关于java - 使用 vlcj 将音频数据提取到内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59755212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com