首页 > 编程语言 >音乐格式转换:java代码实现

音乐格式转换:java代码实现

时间:2024-05-12 22:31:13浏览次数:28  
标签:java dstFormat basicDir 代码 File new audio 音乐格式 String

 1 package util;
 2 
 3 import ws.schild.jave.*;
 4 import java.io.File;
 5 
 6 /*
 7 音乐格式转换
 8  <dependency>
 9     <groupId>ws.schild</groupId>
10     <artifactId>jave-core</artifactId>
11     <version>2.4.4</version>
12 </dependency>
13 <dependency>-->
14     <groupId>ws.schild</groupId>-->
15     <artifactId>jave-native-win64</artifactId>-->
16     <version>2.4.4</version>-->
17 </dependency>-->
18  */
19 public class musicFactoryChange {
20     // 将文basicDir文件夹下的文件都转为dstFormat格式
21     public static void audioFormatConversion(String basicDir,String dstFormat){
22         AudioAttributes audio = new AudioAttributes();
23         if(dstFormat.equals("wav")) {
24             audio.setCodec("pcm_s16le");
25         }else if(dstFormat.equals("mp3")) {
26             audio.setCodec("libmp3lame");
27         }else if(dstFormat.equals("amr")){
28             audio.setCodec("libvo_amrwbenc");
29         }
30         audio.setBitRate(16000);
31         audio.setChannels(1);
32         audio.setSamplingRate(16000);
33         //Encoding attributes
34         EncodingAttributes attrs = new EncodingAttributes();
35         attrs.setFormat(dstFormat);
36         attrs.setAudioAttributes(audio);
37 
38         File dir = new File(basicDir);
39         String[] files= dir.list();
40         // 将输出都保存在basicDir\\output\\下
41         if(files != null){
42             File dstDir = new File(basicDir+"output");
43             dstDir.mkdir();
44         }
45 
46         int cnt = 0;
47         for(String fileName:files){
48             // 跳过文件夹,只处理文件
49             if(new File(basicDir+fileName).isDirectory()){
50                 continue;
51             }
52             // 截取"xxx.amr"小数点前的所有字符串
53             String[] substrs = fileName.split("\\.");
54             String substr = substrs[0];
55 
56             // 定义输入的文件和输出的文件
57             File sourceFile = new File(basicDir+fileName);
58             File targetFile = new File(basicDir+"output\\"+substr+"."+dstFormat);
59 
60             // 编码格式转换
61             try {
62                 Encoder encoder = new Encoder();
63                 encoder.encode(new MultimediaObject(sourceFile), targetFile, attrs);
64             }catch (Exception e){
65                 System.out.println("err,fileName: "+sourceFile);
66                 e.printStackTrace();
67             }
68             System.out.println("suc,sourceFile: "+sourceFile);
69             System.out.println("suc, : "+ ++cnt);
70         }
71     }
72 
73     public static void main(String[] args){
74         audioFormatConversion("F:\\afile\\","mp3");
75     }
76 
77 }

 

标签:java,dstFormat,basicDir,代码,File,new,audio,音乐格式,String
From: https://www.cnblogs.com/jinziguang/p/18188315

相关文章

  • CodePen 的国内替代「笔.COOL」,一个功能完备、使用便捷的在线HTML代码编辑和作品分享
    笔.COOL,是一个在线HTML代码编辑和作品分享平台。笔.COOL提供了一个在线的HTML、CSS和JavaScript代码编辑器。无需任何安装,你只需打开网站,就可以开始编写前端代码。编辑器支持代码高亮、自动补全等功能,提高编码效率。笔.COOL还提供了实时预览功能,预览界面会随着你的代码更......
  • 实验4:代码审查
    一、实验题目:代码审查二、实验目的1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查;2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。三、实验内容1、IDEA环境和PyCharm环境二选一;IDEA环境(1)预先准备在IDEA环境下实现对输入的n个整数进行......
  • JavaScript中的 '===' 和 '=='
    在JavaScript中,== 和 === 都是用于比较值的相等性的运算符,但是它们的行为略有不同。== 运算符用于比较值的相等性,而不考虑它们的数据类型。这意味着如果两个值的值相等,即使它们的数据类型不同,它们也会被认为是相等的。例如,== 会将字符串 "123" 与数字 123 视为相等。......
  • 多版本同时维护的 Bug 修复源代码保存方案
    问题描述在日常维护系统的过程中,我们经常需要修复他人提交的Bug(因为自己写的都是feature嘛)。对于单个线上版本的项目,我们可以轻松地创建一个bug修复分支,修复完成后再将其合并到主分支即可。然而,当系统同时存在多个线上版本时,比如V1.0.1、V1.0.2、V1.0.3、V1.1.0等,或者需......
  • reka.ai works代码
    抓包用authorization作为key传入模型:reka-core,reka-flash,reka-edge addEventListener('fetch',event=>{event.respondWith(handleRequest(event.request))})constencoder=newTextEncoder();asyncfunctionhandleRequest(request){if(request.m......
  • 代码随想录算法训练营第四天 | 23.两l两交换链表中的节点 19.删除链表的倒数第N个节点
    23.两两交换链表中的两个节点题目链接文章讲解视频讲解时间复杂度o(n)空间复杂度o(1)tips:画图,并将每一步操作用伪代码写出来,然后将代码理顺可以避免修改代码的麻烦初始化的时候就要将previous初始化为current的前一个节点,这样可以保证循环的第一步满足循环要求cla......
  • 代码随想录算法训练营第第二天 | 24. 两两交换链表中的节点 、19.删除链表的倒数第N
    两两交换链表中的节点用虚拟头结点,这样会方便很多。本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。题目链接/文章讲解/视频讲解:https://programmercarl.com/0024.两两交换链表中的节点.html/***Definitionforsingly-li......
  • Java面试题:线程池内“闹情绪”的线程,怎么办?
    在Java中,线程池中工作线程出现异常的时候,默认会把异常往外抛,同时这个工作线程会因为异常而销毁,我们需要自己去处理对应的异常,异常处理的方法有几种:在传递的任务中去处理异常,对于每个提交到线程池中的执行的任务,可以提前通过异常进行捕获,这样即便出现了异常,也不会影响线程池中的......
  • 数据段和代码段相关
    1、实际上,对于在STM32F103这类资源紧缺的单片机芯片中:代码段保存在Flash上,直接在Flash上运行(当然也可以重定位到内存里)数据段暂时先保存在Flash上,然后在使用前被复制到内存里(只读数据段(ROdata)不复制)函数入口地址、函数参数、临时变量、const修饰的局部常量在运行到对应代码......
  • 代码(CODE)到二进制(BIN)文件的编译过程
    这些步骤将源代码转换成可以在目标硬件上执行的机器代码。以下是这个过程的一般描述:预处理(Preprocessing):源代码(如.c、.cpp、.s等)首先被预处理。预处理器处理源文件中的宏定义、条件编译指令、包含指令(如#include)等。预处理器的输出通常是一个.i或.ii文件,它包含了所有宏替......