eyeon项目总结 音频转换 amr-mp3 web项目路径实践经验(血泪史)
来点感慨:
不到最后关头总是不想去解决一些较为麻烦的事情,今天解决的问题都是之前项目中的盲点,一直不想去解决。一整天的时间,解决的问题不多,而且没有效率,不过发现的问题不尝试去解决,总结会使问题。所以我就来写博客了,希望大家忽略这段哈,重点在下面。
问题一:音频文件的装换 列子 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项目路径实践经验(血泪史)相关推荐
- 如何将M4A格式音频转换成MP3格式?分享两个方法给大家!
M4A是一种数字音频压缩格式,通常用于存储iTunes Store上的音乐和其他数字音频文件.但是,有时候您可能需要将M4A文件转换为MP3格式以便在其他设备上播放或共享.下面我们将介绍如何将M4A格 ...
- 如何将音频转换成mp3?
如何将音频转换成mp3?mp3是使用最广泛,也最通用的音频格式,不管是在电脑.手机.平板或者其他的播放设备上,都能正常打开播放或者使用.除了mp3外,还有很多其它的音频格式,例如wav.ogg.fla ...
- 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法
title: 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法 tags: grammar_cjkRuby: true --- 右键单击项目,properties-- ...
- 音频转换成mp3格式的步骤
现在的音乐格式的格式可以说非常的多,一般我们在上网的时候是直接在在线听歌曲的,但是随着人们对音乐的热爱,大家就会在一些不同场合时间段来听一些美妙的曲子,所以就需要在自己的手机上面下载歌曲,因为我们的手 ...
- 如何把FLAC音频转换成MP3格式
FLAC是可以保留声音原本音质的音频解码格式,但它会占用大量的硬盘空间,并且大多数MP3播放器都不支持播放这种格式的音乐.所以我们有时候会将FLAC文件转换成MP3文件,这样不仅可以节省很多空间,而且 ...
- 如何把aac格式的音频转换成mp3格式的
AAC,是一种专为声音数据设计的文件压缩格式.相对于mp3,AAC格式的音质更佳,文件更小.但是AAC属于有损压缩的格式,与时下流行的APE.FLAC等无损格式相比音质存在"本质上" ...
- (JAVA)将(acc/m4a)音频转换成Mp3格式
2019独角兽企业重金招聘Python工程师标准>>> 实际工作中有一个需求,就是上传到微信的音频(格式为m4a)在PC浏览器无法播放,需要转码成mp3,然后在PC端播放(其实后来发 ...
- 怎么将千千静听的音频转换成mp3格式?
已经很久不再使用千千静听这个音乐播放器了,现在大家用的最多的就是QQ音乐和网易云音乐,但是今天为什么要写这篇文章呢?原因很简单,无论在哪个播放器上下载格式,如果是要进行转换那么它的方法也都是一样的,因 ...
- 音频转换成mp3的方法
把音频转换为MP3格式是因为MP3格式可以更好地压缩音频文件,减小文件大小,便于存储和传输.此外,MP3格式已成为流行的音频格式之一,许多设备和软件都支持MP3格式,使得MP3格式成为了一种通用的音频 ...
- java项目打成jar和war_maven打包web项目时同时打包为war和jar文件的方法
本文介绍了maven打包web项目时同时打包为war和jar文件的方法,分享给大家,具体如下: 首先在pom.xml文件中指定war的打包方式,war test test war 上述代码在eclip ...
最新文章
- 当你使用微信和 QQ 的时候,请不要忘记 ICQ 这个伟大的公司!
- Google Map API V3开发(5)
- 【JS】执行上下文(ExcecutionContext)
- 【Python自动化运维之路Day2】
- ios html清除缓存,iOS开发之1行代码实现缓存计算及清除缓存
- html添加兄弟元素,jquery插入兄弟节点的操作方法
- 文件压缩——哈夫曼树编码2.0
- Python 科学计算基础 (整理)
- EdrawMax使用方法
- DNS域名解析协议详解
- android版本内存卡,版本等级繁多 教你如何挑选手机内存卡
- GD32IAP升级(BootLoader)
- 中兴机顶盒刷机后服务器连接失败,(四川高安)中兴ba860av2.1t强刷安卓固件包解决刷机到7出错问题...
- Windows商店安装问题已解决 Xbox应用将改善游戏安装
- OpenStack私有云安装配置虚拟机
- 天猫多个商品主图、属性图和细节图分类下载
- Java 14:JDK 14进入GA时的所有新功能
- 计算机的选材标准,计算机材料试验机
- APP加PHP扫码识别,为了找到好用的扫描应用,我试了这几款 App
- 打开设备管理器出现MMC.EXE被阻止解决办法