提醒:本文最后更新于 2850 天前,文中所描述的信息可能已发生改变,请仔细核实。
前有《解码转换QQ微信的SILK v3编码音频为MP3或其他格式》这篇文章,在此基础上,添加批量转换的功能。Github项目地址:https://github.com/kn007/silk-v3-decoder,内含Skype Silk Codec。
单文件转换说明,直接看上篇帖子,新版本兼容上版本转换方式,需要注意的是,脚本名称改变了。
多文件批量转换说明如下:
sh converter.sh input_folder output_folder output_format
举例,现在目录input是待转换的音频文件目录,output是音频输出的目录,想将所有silk v3编码格式的音频转换为MP3,那么命令如下:
sh converter.sh input ouput mp3
如此简单。
做这个功能本身也算是有需要吧,但是因为懒,懒得弄,一直拖拖的。
直到收到一封邮件后:
Hi there, I saw your script from github website and found it very useful. thank you! Could you possibly tell me how to convert all audio files in one folder? instead of converting this one by one? Would it be possible to update your script including the above feature please? Many thanks in advance for your tip. kind regards, Jung
既然有需求,就把要求满足了。
几个可能需要做的point:
1.添加转换文件输出是否成功的支持。
2.优化代码。
3.在线版?
转载请注明转自:kn007的个人博客的《[进阶]批量解码转换SILK V3编码音频为其他格式》
好的谢谢!我去找找!
@PHP-Li: 转成功了么,我也是那样的报错
@nodejs_huang: 成功了!
语音混淆 听不清..............一会儿成功一会不成功
./converter.sh a.silk mp3
[Warning] Convert a.silk false, maybe ffmpeg no format handler for mp3.
@9527: ffmpeg无运行权限或者不存在,要么就是没有mp3库。
@kn007: 问题以解决 没有MP3库 感谢!
@9527: 不客气
@kn007: 用java直接执行也会出这个问题,在linux就不会,怎么回事
@gggdfdg: 权限。
@9527: 能否说下你怎么解决的,我也是这个问题
@kn007: 没有mp3库是个什么情况,能否解释下,我安装了lame
@yq: 你是win还是linux,linux我的代码调用的是ffmpeg,ffmpeg是否编译了mp3库,要你自己查看。
@kn007: 编译了的,但还是这个问题,怎么搞
@yq: 我不是问你有没有编译ffmpeg,而是ffmpeg有没有编译mp3模块。
有的话,尝试提权运行脚本。
@kn007: 编译安装了lame,提权运行了,但还是这种情况
@yq: 我还是直说吧,ffmpeg带没带libmp3lame?
你这种回答跟没回答没啥区别。
@kn007: 带了的
@kn007: ffmpeg -i 3ndF.mp3 -ab 64000 -ar 44100 -acodec libmp3lame ceshi1.mp3
可以正常执行
@yq: 你是怎么提权的,是在shell下,还是如何调用的?
@kn007: 在shell 下,直接sudo啊
@yq: 那你只能关闭selinux看看了
@kn007: 还是不行
@yq: 把脚本中ffmpeg的命令后面的忽略错误删掉,看下报什么错
@kn007: 不报错,只有警告
@yq: 去掉忽略输出了没有?
@kn007: 可是我各种配置了呀,在命令行中可以正常使用
@yq: 报错是ffmpeg不被发现
@yq: 包含下ffmpeg的编译目录就行了。
自己搜一下,这些都是很基础的问题。
@kn007: 我自己写了个调用ffmpeg的脚本,可以正常执行
@yq: 脚本里面ffmpeg命令改成绝对路径就好了
....很实用的工具,但是不知道转换出的silk有什么办法可以作为微信语音发出呢
@sawhz: 一般是替换源文件
@kn007: 可以啦,再用微x模块转发语音就可以假装班主任发出去了嘿嘿嘿
linux 版本下编译出来的encoder 编码mp3 为微信语音amr格式,播放是噪音,windows版本的编码为amr播放正常,什么原因,是不是源码未更新
@lake: 先学习一下编码吧。
encoder大大的字在那里,叫silk v3 encoder。
请问amr是silk v3吗?
@kn007: 我在linux下编译你的silk源码出来的encoder 用命令执行encoder编码mp3 加了--tencent参数 最后导入微信 无法播放,amr就是微信语音的格式,用v3decoder转mp3 可以正常转
@lake: 先看说明好吧。
mp3,encoder不支持。只支持pcm,不懂可以看shell脚本。
@kn007: 我用windows图形界面版的可以转mp3为微信语音silk格式,你意思是linux版的不支持mp3 encoder?
@lake: 你能不能看下文档?
ffmpeg,看到了吗?
图形界面的那个程序,还附带了个ffmpeg,看到了吗?
请先学习代码,再去写。
linux,我项目都给了个shell脚本在那了。看不懂英文说明,看代码总看得懂吧。
@kn007: 谢谢,知道了,原来是忘了ffmpeg这个东西了
@lake: 不客气。
@lake: 我才想起,我项目写了中文说明。
大大的“依赖”看到了吗?
@lake: amr后缀就一定是amr么?
我txt还能改成exe呢。看文件头,谢谢
您好,我是ios开发的,silk转pcm之后,比较短的语音没有问题,但是语音长了就只能播放一部分了,请问一下这是怎么回事呀?谢谢
感谢您,从上周五一直干到今天,中间几天各种严重感冒,终于搞明白要干啥了,感谢大佬
你好,我用你的silk2mp3.exe图形界面可以把silk转成MP3,但是在java代码中调用的时候出错,怎么解决啊