dadiyang / jave

音频转码工具,主要用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放
GNU General Public License v2.0
217 stars 72 forks source link

微信语音消息 .amr 转换成 mp3格式失败 #6

Closed c513326 closed 5 years ago

c513326 commented 5 years ago

File source = new File("aaa.amr"); File target = new File("bbb.mp3");

    AudioAttributes audio = new AudioAttributes();
    audio.setCodec("libmp3lame");

// audio.setBitRate(new Integer(128000)); // audio.setChannels(new Integer(2)); // audio.setSamplingRate(new Integer(44100)); EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat("mp3"); attrs.setAudioAttributes(audio); try { Encoder encoder = new Encoder(); encoder.encode(source, target, attrs); } catch (Exception e) { e.printStackTrace(); } 运行报错 it.sauronsoftware.jave.InputFormatException: could not find codec parameters at it.sauronsoftware.jave.Encoder.parseMultimediaInfo(Encoder.java:533) at it.sauronsoftware.jave.Encoder.processErrorOutput(Encoder.java:847) at it.sauronsoftware.jave.Encoder.encode(Encoder.java:834) at it.sauronsoftware.jave.Encoder.encode(Encoder.java:712) at com.yanhua.demo.service.TestService.changeToMp3(TestService.java:75) at com.yanhua.demo.service.TestService.main(TestService.java:19)

dadiyang commented 5 years ago

直接转换的话,调用工具类的方法就可以了。不用自己设置编解码器:

File source = new File("target/test-classes/material/testAudio.amr");
    File target = new File("testAudio.mp3");
    AudioUtils.amrToMp3(source, target);
dadiyang commented 5 years ago

另外,这个工具只支持转换通过公众号接收到的 amr 文件,如果是直接拿到的微信app里的 amr 是经过加密的,这个工具处理不了。 可以参考这个 https://github.com/dadiyang/jave/issues/5

c513326 commented 5 years ago

好的

dolcevitaforever commented 4 years ago

另外,这个工具只支持转换通过公众号接收到的 amr 文件,如果是直接拿到的微信app里的 amr 是经过加密的,这个工具处理不了。 可以参考这个 #5

您好,为啥我的amr文件是从公众号接受过来的, 用这个代码转换也不行啊?? [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - ffmpeg version 3.4.2 Copyright (c) 2000-2018 the FFmpeg developers [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - built with gcc 7.3.0 (GCC) [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libmfx --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - libavutil 55. 78.100 / 55. 78.100 [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - libavcodec 57.107.100 / 57.107.100 [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - libavformat 57. 83.100 / 57. 83.100 [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - libavdevice 57. 10.100 / 57. 10.100 [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - libavfilter 6.107.100 / 6.107.100 [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - libswscale 4. 8.100 / 4. 8.100 [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - libswresample 2. 9.100 / 2. 9.100 [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - libpostproc 54. 7.100 / 54. 7.100 [main] DEBUG it.sauronsoftware.jave.IgnoreErrorEncoder - H:\input\12889_msg_2716410303200c560003a0c106.amr: Invalid data found when processing input

dolcevitaforever commented 4 years ago

另外,这个工具只支持转换通过公众号接收到的 amr 文件,如果是直接拿到的微信app里的 amr 是经过加密的,这个工具处理不了。 可以参考这个 #5

这是我的amr文件 12889_msg_2716410303200c560003a0c106.zip

dadiyang commented 4 years ago

你这个文件有问题吧。你试一下在你电脑上能不能播放? 检查一下你下载并写入音频文件的代码,有可能是输入输出流的代码写得有问题导致文件损坏了。

dolcevitaforever commented 4 years ago

你这个文件有问题吧。你试一下在你电脑上能不能播放? 检查一下你下载并写入音频文件的代码,有可能是输入输出流的代码写得有问题导致文件损坏了。

amr文件没问题的啊, 用楼月播放正常的 代码都是直接从你这个master版本直接下载下来的啊, 其他啥都没动啊