来点感慨:
不到最后关头总是不想去解决一些较为麻烦的事情,今天解决的问题都是之前项目中的盲点,一直不想去解决。一整天的时间,解决的问题不多,而且没有效率,不过发现的问题不尝试去解决,总结会使问题。所以我就来写博客了,希望大家忽略这段哈,重点在下面。

问题一:音频文件的装换 列子 amr->mp3

问题来源:微信录音之后的语音信息存储格式为amr,而amr文件在网页上不好播放,所以需要进行转码

解决方式:当然是调用jar包了,只不过java 调用的 jave(没错 是 e) 存在一些问题(无关紧要了),但是跨平台方面就有比较大的问题了,在linux下面自己直接用java调用了系统命令。
先上代码了 windows
package cn.edu.dlmu.wechat.bean;
import it.sauronsoftware.jave.AudioAttributes;
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncoderException;
import it.sauronsoftware.jave.EncodingAttributes;
import it.sauronsoftware.jave.InputFormatException;
import java.io.File;
public class ChangeAudioFormat {public static void changeToMp3(String sourcePath, String targetPath) {File source = new File(sourcePath);File target = new File(targetPath);AudioAttributes audio = new AudioAttributes();Encoder encoder = new Encoder();audio.setCodec("libmp3lame");EncodingAttributes attrs = new EncodingAttributes();attrs.setFormat("mp3");attrs.setAudioAttributes(audio);try {encoder.encode(source, target, attrs);} catch (IllegalArgumentException e) {e.printStackTrace();} catch (InputFormatException e) {e.printStackTrace();} catch (EncoderException e) {System.out.println("有错但是成功转换了");}}
}
备注:这代码也是自己从网上找的,但是亲测有效,只不过把EncoderException 拦截了,因为成功转码了,报的错误就没那么重要了。——>>>>jave官方下载地址
linux代码
import it.sauronsoftware.jave.EncoderException;import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;public class Main {public static void main(String[] args) {String sPath = "./arm/test.amr";String tPath = "./mp3/test.mp3";try {new Main().changeAmrToMp3(sPath,tPath);} catch (EncoderException e) {e.printStackTrace();}}public void changeAmrToMp3(String sourcePath, String targetPath) throws IllegalArgumentException, EncoderException {String webroot = "";Runtime run = null;try {run = Runtime.getRuntime();long start=System.currentTimeMillis();System.out.println(new File(webroot).getAbsolutePath());//执行ffmpeg.exe,前面是ffmpeg.exe的地址,中间是需要转换的文件地址,后面是转换后的文件地址。-i是转换方式,意思是可编码解码,mp3编码方式采用的是libmp3lameProcess p=run.exec("ffmpeg -i "+sourcePath+" -acodec libmp3lame "+targetPath);//释放进程BufferedReader br1 = new BufferedReader(new OutputStreamWriter(p.getOutputStream()));p.getOutputStream().close();p.getInputStream().close();BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));String line = null;//逐行读取输出到控制台while ((line = br.readLine()) != null) {System.out.println(line);}p.waitFor();long end=System.currentTimeMillis();System.out.println(sourcePath+" convert success, costs:"+(end-start)+"ms");} catch (Exception e) {e.printStackTrace();}finally{//run调用lame解码器最后释放内存run.freeMemory();}}
}
# 备注 这里需要 在linux上安装ffmpeg,其实在windows下面也是调用的ffmpeg只是被封装了而已,对于获取系统调用的输入输出流自己还不太明白,希望之后可以好好学学(有些童鞋可能会发向在命令行好使,在程序里面就不好使了,可能是因为缓存的原因)(不要怪自己,程序员本来就是为了应对这种理所当然的bug的)

问题二 java web 路径问题 使用的是jfinal 其他框架没有尝试

问题来源:由于项目需要,需要在项目中存取图片路径,刚开始自己使用的是绝对路径

项目目录是这样的

想要吧 图图片数据存储到 (~)webapps/evidence/文件夹下面,当开始是在本地调试的没有布署,就直接使用绝对路径了 D:\jfinal-demo\jfinal-demo-web\src\main\webapp\evidence\
效果是达到了,但是部署到tomcat上之后发现,人家不认账,使用绝对路径不好使了,因为tomcat部署之后的路径是这样的D:\tomcat\webapps\jfinal-demo-web\evidence\
你可能会说,那就把绝对路径再改一下呗,你是认真的吗?你还是程序员吗?你难道想被领导臭骂吗?因为之歌项目之后还要部署到linux上,所以还是找一个解决办法吧!!!!

在这里我尝试了两种方法
第一种 使用 System.getProperties(“user.dir”); 获取当前的工作路径 path 然后使用path+/evidence来保存,一部署发现项目被存到了 D:\tomacat\bin\evidence下面了 (好气哦)
第二种方法 在控制器中找寻路径 因为这里想到 java web 工程部署到 tomcat下面之后其实主要的路径就只剩下webapp下面的了,其他的不是变成classes了就是不知道去哪里了
# 部署之后的路径:

后来终于领悟了其中的精髓 因为看到了一行代码 这样写的:
String path = getRequest().getSession().getServletContext().getRealPath("/evidence/tipreportMore");
哇 好长 !!!

解释一下:部署完成之后 “/”代表的就是项目的根目录,而evidence则为其下的需要存放图片的文件夹,只要获取到这个 ‘/’根目录下的文件夹的绝对路径就好 上面的方法就是起这个作用的。

这样就可以使用相对路径的 真实路径来 找到绝对路径了

最后再抱怨一下 微信开发是真的坑啊,在别人的基础上开发东西是真的难受。好像在在有限的时间里有很高的效率或者沉浸在自己喜欢的事情里!!!

eyeon项目总结 音频转换 amr-mp3 web项目路径实践经验(血泪史)相关推荐

  1. 如何将M4A格式音频转换成MP3格式?分享两个方法给大家!

    M4A是一种数字音频压缩格式,通常用于存储iTunes Store上的音乐和其他数字音频文件.但是,有时候您可能需要将M4A文件转换为MP3格式以便在其他设备上播放或共享.下面我们将介绍如何将M4A格 ...

  2. 如何将音频转换成mp3?

    如何将音频转换成mp3?mp3是使用最广泛,也最通用的音频格式,不管是在电脑.手机.平板或者其他的播放设备上,都能正常打开播放或者使用.除了mp3外,还有很多其它的音频格式,例如wav.ogg.fla ...

  3. 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法

    title: 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法 tags: grammar_cjkRuby: true --- 右键单击项目,properties-- ...

  4. 音频转换成mp3格式的步骤

    现在的音乐格式的格式可以说非常的多,一般我们在上网的时候是直接在在线听歌曲的,但是随着人们对音乐的热爱,大家就会在一些不同场合时间段来听一些美妙的曲子,所以就需要在自己的手机上面下载歌曲,因为我们的手 ...

  5. 如何把FLAC音频转换成MP3格式

    FLAC是可以保留声音原本音质的音频解码格式,但它会占用大量的硬盘空间,并且大多数MP3播放器都不支持播放这种格式的音乐.所以我们有时候会将FLAC文件转换成MP3文件,这样不仅可以节省很多空间,而且 ...

  6. 如何把aac格式的音频转换成mp3格式的

    AAC,是一种专为声音数据设计的文件压缩格式.相对于mp3,AAC格式的音质更佳,文件更小.但是AAC属于有损压缩的格式,与时下流行的APE.FLAC等无损格式相比音质存在"本质上" ...

  7. (JAVA)将(acc/m4a)音频转换成Mp3格式

    2019独角兽企业重金招聘Python工程师标准>>> 实际工作中有一个需求,就是上传到微信的音频(格式为m4a)在PC浏览器无法播放,需要转码成mp3,然后在PC端播放(其实后来发 ...

  8. 怎么将千千静听的音频转换成mp3格式?

    已经很久不再使用千千静听这个音乐播放器了,现在大家用的最多的就是QQ音乐和网易云音乐,但是今天为什么要写这篇文章呢?原因很简单,无论在哪个播放器上下载格式,如果是要进行转换那么它的方法也都是一样的,因 ...

  9. 音频转换成mp3的方法

    把音频转换为MP3格式是因为MP3格式可以更好地压缩音频文件,减小文件大小,便于存储和传输.此外,MP3格式已成为流行的音频格式之一,许多设备和软件都支持MP3格式,使得MP3格式成为了一种通用的音频 ...

  10. java项目打成jar和war_maven打包web项目时同时打包为war和jar文件的方法

    本文介绍了maven打包web项目时同时打包为war和jar文件的方法,分享给大家,具体如下: 首先在pom.xml文件中指定war的打包方式,war test test war 上述代码在eclip ...

最新文章

  1. 当你使用微信和 QQ 的时候,请不要忘记 ICQ 这个伟大的公司!
  2. Google Map API V3开发(5)
  3. 【JS】执行上下文(ExcecutionContext)
  4. 【Python自动化运维之路Day2】
  5. ios html清除缓存,iOS开发之1行代码实现缓存计算及清除缓存
  6. html添加兄弟元素,jquery插入兄弟节点的操作方法
  7. 文件压缩——哈夫曼树编码2.0
  8. Python 科学计算基础 (整理)
  9. EdrawMax使用方法
  10. DNS域名解析协议详解
  11. android版本内存卡,版本等级繁多 教你如何挑选手机内存卡
  12. GD32IAP升级(BootLoader)
  13. 中兴机顶盒刷机后服务器连接失败,(四川高安)中兴ba860av2.1t强刷安卓固件包解决刷机到7出错问题...
  14. Windows商店安装问题已解决 Xbox应用将改善游戏安装
  15. OpenStack私有云安装配置虚拟机
  16. 天猫多个商品主图、属性图和细节图分类下载
  17. Java 14:JDK 14进入GA时的所有新功能
  18. 计算机的选材标准,计算机材料试验机
  19. APP加PHP扫码识别,为了找到好用的扫描应用,我试了这几款 App
  20. 打开设备管理器出现MMC.EXE被阻止解决办法

热门文章

  1. EXCEL 制作三维散点图
  2. android 11鼠标右键返回功能(已验证)
  3. C++ STL之命名空间、函数模板、类模板
  4. 基于java的滑雪场学具租赁管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  5. 浏览器中访问本地文件for mac
  6. 【开学季】给计算机专业后辈们的一些忠告...
  7. 后台管理页面左侧导航栏
  8. 解决AndroidStudio编译工程长时间卡在Gradle:Build model问题
  9. 抓娃娃机vue版本和jquery版本
  10. 形状因子对禁带的调控