使用Java分离音频左右声道

使用Java分离音频左右声道

1.音频属性相关

音频采样所得的PCM都含有三个要素:声道(channel)、采样率(sample rate)、采样位数、时长。

1.1.声道

记录声音时,如果每次生成一个声波数据,称为单声道;每次生成两个声波数据,称为双声道(立体声)。单声道的声音只能使用一个喇叭发声,双声道的PCM可以使两个喇叭同时发声(一般左右声道有分工),更能感受到空间效果。

1.2.采样率

单位时间内采集的样本数,即:采样周期的倒数,指两个采样之间的时间间隔。采样频率越高,声音质量越好,但同时占用的带宽越大。一般情况下,22KHz相当于普通FM的音质,44KHz相当于CD音质,目前的常用采样频率都不超过48KHz。

1.3.采样位数

表示一个样本的二进制位数,即:每个采样点用多少比特表示。计算机中音频的量化深度一般为4、8、16、32位(bit)等。例如:采样位数为8 bit时,每个采样点可以表示256个不同的采样值,而采样位数为16 bit时,每个采样点可以表示65536个不同的采样值。采样位数的大小影响声音的质量,采样位数越多,量化后的波形越接近原始波形,声音的质量越高,而需要的存储空间也越多;位数越少,声音的质量越低,需要的存储空间越少。一般情况下,CD音质的采样位数是16 bit,移动通信是8 bit。

1.4.帧

音频在量化得到二进制的码字后,需要进行变换,而变换(MDCT)是以块为单位(block)进行的,一个块由多个(120或128)样本组成。而一帧内会包含一个或者多个块。帧的常见大小有960、1024、2048、4096等。一帧记录了一个声音单元,它的长度是样本长度和声道数的乘积。FFmpeg中 AVFrame 结构体中的 nb_samples 代表的就是一帧中单个声道的音频样本数量。

数字音频文件大小(Byte) = 采样频率(Hz)× 采样时长(S)×(采样位数 / 8)× 声道数(单声道为1,立体声为2)

2.FFmpeg介绍

FFmpeg 是一个专业的多媒体框架,能够解码、编码、转码、复用、解复用、流式传输、过滤和播放几乎所有格式的媒体文件。 其核心就是 FFmpeg 程序本身,是一个基于命令行的视频和音频处理工具,多用于视频转码、基础编辑(修剪和合并)、视频缩放、后期效果制作等场景。

ffmpeg -i <inputfile> -hide_banner

2.1.FFmpeg 常用操作

`ffmpeg -i ``

  • 1.转码

$ ffmpeg -i input.avi output.mp4

  • 2.提取音频

$ ffmpeg -i input.mp4 output.mp3

  • 3.调整分辨率
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java使用FFmpeg分离MP4中的音频,可以使用FFmpeg的命令行工具来实现。首先,你需要确保你的系统已经安装了FFmpeg。 下面是一个示例的Java方法,用于使用FFmpeg命令行工具来分离MP4文件中的音频: ```java import java.io.IOException; public class FFmpegUtils { public static void extractAudioFromMp4(String srcFile, String targetFile) throws IOException { String ffmpegCommand = "ffmpeg -i " + srcFile + " -vn -acodec copy " + targetFile; Process process = Runtime.getRuntime().exec(ffmpegCommand); // 等待FFmpeg命令执行完毕 try { process.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } // 检查FFmpeg命令是否执行成功 if (process.exitValue() != 0) { throw new IOException("FFmpeg command failed"); } } } ``` 在上面的示例代码中,`srcFile`是原始的MP4文件路径,`targetFile`是目标音频文件路径。该方法会使用FFmpeg命令行工具执行命令`ffmpeg -i 输入文件路径 -vn -acodec copy 输出文件路径`来分离MP4的音频流并保存为目标音频文件。 你可以将上述代码添加到你的Java项目中,并使用`FFmpegUtils.extractAudioFromMp4`方法来分离音频。 请注意,为了能够成功执行该方法,你需要确保系统中已经正确安装了FFmpeg,并且FFmpeg命令行工具在系统的环境变量中可用。 参考资料: 上一篇文章谈到音频剪切、混音、拼接与转码,也详细介绍cMake配置与涉及FFmpeg... 链接:https://pan.baidu.com/s/1tqPF65xKlWOE3F6x00HLxQ 提取码:ruzy

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值