CCR
1
如题,非常奇怪的问题……
来源:
原视频(BV1VN411y7dx),使用bbdown下载(仅音频与封面)以后,转换MP3,用我那个歌词编辑器编辑了歌词,一切都很完美。
直到……导入到手机里面播放发现了不对劲,歌词和音乐尼玛对不上!
然后开始疯狂调歌词……但是始终觉得不对劲,今天又来电脑上核实,然后发现了惊天神奇现象:11个软件播放同一首歌,有6个不一样的时长……
回顾:
- bilibili原视频,3分26秒
- ffplay(最标准的东西),3分27秒
- mpv(gui版),3分27秒
- vlc,3分29秒
- win自带的mplayer(理论上稳定的老古董),3分33秒
- win10以后的媒体播放器(uwp),3分33秒
- firefox,3分28秒
- edge(四舍五入算chrome),3分27秒
- (手机)椒盐音乐,音乐标签,LRC Editor,均3分27秒[未截图]
总结:
总结个毛球,自己完全不明白啊啊啊!看起来3分27秒是准确的?那3分28和3分26都能理解是小数点进位不准导致的问题,3分33是为啥啊啊啊,因为它我昨晚做的一堆歌词都废了啊啊啊!!!
求救求教,发生的原因是什么?如何能够避免?
另: 有没有别的电脑上的歌词编辑软件……昨天的那个默认调用的是电脑的mplayer……和手机不同步……
期待大家在自己手机和电脑设备上测量此歌曲时长……
Y_z
(Y_z)
2
用的Bilibili Evolved脚本下载的音频,m4a格式
使用uwp网易云、Dopamine v1、win10自带播放都是3:27
补一下Au:
我也测试了一下,结果如下
- 文件获取方式:使用 BBDown 1.5.4 下载,下载参数为
BBDown --audio-only --skip-cover BV1VN411y7dx
- 格式转换工具为 soundconverter,转码参数为
- 输出格式:MP3
- 比特率模式:常数(CBR)
- 品质:高
- 重采样:48 kHz
计算机平台,操作系统是 Linux Mint 21.1 64 位
- DeaDBeeF 1.9.4:3:28
- Celluloid 0.21(基于 mpv):3:27
- ffplay 4.4.2-0ubuntu0.22.04.1:00:03:27.91
- VLC 3.0.16:3:27
- Chromium 113.0.5672.126:3:27
- Audacity 2.4.2:00:03:27:901
虚拟机平台,操作系统是 Windows Server 2003 Enterprise Editon SP2
- 千千静听 5.0.1:3:27.912
- MPC-HC 1.7.13:播放界面显示 03:38,文件属性的 “MediaInfo” 选项卡显示 3分27秒
手机平台,操作系统是 Origin OS 1.0,基于 Android 10
- APlayer 1.6.1.0(
remix.myplayer
):3:27
- Reex 1.8.4(
xyz.re.player.ex
)(基于 mpv):3:37
- CX 文件浏览器 2.0.0(
com.cxinventor.file.explorer
):3:27
综上所述,若是根据我的测试结果,显示的差异更可能是因为应用程序读取音频文件长度的精度有差异,或者在显示音频文件长度时由于四舍五入造成的截断误差。或许同一首歌在不同播放器中显示的长度不同,跟播放器的内核有关。
另外,感谢楼主让我发现了一首好听的歌,也让我回忆起了当年听中文 V 家时的快乐时光 >_<
1 个赞
CCR
4
所以我始终都没明白到底是哪里出的问题,难道是win的mplayer把封面啥的也算了时间?但是我两个同时播放完全没听出来哪里有问题……
CCR
8
不,我专门试过,它是真的多了好几秒,但我没明白她是哪里多出来的……
CCR
12
!!!真的!m4a原格式在mplayer里面是3.27,转换完成就成了3.33!!!
能够反复复现。
ffmpeg -i “a.m4a” “o.mp3”
是不是没有转码什么的?(不了解的领域……
CCR
13
总结
感谢 @Y_z 找到了关键问题,ffmpeg转换格式所致。(虽然不知道具体原因以及解决的原理,但是确实解决了……)
解决方案
按照讯飞星火的提示将原来简易的命令行更改了以后就没问题了!(仍然不知道原理)
原来:ffmpeg -i "input.m4a" "output.mp3"
现在:ffmpeg -i "input.m4a" -codec:a libmp3lame -qscale:a 2 "output.mp3"
最后
如果大家有人知道原理或者其他更好的解决方法欢迎告诉我!
4 个赞
CCR
14
写在最后:我的BiliAuDown也借此机会改版了,修复了上述bug,仓库如下
(主要用于下载bilibili的音频,视频也可以,并配合ffmpeg提供转码功能)
https://github.com/Mikachu2333/BiliAuDown/releases/latest
看了一下 ffmpeg的文档.
默认情况下, 不指定参数的转换, FFmpeg 是根据后缀猜测格式, 使用默认的编码转换.
文档说
ffmpeg
has no native MP3 encoder
而 lame是一个独立的且有名的开源mp3编码库.
所以很多播放器会对 lame 支持度比较好.
我感觉这就是原因所在.
2 个赞