Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【功能请求】: 批量扫描回放增益数据并写入歌曲标签 #293

Open
BenzLeung opened this issue Nov 27, 2024 · 10 comments
Open
Labels
feature New feature or request

Comments

@BenzLeung
Copy link

BenzLeung commented Nov 27, 2024

功能描述

  1. Navidrome 支持mp3和flac的回放增益标签,但是目前至少从中国内地平台获取的歌曲资源都不带回放增益数据。带有回放增益数据的歌曲可以在支持的播放器中实现音量平衡。
  2. 我目前给Navidrome入库一首歌曲,只能使用Foobar2000来扫描回放增益并补充到标签里。要是可以直接用music-tag-web实现这功能就方便了。

p.s.扫描回放增益应该可以用强大的ffmpeg来实现。我抽空可以找找具体的命令行参数。

也许我是回放增益功能的重度用户了。之前在别的项目也发过回放增益相关的issue,供参考:

gitbobobo/StreamMusic#19

Moriafly/SaltPlayerSource#158

@BenzLeung BenzLeung added the feature New feature or request label Nov 27, 2024
@xhongc
Copy link
Owner

xhongc commented Nov 27, 2024

看得出来你是 回放增益功能 的重度用户,在众多项目都提了这个请求,
我理解是:
1,每首歌取的这个指是固定的吗
2,通过工具例如 ffmpeg 计算出后写入到元数据标签就可以生效了吗

@BenzLeung
Copy link
Author

  1. 我没看懂您“固定的”是什么意思。单个mp3或flac都可以写入两个回放增益数据:音轨回放增益、专辑回放增益。其中音轨回放增益大概就是这首歌的音量相对标准音量(89dB)的偏移值。专辑回放增益就是整张专辑的音量相对标准音量的偏移值。工具扫描时,音轨回放增益就是单个文件扫描,专辑回放增益就是把同一专辑所有歌曲一起扫描。如果你的曲库里某个专辑只收录了一首歌曲,那么扫描后,它的音轨回放增益和专辑回放增益数值相等。如果某个专辑你收录了多首歌曲,那么扫描后,它们的音轨回放增益和专辑回放增益数值会有一点儿差别,而它们之间的专辑回放增益数值相等。
  2. 是的,回放增益数据写入标签后,本地播放立即生效,navidrome远程播放需要重新扫描曲库来生效。

@xhongc
Copy link
Owner

xhongc commented Nov 28, 2024

  1. 可能我没描述清楚,“固定“ 意思 歌曲的 回放增益是确定的,是多少就是多少,而听你描述,专辑的回放增益 会根据专辑下的歌曲数新增减少,回放增益值动态计算

@BenzLeung
Copy link
Author

BenzLeung commented Nov 29, 2024

是的。如果我新增一首歌曲,并且我已经有了相同专辑的其他歌曲,那么可以手动重新扫描这张专辑内所有歌曲的回放增益数据并更新。

如果不扫描,就继续用旧的数据来听歌也行,体验差别应该也不会太大。

总的来说,回放增益数据就是存储于歌曲文件ID3里的几个数字,有新歌加入的话可以随时修改更新。

@xhongc
Copy link
Owner

xhongc commented Nov 29, 2024

明白了,
还有个问题:就只有mp3和flac 支持吗?
我在gitbobobo/StreamMusic#19 找到 mp3 的,你有带有回放增益的 flac 文件也发一个给我。谢谢

@BenzLeung
Copy link
Author

張學友 - 05.味道 (原唱 辛曉琪).zip

这是学友在2004年的一个慈善演唱会中的其中一首歌曲。我收录了这整个演唱会的flac。把播放器设定为“使用专辑回放增益”,适合把整个演唱会从头到尾听一遍,这样每首歌曲都是相同数值,音量就不会此起彼伏。而如果设定为“使用音轨回放增益”,就适合跟其他歌曲混着随机播放。

除了mp3和flac,还有苹果音乐的aac格式(文件名后缀可能是aac,mp4,mp4a,m4a实际都是aac)也支持回放增益数据。然后其他音频格式我也不清楚,应该没人会用其他格式存储音乐了吧。

@xhongc
Copy link
Owner

xhongc commented Nov 29, 2024

好的,我研究一下

@xhongc
Copy link
Owner

xhongc commented Nov 29, 2024

image ffmpeg 的命令是:$ ./ffmpeg -i /Users/macbookair/Music/my_music/music/music_lyc/测试格式/增强/何炅_呵呵-栀子花开.mp3 -af replaygain -f null -

为什么 ffmpeg 测的这个值会和 foobar2000 测的不一样呢

@BenzLeung
Copy link
Author

啊??

我也觉得意外,不同程序扫描出来竟然会有差别😂。

不过看数值相差不大,我猜可能像是浮点数精度问题或者还有什么参数没对齐吧。。

既然相差不大,我个人觉得这数值也能接受吧。

@BenzLeung
Copy link
Author

刚刚我试着用谷鸽找找原因,意外发现一个python程序:

https://github.com/kepstin/regainer

看了它的介绍,我才知道回放增益算法竟然也有1.0和2.0的区分。另外它也是调用的ffmpeg,但是并没有使用 replaygain 这个参数,而是自己搞一堆参数获取了音频的音量等级,然后套公式计算。

既然都是python,我感觉大佬你可以不用研究ffmpeg和foobar2000了,直接调用这个程序就完事了?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants