java音频格式转码
APP端录制的音频不是mp3,在audio标签无法播放,直接转为mp3就可以咯
package com.video.util;import org.bytedeco.javacpp.avcodec;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FFmpegFrameRecorder;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.FrameGrabber;
import org.bytedeco.javacv.FrameRecorder;
import org.bytedeco.javacv.FrameRecorder.Exception;/*** 音频参数转换(包含采样率、编码,位数,通道数)* */
public class AudioConvert {/*** 通用音频格式参数转换* * @param inputFile* -导入音频文件* @param outputFile* -导出音频文件* @param audioCodec* -音频编码* @param sampleRate* -音频采样率* @param audioBitrate* -音频比特率*/public static void convert(String inputFile, String outputFile, int audioCodec, int sampleRate, int audioBitrate,int audioChannels) {Frame audioSamples = null;// 音频录制(输出地址,音频通道)FFmpegFrameRecorder recorder = null;//抓取器FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFile);// 开启抓取器if (start(grabber)) {recorder = new FFmpegFrameRecorder(outputFile, audioChannels);recorder.setAudioOption("crf", "0");recorder.setAudioCodec(audioCodec);recorder.setAudioBitrate(audioBitrate);recorder.setAudioChannels(audioChannels);recorder.setSampleRate(sampleRate);recorder.setAudioQuality(0);recorder.setAudioOption("aq", "10");// 开启录制器if (start(recorder)) {try {// 抓取音频while ((audioSamples = grabber.grab()) != null) {recorder.setTimestamp(grabber.getTimestamp());recorder.record(audioSamples);}} catch (org.bytedeco.javacv.FrameGrabber.Exception e1) {System.err.println("抓取失败");} catch (Exception e) {System.err.println("录制失败");}stop(grabber);stop(recorder);}}}public static boolean start(FrameGrabber grabber) {try {grabber.start();return true;} catch (org.bytedeco.javacv.FrameGrabber.Exception e2) {try {System.err.println("首次打开抓取器失败,准备重启抓取器...");grabber.restart();return true;} catch (org.bytedeco.javacv.FrameGrabber.Exception e) {try {System.err.println("重启抓取器失败,正在关闭抓取器...");grabber.stop();} catch (org.bytedeco.javacv.FrameGrabber.Exception e1) {System.err.println("停止抓取器失败!");}}}return false;}public static boolean start(FrameRecorder recorder) {try {recorder.start();return true;} catch (Exception e2) {try {System.err.println("首次打开录制器失败!准备重启录制器...");recorder.stop();recorder.start();return true;} catch (Exception e) {try {System.err.println("重启录制器失败!正在停止录制器...");recorder.stop();} catch (Exception e1) {System.err.println("关闭录制器失败!");}}}return false;}public static boolean stop(FrameGrabber grabber) {try {grabber.flush();grabber.stop();return true;} catch (org.bytedeco.javacv.FrameGrabber.Exception e) {return false;} finally {try {grabber.stop();} catch (org.bytedeco.javacv.FrameGrabber.Exception e) {System.err.println("关闭抓取器失败");}}}public static boolean stop(FrameRecorder recorder) {try {recorder.stop();recorder.release();return true;} catch (Exception e) {return false;} finally {try {recorder.stop();} catch (Exception e) {}}}
}
首先得引入依赖了
<dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>1.4.1</version> </dependency> <dependency><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId><version>1.4.1</version> </dependency> <dependency><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>opencv-platform</artifactId><version>3.4.1-1.4.1</version> </dependency> <dependency><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>ffmpeg-platform</artifactId><version>3.4.2-1.4.1</version> </dependency>
java音频格式转码相关推荐
- java 时间格式转码,处理时间后多个0,
java 时间格式转码,处理时间后多个0问题 代码方法: /*** 日期格式字符串转换* @param date_str 字符串日期* @return String*/public static St ...
- java 音频格式_java – 音频格式的转换
我在转换WAV文件的音频格式时遇到了麻烦. 我正在录制麦克风的声音,声音按以下格式录制: PCM_SIGNED 44100.0 Hz,16位,单声道,2字节/帧 我想将上面的格式转换为 ULAW 80 ...
- java 音频视频转码
以下程序没有对命令执行结果进行任何解析处理,如要解析,请自行处理 使用的工具为ffmpeg,在windows下非常方便,直接将exe文件放在指定文件夹下即可,linux需要安装 安装命令有一些地方需注 ...
- java任意音频格式转换MP3格式
写在前面 Java音频视频编码器,本文实例将任何音频格式转换为MP3格式 您还可以调整音频频大小,更改其大小和比例等 本文实例实用于任何window,macos,linux操作系统 使用此项目只需要, ...
- Java使用ffmpeg进行音频格式转换
ffmpeg相关文章网址(用于记录一些好的文章地址~) ffmpeg命令详解 https://blog.csdn.net/zzcchunter/article/details/68060989 jav ...
- Java转化音频格式 m4a-wav
Java转化音频格式m4a->wav 安装ffmpeg 案例代码: public static String conversionormat(String fileName) {String w ...
- Java实现音频格式转换 WAV---mp3,可使音频压缩
最近做的一个小项目中,师兄安排的任务,要实现录音然后保存文件,实现网络传输,然后我用初学的java实现了一个录音机的功能(见前面的博客),但是windows录音默认保存的格式是WAVE,后缀是WAV, ...
- java 转换音频格式_音频格式转换
我在转换WAV文件的音频格式时遇到麻烦. 我正在从麦克风录制声音,并且声音以以下格式录制:PCM_SIGNED 44100.0 Hz,16位,单声道,2字节/帧 我想将上述格式转换为ULAW 8000 ...
- 融云 AMR(Aduio) 播放 AMR 格式 Base64 码音频
1.必备资料 github AMR 开源库 :https://github.com/jpemartins/amr.js 用心把这个项目看一遍,对于我下面说的话,可以忽略啦,代码是最好的文章,哈哈~~ ...
最新文章
- 64位系统上安装apache
- 七、Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程(上)
- 感恩节祝福html,感恩节祝福英文
- aspen怎么做灵敏度分析_数据分析终极难题:数据分析怎么做才能驱动业务?
- sap模块有哪些_SAP那些事-实战篇-21-关于COPA模块的总结
- linux下安装mysql_Linux下安装mysql-8.0.20的教程详解
- mySQL和oracle的数据类型区别
- C/C++ C# unity经常使用的一些快捷键
- linux信号灯超时时间已到,急!!信号灯超时时间已到错误又出来了!!!!
- 冯.诺依曼计算机结构要点
- JumpServer登录提示连接WebSocket失败
- python画结构图_【实战案例】五分钟!用python绘制系统架构图
- 安卓开发:使用手机拍照功能
- 玩转CSDN:你离写一篇高逼格文章就还差几个工具而已
- 双面女间谍第一至五季/全集Alias迅雷下载
- Symfony2浅析
- 360手机n4s骁龙版 html,360手机N4S骁龙版:低价高配标杆
- 生么用C语言函数做万年历菜单,用C语言如何编写“万年历”
- 计算机vb知识点,2020年全国计算机二级VB复习知识点:常用内部函数
- 如何彻底卸载360安全卫士
热门文章
- 舒原林常用工具箱1.0
- 体育生考大学能学计算机专业吗,体育生可以报考的大学和专业有哪些
- 【附源码】计算机毕业设计SSM献血管理系统
- 你认为应该怎么突破可控核聚变的技术难点
- 美语音标 [ɪ]在下列情况要发[i]的音
- 2022年奢侈品行业研究报告
- JAVA花布的特点_什么是蓝印花布 蓝印花布特点
- 【SPFA】最长路(洛谷)
- CSDN如何查看自己关注的博客专栏
- 华硕z97不识别m2固态_安全解决方案:华硕Z97-A主板无法识别Intel M.2 NVME SSD的解决方案...