Java 使用coldfusion将MP3文件转换为FLAC

Java 使用coldfusion将MP3文件转换为FLAC,java,ffmpeg,coldfusion,coldfusion-2016,Java,Ffmpeg,Coldfusion,Coldfusion 2016,我正在努力实现的目标 我想要一个ColdFusion中的通用函数,通过它我可以将音频文件转换为不同的格式 我尝试过的 在引用之后,我试图在ColdFusion中实现这一点。我已经包含了来自的.jar文件 下面是我尝试过的代码 component { remote void function foo() { WriteOutput("Method foo() called<br>"); // local.path = expandPath(

我正在努力实现的目标

我想要一个ColdFusion中的通用函数,通过它我可以将音频文件转换为不同的格式

我尝试过的

在引用之后,我试图在ColdFusion中实现这一点。我已经包含了来自的.jar文件

下面是我尝试过的代码

component { 
    remote void function foo() { 
        WriteOutput("Method foo() called<br>"); 
        // local.path = expandPath("../lib/jave-2.0.jar");
        local.javaObj = createObject( 'java', 'java.io.File');
        local.AudioAttributes = createObject("java", "it.sauronsoftware.jave.AudioAttributes");
        local.Encoder = createObject("java", "it.sauronsoftware.jave.Encoder");
        local.EncodingAttributes = createObject("java", "it.sauronsoftware.jave.EncodingAttributes");

        local.EncodingAttributes.setFormat('flac');
        // local.AudioAttributes.setCodec('libmp3lame');
        //local.EncodingAttributes.setAudioAttributes(audioAttr);
        local.mp3file = createObject("java", "java.io.File").init("Manavayanatim.mp3");
        local.flacFile = createObject("java", "java.io.File").init("Manavayanatim.flac");
        try{
            local.Encoder.encode(local.mp3file, local.flacFile, local.EncodingAttributes);
        }catch(Exception e){
            writeDump("Encoding Failed");
        }
    } 
}
组件{
远程void函数foo(){
WriteOutput(“方法foo()调用
”; //local.path=expandPath(“../lib/jave-2.0.jar”); local.javaObj=createObject('java','java.io.File'); local.AudioAttributes=createObject(“java”、“it.sauronsoftware.jave.AudioAttributes”); local.Encoder=createObject(“java”、“it.sauronsoftware.jave.Encoder”); local.EncodingAttributes=createObject(“java”、“it.sauronsoftware.jave.EncodingAttributes”); local.EncodingAttributes.setFormat('flac'); //local.AudioAttributes.setCodec('libmp3lame'); //local.EncodingAttributes.setAudioAttributes(audioAttr); local.mp3file=createObject(“java”、“java.io.File”).init(“Manavayanatim.mp3”); local.flacFile=createObject(“java”、“java.io.File”).init(“Manavayanatim.flac”); 试一试{ local.Encoder.encode(local.mp3文件、local.flacFile、local.EncodingAttributes); }捕获(例外e){ writeDump(“编码失败”); } } }
编码器对象

我收到的错误

搜索错误后,发现
ffmpeg-amd64.exe文件在
C:\Windows\System32
位置丢失。所以我下载并添加了这个。但我仍然无法解决这个错误。

我想。使用文档说,您还需要为您的环境下载本机jar。据我所知,该库(自动)从本机jar加载并提取ffmpeg可执行文件

  • 您需要
    jave-2.0.jar
    文件,它是您要使用的java接口
  • 此外,您还需要一个与您的平台相匹配的本机库。因此,对于64位linux,您还可以下载
    jave-2.0-linux64.jar
    。 此文件包含linux 64位二进制可执行文件

  • 这也可以解释错误。如果库只在本机jar中搜索,这就解释了为什么将它复制到
    C:\Windows\…
    没有帮助

    看看这个,这需要做,但我不知道如何在CF.@RRK中做到这一点-我想这是针对版本1的。它不能在CF中完成。您必须在java中完成。看起来live版本2通过将exe绑定到一个额外的jar中来消除这个问题。