Android Wav音频文件裁剪

article/2025/5/9 0:01:20
最近项目遇到了音频处理的问题,找了很久没找到合适android用的,最后改动了一下某位大佬的代码,放到项目里还是能用的,记录一下/*** 开始裁剪** @param start 开始时间(毫秒)* @param end   结束时间(毫秒)*              <p>*              return  截取成功返回true,否则返回false*/
public static boolean cut(String sourcefile, String targetfile, int start, int end) {try {if (!sourcefile.toLowerCase().endsWith(".wav") || !targetfile.toLowerCase().endsWith(".wav")) {return false;}File wav = new File(sourcefile);if (!wav.exists()) {return false;}long t1 = getWavLength(wav);  //总时长(秒)if (start < 0 || end <= 0 || start >= t1 || end > t1 || start >= end) {return false;}FileInputStream fis = new FileInputStream(wav);long wavSize = wav.length() - 44;  //音频数据大小(44为128kbps比特率wav文件头长度)long splitSize = (wavSize / t1) * (end - start);  //截取的音频数据大小long skipSize = (wavSize / t1) * start;  //截取时跳过的音频数据大小int splitSizeInt = Integer.parseInt(String.valueOf(splitSize));int skipSizeInt = Integer.parseInt(String.valueOf(skipSize));ByteBuffer buf1 = ByteBuffer.allocate(4);  //存放文件大小,4代表一个int占用字节数buf1.putInt(splitSizeInt + 36);  //放入文件长度信息byte[] flen = buf1.array();  //代表文件长度ByteBuffer buf2 = ByteBuffer.allocate(4);  //存放音频数据大小,4代表一个int占用字节数buf2.putInt(splitSizeInt);  //放入数据长度信息byte[] dlen = buf2.array();  //代表数据长度flen = reverse(flen);  //数组反转dlen = reverse(dlen);byte[] head = new byte[44];  //定义wav头部信息数组fis.read(head, 0, head.length);  //读取源wav文件头部信息for (int i = 0; i < 4; i++) {  //4代表一个int占用字节数head[i + 4] = flen[i];  //替换原头部信息里的文件长度head[i + 40] = dlen[i];  //替换原头部信息里的数据长度}byte[] fbyte = new byte[splitSizeInt + head.length];  //存放截取的音频数据for (int i = 0; i < head.length; i++) {  //放入修改后的头部信息fbyte[i] = head[i];}byte[] skipBytes = new byte[skipSizeInt];  //存放截取时跳过的音频数据fis.read(skipBytes, 0, skipBytes.length);  //跳过不需要截取的数据fis.read(fbyte, head.length, fbyte.length - head.length);  //读取要截取的数据到目标数组fis.close();File target = new File(targetfile);if (target.exists()) {  //如果目标文件已存在,则删除目标文件target.delete();}FileOutputStream fos = new FileOutputStream(target);fos.write(fbyte);fos.flush();fos.close();} catch (IOException e) {e.printStackTrace();return false;}return true;
}/*** 根据MediaPlayer获取wav音频时长 ms** @return*/
public static long getWavLength(File file) {MediaPlayer player = new MediaPlayer();try {player.setDataSource(file.getPath());  //recordingFilePath()为音频文件的路径player.prepare();} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}long duration = player.getDuration();//获取音频的时间Log.d("ACETEST", "### duration: " + duration);player.release();//记得释放资源return duration;
}/*** 数组反转** @param array*/
public static byte[] reverse(byte[] array) {byte temp;int len = array.length;for (int i = 0; i < len / 2; i++) {temp = array[i];array[i] = array[len - 1 - i];array[len - 1 - i] = temp;}return array;
}

 

最后如果有兴趣的可以关注一下我的公众号吧,虽然很菜,但是还是渴望成长

 

 


http://chatgpt.dhexx.cn/article/vJL2B6Gr.shtml

相关文章

Android9怎么剪辑音频,音频剪辑铃声制作

音频剪辑铃声制作app是一款可以混剪音乐创作歌曲的客户端应用&#xff0c;音频剪辑铃声制作软件可以任意从视频中提取音频内容&#xff0c;支持拼接混剪&#xff0c;轻松创作想要的铃声。 功能介绍 还在等什么&#xff1f;快来试一下音频剪辑铃声制作吧&#xff01; 在音频剪辑…

premiere pr 裁剪视频音频

1、把视频拖入到序列&#xff0c;放在视频轨道1这里。等下要对此视频进行裁剪操作。 2、那么&#xff0c;裁剪视频的工具是什么呢&#xff0c;看序列左侧这个工具箱。 3、这里有一项&#xff1a;剃刀工具&#xff0c;看箭头所指的工具 4、鼠标点击一下&#xff0c;就能调出该工…

android音频编辑(裁剪,合成)(2)

.. .-..—…-. -.—–..- (“I love you ”莫斯电码)&#xff0c;这是逛知乎的时候看到程序员的表白情书&#xff0c;感觉我们码农情商好高啊&#xff01;哈哈&#xff0c;好了开始搬砖。 上一篇介绍了音频的采集过程。之后产品经理找我谈了话&#xff0c;表示功能跟界面都凑合…

Android 实现音频的裁剪,拼接和混音

Android 实现音频的裁剪&#xff0c;拼接和混音 基本流程 在项目中我们的音频一般都是指的mp3的文件&#xff0c;mp3文件作为一种编码压缩过的文件格式并不能直接对音频的数据进行很好的操作&#xff0c;我们都知道这种压缩过后的文件播放的时候也必须通过解码器才能播放&…

利用Pydub自动分割音频

&#x1f3b5; &#x1f3b5; &#x1f3b5; 当音乐遇上Python&#xff1a;用Pydub自动分割音频 随着短视频应用的普及&#xff0c;越来越多人开始了解并尝试制作自己的短视频作品。而在制作短视频时&#xff0c;背景音乐的选择和使用也是非常重要的一步。很多人喜欢选择一首长…

java音频剪切_Java使用IO流实现音频的剪切和拼接

需求&#xff1a;使用IO流将指定目录下的若干个音频文件的高潮部分&#xff0c;进行剪切&#xff0c;并重新拼接成一首新的音频文件 思路(以两首歌为例)&#xff1a; 第一首歌有一个输入流对象bis1。第二首歌有一个输入流对象bis2&#xff0c;他们公用一条输出流对象bos(在选择…

怎么裁剪音频?这个方法建议收藏备用

如今已然发展成了一个自媒体时代&#xff0c;短视频用户急速剧增&#xff0c;这也使不少人加入了创作视频的队伍。但录制视频容易&#xff0c;后期制作可没那么容易了&#xff0c;例如我们需要为其添加一段背景音乐&#xff0c;但是找不到一首歌的节奏能刚好跟视频中的卡点相结…

音频裁剪软件有哪些?来看看这几个实用软件

在剪辑视频的时候&#xff0c;我们通常会添加一段音乐来丰富视频的内容&#xff0c;但是我们可能只需要音频其中的一小段&#xff0c;剩下的音频需要被裁剪掉。那你们知道怎么裁剪音频&#xff1f;今天我来教你两个简单的音频裁剪技巧&#xff0c;你们走过路过&#xff0c;不要…

android音频裁剪(2)——Wav裁剪

原创不易&#xff0c;请尊重每一位原创&#xff0c;让我们更有分享的动力&#xff0c;转载请注明 转载链接 在android音频裁剪&#xff08;1&#xff09;——MP3裁剪一文中我分享了对mp3文件裁剪方法。在本文中我将分享对另外一种音频格式——wav格式音频的裁剪。不同于mp3格…

音视频系列--音频基本操作(音频裁剪,音频和音频混合,音频和视频混合)

前面介绍了音频的基本原理&#xff0c;这篇文章继续来总结下音频的基本操作&#xff0c;包括裁剪&#xff0c;混音和音频和视频的混合操作。 一、裁剪 下面Demo将一段输入mp3文件&#xff0c;根据startTime和endTime&#xff0c;进行裁剪&#xff0c;先解码成PCM文件,然后转码…

android音频资源,android音频编辑之音频裁剪的示例代码

前言 本篇开始讲解音频编辑的具体操作&#xff0c;从相对简单的音频裁剪开始。要进行音频裁剪&#xff0c;我的方案是开启一个Service服务用于音频裁剪的耗时操作&#xff0c;主界面发送裁剪命令&#xff0c;同时注册EventBus接受裁剪的消息(当然也可以使用广播接受的方式)。因…

android裁剪控件,Android 仿抖音音频裁剪控件

效果图 QQ图片20201126164657.jpg 功能要求:绘制音频效果,音乐播放后进度滚动,控件可拖动,拖动后获取新的起始时间 (后期会加入根据音乐各个时段分贝大小来动态显示音律线的长短) 控件功能实现具体代码: package com.cj.customwidget.widget import android.content.Conte…

如何剪切音乐的一部分?来试试这个方法

音频剪切和合并是音频编辑中常见的操作&#xff0c;它可以用来去除不必要的部分或者将多个音频片段组合成一个完整的作品。在今天的数字化时代&#xff0c;有许多软件和工具可以帮助我们完成这个任务。 那你们知道具体的音频剪切合并的方法是什么吗&#xff1f;如果还不太清楚…

如何裁剪音频文件?裁剪音频的方法有什么?

通常我们在剪辑视频时&#xff0c;为了让视频更加有感染力&#xff0c;我们会加上各种各样的音频丰富视频的内容&#xff0c;而且在选取音频时&#xff0c;一般都是会采用它的高潮部分。那么如何裁剪音频文件来达到想要的效果呢&#xff1f;裁剪音频的方法又有什么&#xff1f;…

常用停用词表整理(哈工大停用词表,百度停用词表等)

辣鸡CSDN https://github.com/goto456/stopwords https://zhuanlan.zhihu.com/p/30002654 转载于:https://www.cnblogs.com/0n-the-way/p/10544285.html

文本分析--停用词集合(结合哈工大停用词表、四川大学机器智能实验室停用词库、百度停用词表等)

文本分析过程中&#xff0c;中文文本分析是一个非常重要的环节&#xff0c;而停用词表的选择也是非常关键的&#xff0c;网络流行了多种版本的停用词表&#xff0c;都具有各自的特点&#xff0c;现在对网络流行的多种停用词表继续去重处理&#xff0c;综合实现新的停用词表。 …

【python】构建停用词表(文末附链接)

构建停用词表 构建停用词表是数据预处理的必要步骤&#xff0c;可以减小不必要的开销。 哈工大、百度、川大等停用词表见GitHub链接&#xff1a;https://github.com/goto456/stopwords 经实验和观察证明&#xff0c;’cn_stopwords.txt‘文件的停用词大多是否定词&#xff1…

stopwords.txt中英文数据集,四川大学机器智能实验室停用词库,哈工大停用词表,中文停用词表,百度停用词表百度网盘下载

今天找stopwords.txt数据集找了好长时间&#xff0c;真是气死了&#xff0c;好多都是需要金币&#xff0c;这数据集不是应该共享的么。故搜集了一些数据集&#xff0c;主要包括四川大学机器智能实验室停用词库,哈工大停用词表,中文停用词表,百度停用词表和一些其他的stopword.t…

python停用词表整理_python停用词表

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! stop_words:设置停用词表,这样的词我们就不会统计出来(多半是虚拟词,冠词等等),需要列表结构,所以代码中定义了一个函数来处理停用词表...前言前文给大家…

python文本分析--停用词表的使用

之前听说停用词表&#xff0c;没有上手使用过&#xff0c;真正操作的时候发现有很多东西没有学透彻。这里总结一下&#xff0c;去停用词的思想&#xff1a;在原始文本集中去掉不需要的词汇&#xff0c;字符。虽然有通用的停用词表&#xff0c;但是如果想提高后续的分词效果&…