将flac音乐文件同步到ogg vorbis(或保持有损状态)

brutha的Python项目详细描述


说明

brutha是声音转换工具彻底失败的答案。

它将完美地转码无损文件或复制有损文件, 到提供的目录,具有“同步”行为。

通过仔细保存文件的时间戳,它还允许 易于在其他地方同步,从而避免任何无用的传输。

由于ogg容器使用了格式,在将flac转换为ogg vorbis的过程中没有丢失任何标记。

由于代码转换需要大量的cpu时间,因此运行 尽可能多的工作并行。布鲁塔会尽量利用 功能强大、经过时间考验的工具(gnu make,gnu parallel, 或者类似的实现)。 它不完美,但足够好,同时保持简单。

据我们所知,没有其他解决方案可以完全做到:

  • 避免再次编码先前运行时已处理的文件
  • 仅转换无损文件(没有有损到有损)
  • 保留目录结构
  • 处理大量文件
  • 处理并行作业执行(而不是崩溃)
  • 使用正确的ogg vorbis设置(设置质量而不是平均比特率)
  • 保证使用最高质量的重采样算法
  • 使用硬链接或回流链接节省有损文件的空间
  • 不是烦人的图形用户界面

综上所述,brutha是一款专为影迷量身定制的音乐转换器, 他们想把巨大的收藏转换成更便携的目的地, 以最高的质量/尺寸比。

布鲁塔非常简单,依靠巨人的肩膀: flac、ogg vorbis、sox、python、诱变剂、gnu make、gnu parallel、bash等。

要求

第一个是空间。既然您可以在本地存储所有源文件,我们假设您 也可以在本地存储较小的目标文件。或者, 您将能够同步到便携式播放器、远程文件系统(nfs、sshfs等)。 除了低性能之外没有其他问题。

软件需求

可选:

用法

brutha [options] SOURCE DESTINATION

brutha -h为所有可用选项提供帮助。

不需要安装就可以运行python -m brutha来使用它。

默认值

brutha尝试检测您有多少内核 (运行brutha -h检查-j的默认值)。 它还尝试使用并行方法 (makeparallel而不是sh)如果可用。

默认情况下,它不会运行或删除任何内容;当您有经验时 使用它,您可能会用-x(execute)和-d(delete)调用它。

示例

典型的用法是:

brutha -d -x -q6 -R44100 -B16 ~/Music /mnt/portable_music_player/Music

当大多数便携式播放器无法处理时,这将音乐调低至16/44 24/96井(-R44100-B16),以合理的质量将flac编码为ogg(-Q6)。 删除旧的不需要的文件(-d),并立即执行命令(-x)。

建议

由于编码占用了大量CPU,所以应该以低优先级启动它。 最简单的方法是运行nice -n19 brutha,而不是只运行brutha

更改

  • 1.1.1
    • 用目录遍历修复一些角落的情况。
  • 1.1.0
    • 添加sox选项以防止剪切。
    • 添加创建硬链接或回流链接的选项。
    • 如果可用,将parallel设为默认值。
    • 代码和文档改进。
    • 支持较新的并行版本。
  • 1.0.2
    • 代码改进。
    • 在命令行帮助中显示默认值。
  • 1.0.1
    • 修正错误。

未来

brutha被视为功能完成。 Python3支持正在等待诱变剂。

如果您需要帮助,以下是一些可能性:

  • 支持其他格式(目前只有flac到ogg vorbis,ogg vorbis和mp3是精确副本)。
  • 使诱变剂成为可选(仅用于频率/位深度检查)。
  • python 3端口诱变剂
  • 支持向下混合(例如5.1到2)

捐款可以以git补丁的形式发送到laurent@bachelier.name

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java两个构造函数?   java for(inti:x)做什么?   java如何将一个bean的构造函数参数传递给嵌套bean   java从易趣链接提取项目ID   java多线程BufferedReader   安卓全新应用程序在R.java中抛出“语法错误,插入“}”以完成类体”   java Spring启动依赖注入请求范围的bean   java给定的时间,然后约定和异常处理。和莫基托和朱尼特在一起   与Android Studio的java Oracle数据库连接   在web服务器(Heroku)上承载可运行jar文件(Discord bot)的java   java如何每隔n秒在imageview中更改图像   java不理解“volatile”关键字   java使用JPA编写自定义SQL查询   java如何使用filechannel作为参数来编写对象