I-love-study/graiax-silkcoder

[Feature]添加对libsndfile的支持以减小所以依赖

I-love-study opened this issue · 8 comments

总所周知,graiax-silkcoder 需要 ffmpeg 这样一个庞然大物来进行除了 wave 以外的编解码转换
属与是杀鸡用牛刀
所以为什么不通过 subprocess + pipe 的方法直接调用 lame, flac, aac(neroacc 或者其他), opus 来进行转换呢

突然发现了 sox 这样一个自称 "音频处理的瑞士军刀" 的库
几乎支持以上所有东西且体积比较小巧(Win32 只有 5.87Mb (压缩包2.7Mb))
或许可以试着看,不过问题还有些

  1. 不支持 opus 格式,只支持 ogg 包装的 opus
  2. 不支持 m4a 包装的 aac
  3. 最后一次更新是在 2015-02-22

或许直接向用户提供编译好的精简版 ffmpeg (只包含 mp3 amr opus flac ogg aac libsoxr) 会比较好?

刚刚又发现了一个有趣的音频库 libsndfile
这是一个用c写的读写音频数据用数据库,支持也比较好。
不过也是有些问题

  1. 还是不支持 aac,因为有一些关于专利的问题
  2. libxxx 的属性,就代表了我们极有可能需要跟 C 打交道
    (虽然说pypi有现成的库,但是有可能不能逃脱 GIL)

现在可以通过两种库来添加对于mp3 flac opus的支持:soundfilesoxr
不过问题是:

  1. 还是不能支持 aac 相关音频,可能给需要塞个 faac 之类的来提供支持?
  2. soundfile 现在暂未支持 mp3 和 opus (支持 mp3 的 pr 在这 python-soundfile#335

pysndfile 也行,很好用
但是在 Windows 上的编译太折磨人了

可以试试pyav 逃(我写了两个silk库了,pyo3的和cython的都有

可以试试pyav 逃(我写了两个silk库了,pyo3的和cython的都有

很有道理,但是我猜他们还是会嫌太大(悲

那试试我的pysilkrsilk 很小

那试试我的pysilkrsilk 很小

一个可以接受File-like-object, 另一个很快(