I-love-study / graiax-silkcoder

A simple silkv3 encoder
BSD 3-Clause "New" or "Revised" License
33 stars 2 forks source link

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

Closed I-love-study closed 2 years ago

I-love-study commented 2 years ago

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

I-love-study commented 2 years ago

突然发现了 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) 会比较好?

I-love-study commented 2 years ago

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

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

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

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

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

synodriver commented 2 years ago

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

I-love-study commented 2 years ago

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

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

synodriver commented 2 years ago

那试试我的pysilkrsilk 很小

synodriver commented 2 years ago

那试试我的pysilkrsilk ~很小~

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