[Feature]添加对libsndfile的支持以减小所以依赖
I-love-study opened this issue · 8 comments
I-love-study commented
总所周知,graiax-silkcoder 需要 ffmpeg
这样一个庞然大物来进行除了 wave 以外的编解码转换
属与是杀鸡用牛刀
所以为什么不通过 subprocess + pipe 的方法直接调用 lame, flac, aac(neroacc 或者其他), opus 来进行转换呢
I-love-study commented
突然发现了 sox
这样一个自称 "音频处理的瑞士军刀" 的库
几乎支持以上所有东西且体积比较小巧(Win32 只有 5.87Mb (压缩包2.7Mb))
或许可以试着看,不过问题还有些
- 不支持 opus 格式,只支持 ogg 包装的 opus
- 不支持 m4a 包装的 aac
- 最后一次更新是在 2015-02-22
或许直接向用户提供编译好的精简版 ffmpeg (只包含 mp3 amr opus flac ogg aac libsoxr) 会比较好?
I-love-study commented
刚刚又发现了一个有趣的音频库 libsndfile
这是一个用c写的读写音频数据用数据库,支持也比较好。
不过也是有些问题
- 还是不支持 aac,因为有一些关于专利的问题
- libxxx 的属性,就代表了我们极有可能需要跟 C 打交道
(虽然说pypi有现成的库,但是有可能不能逃脱 GIL)
I-love-study commented
现在可以通过两种库来添加对于mp3 flac opus的支持:soundfile 和 soxr
不过问题是:
- 还是不能支持 aac 相关音频,可能给需要塞个
faac
之类的来提供支持? - soundfile 现在暂未支持 mp3 和 opus (支持 mp3 的 pr 在这 python-soundfile#335)
I-love-study commented
pysndfile
也行,很好用
但是在 Windows 上的编译太折磨人了
synodriver commented
可以试试pyav 逃(我写了两个silk库了,pyo3的和cython的都有
I-love-study commented
可以试试pyav
逃(我写了两个silk库了,pyo3的和cython的都有
很有道理,但是我猜他们还是会嫌太大(悲
synodriver commented
synodriver commented