现在有个需求是: 需要将含有两个 channel 的 wav 文件转为两个单声道文件。使用 ffmpeg 是 ok 的。类似这种命令。
ffmpeg -i test.wav -map_channel 0.0.0 left.wav -map_channel 0.0.1 right.wav
类似 https://trac.ffmpeg.org/wiki/AudioChannelManipulation
但是在 java 里面不知道如何实现,也查了几种方式:
有没有其他方式实现了,没有过多接触过音频处理相关资料
1
fgodt 2019-09-03 21:18:11 +08:00 via Android
看下 wav 格式就行了,标准的 wav 就解个容器而已
|
3
cigarzh 2019-09-03 21:33:01 +08:00 via iPhone
有兴趣就自己造轮子,没兴趣就找个轮子调一调
|
4
FrankHB 2019-09-03 21:37:37 +08:00
…… JNI 调用了啥,比命令行调用开销还大?
|
6
beryl OP @FrankHB 不是这个意思,是说 1.2 这两个目前都不是太想采用。
jni 是没怎么用过, 命令行是需要每台机器都要安装,因此就排除了 |
7
cigarzh 2019-09-03 21:47:04 +08:00 via iPhone
@beryl #5 介不一找一大堆么 https://github.com/sintrb/WaveAccess/ 😂
|
8
luozic 2019-09-04 01:24:30 +08:00 via iPhone
ffmpeg 应该有包装好的啊,GitHub 上搜一下。
|
9
MMMMMMMMMMMMMMMM 2019-09-04 01:25:23 +08:00
如果场景面向 web
可以在 client 浏览器端跑 js 版的 ffmpeg 来转 |
10
lloovve 2019-09-04 07:20:17 +08:00 via iPhone
Pcm 混音啊,简单
|
13
lff0305 2019-09-04 09:41:00 +08:00
老早以前做过类似的
记得 WAV 就是 PCM 加上自己的文件头 楼主可以看下 WAV 的格式,记得挺简单的 要么就是 JNI / JNA |
14
wnpllrzodiac 2019-09-04 09:44:56 +08:00 via Android
wav 自己处理下,应该很快。私信我有偿帮搞下
|
15
jamesliu96 2019-09-04 10:26:49 +08:00 via Android
用 sox 和用 ffmpeg 都行,纯 pcm 的话原生都行,用第三方的话调用没问题啊,带个二进制包就行,不用“需要每台机器都要安装”的,很多视频网站都在采用这种解决方案
|
16
kitten23 2019-09-04 11:46:48 +08:00
正在重写 jcodec 的路过……
ffmpeg 就是最好的轮子。如果有重来的机会,我肯定写 jni 调 ffmepg 而不是找 jcodec 这种方的轮子。 你要自己造轮子的话,wav 头拿掉,pcm 数据读出来然后手动分一下写 2 个 wav 文件就行了 |