*********************************************前言
一点背景:
当你被sox的编译搞的要摔东西的时候,我们为什么不自己绑架一个wav
我们将用代码一遍遍的,征服它
如果你使用了ffmepg,并且热爱上了,图片+音频->视频,那么,请告诉我,我可以通过调用1次api,来完成 多个图片+多个声音->1个视频 吗?(android调用ffmpeg,是非常慢的,所以,如果你找到了该方法,欢迎告诉我)
我们将说点什么:
1.wav的header,请你热爱PCM
2.wav的裁剪
3.wav的合并
4.silence wav
5.wav的音量调整
6.wav的语速调整
*********************************************正文
关于第1-4点,请参照:图片+音频->视频
关于第5点,
我们为什么要谈第5点,原因,可能有很多,谈谈我的情况:我录制了人声,但是,播起来,声音却非常的小
本质上,调节音量,是对data中的sample进行放大缩小。如,你要提高音量为其3倍,那么,就使每个sample的值变成其3倍
关于第6点
我们为什么要谈第6点,原因,可能有很多(android提供了SoundPool来进行变速播放,所以,为何还要再多此一举呢),谈谈我的情况:我录制了人声,我要将该音频进行变速,然后保存,以在“图片+声音->视频”中用到
本质上,调节语速,就是删除一些sample。如,你要将语速变为其3倍,那么就每3个sample中,删除3-1个sample,保留1个sample。也许,你感觉不靠谱,但我的实验结果还算令人满意
关于第x点
如果你知道如何改变 音色啊 等声音专有的属性,那么请告诉我,或者发布一个开源的API
赠品
关于第5,6点,我提供如下代码,欢迎使用
byte[] data = new byte[1024]; int len = -1; // 变速相关 long count = 0; long readByte = 0; long rightPosition = 0; InputStream fis = {你的源声音文件的is}; FileOutputStream fos = {你的目标文件的fos,之前已经写入了header了,别忘了最后再更新header}; while ((len = fis.read(data)) != -1) { // 你不会将刚刚操纵的每个byte直接写入到fos,那会非常非常的慢 // 给你提供一个解决方法,一次写入bos.toByteArray() ByteArrayOutputStream bos = new ByteArrayOutputStream(); for (int i = 0; i < len; i += 2) { // 变速 long position = readByte + i; if (position == rightPosition) { // 提高音量 int low = data[i] & 0xff; int high = data[i + 1] & 0xff; int value = (high << 8) + low; value *= VOICE_VOLUMN; // if (value < -0x8000) { // value = -0x8000; // } else if (value > 0x7FFF) { // value = 0x7FFF; // } data[i] = (byte) (value & 0xff); data[i + 1] = (byte) ((value >> 8) & 0xff); bos.write(data[i] & 0xff); bos.write(data[i + 1] & 0xff); count++; rightPosition = ((long) (count * VOICE_SPEED)) * 2; } } bos.flush(); fos.write(bos.toByteArray()); fos.flush(); bos.close(); readByte += len; } fis.close(); fos.close();
相关推荐
或许您只是浏览某个网站、安装了某个软件,就发现浏览器设定已经被绑架了,一般常见的绑架方式莫过于强制窜改您的浏览器首页设定、搜寻页设定,现在有了这个工具,可以将所有可疑的程序全抓出来,再让您判断哪个程序...
Hijackthis-首页绑架克星它能够将绑架您浏览器的程序揪出来,并且删除
医院绑架案(五)
实现了两种绑架不属于同进程的窗口的方法,如果同进程则没有什么限制,直接用SetParent而没有什么问题.
JavaScript绑架图片.rar
互联网正在强化职业道德绑架.pdf
被PPT绑架的白领,我们期望用好PowerPoint以后,会议缩短,报告说服力增强,订单成交率提高,但是怎样才能做一份优秀的PPT呢,本文档为你提供解决方案
绑架疑云
买房别被房贷绑架8个还贷方式轻松省大钱.docx
教育不能被权力“绑架”_作文.doc
juggle是一个极简的、组件式的js框架。无依赖,完美闭包,灵活且适合渐进学习,可与任何框架整合。包含(支持冒泡的事件、Tween、MV框架、http、websocket、资源、模块)等组件,按需选择组件,不绑架开发者。.zip,...
爱,不能绑架
交流课件绑架应对.pptx
grain是一个极简的、组件式的RPC框架,灵活且适合渐进学习,可与任何框架整合。同时包含系统通用多线程模型与消息通讯、多对多关系的分布式锁、基于Servlet的HTTP框架、基于系统通用多线程模型的Websocket框架、支持...
小学数学数学神探少女遭绑架
被App绑架的都市生活.pdf
富士康文件被勒索软件“绑架”,一口价3400万美元 法律法规 业务风控 业务安全 数据安全 安全建设
绑架小学生勒索万手机定位绑匪小时.pdf
防范和处置劫持绑架事件工作预案.doc
小学数学数学故事探险故事荒岛历险5绑架