为什么不同播放器播放同一首音乐时长不同?

如题,非常奇怪的问题……

来源:

原视频(BV1VN411y7dx),使用bbdown下载(仅音频与封面)以后,转换MP3,用我那个歌词编辑器编辑了歌词,一切都很完美。

直到……导入到手机里面播放发现了不对劲,歌词和音乐尼玛对不上!

然后开始疯狂调歌词……但是始终觉得不对劲,今天又来电脑上核实,然后发现了惊天神奇现象:11个软件播放同一首歌,有6个不一样的时长……

回顾:

  1. bilibili原视频,3分26秒
  2. ffplay(最标准的东西),3分27秒
  3. mpv(gui版),3分27秒
  4. vlc,3分29秒
  5. win自带的mplayer(理论上稳定的老古董),3分33秒
  6. win10以后的媒体播放器(uwp),3分33秒
  7. firefox,3分28秒
  8. edge(四舍五入算chrome),3分27秒
  9. (手机)椒盐音乐,音乐标签,LRC Editor,均3分27秒[未截图]








总结:

总结个毛球,自己完全不明白啊啊啊!看起来3分27秒是准确的?那3分28和3分26都能理解是小数点进位不准导致的问题,3分33是为啥啊啊啊,因为它我昨晚做的一堆歌词都废了啊啊啊!!! :clown_face:

求救求教,发生的原因是什么?如何能够避免?

另: 有没有别的电脑上的歌词编辑软件……昨天的那个默认调用的是电脑的mplayer……和手机不同步…… :scream:

期待大家在自己手机和电脑设备上测量此歌曲时长…… :face_with_symbols_over_mouth:

用的Bilibili Evolved脚本下载的音频,m4a格式

使用uwp网易云、Dopamine v1、win10自带播放都是3:27

补一下Au:
Snipaste_2023-06-18_15-03-21

我也测试了一下,结果如下

  • 文件获取方式:使用 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 个赞

所以我始终都没明白到底是哪里出的问题,难道是win的mplayer把封面啥的也算了时间?但是我两个同时播放完全没听出来哪里有问题……

另,其实存姐的很多歌都很好听,教主的也是

手动计时看看?

不,我专门试过,它是真的多了好几秒,但我没明白她是哪里多出来的……

1 个赞

mp也是3:27

下载或转mp3出问题了?

downkyi下载的音频信息:
image

用啥转换的呀,看看能不能复现?

不应该啊,我那么信任ffmpeg……我抓紧看看去

!!!真的!m4a原格式在mplayer里面是3.27,转换完成就成了3.33!!!

能够反复复现。

ffmpeg -i “a.m4a” “o.mp3”
是不是没有转码什么的?(不了解的领域……

总结

感谢 @Y_z 找到了关键问题,ffmpeg转换格式所致。(虽然不知道具体原因以及解决的原理,但是确实解决了……)

解决方案

按照讯飞星火的提示将原来简易的命令行更改了以后就没问题了!(仍然不知道原理)

原来:ffmpeg -i "input.m4a" "output.mp3"
现在:ffmpeg -i "input.m4a" -codec:a libmp3lame -qscale:a 2 "output.mp3"

最后

如果大家有人知道原理或者其他更好的解决方法欢迎告诉我!

4 个赞

写在最后:我的BiliAuDown也借此机会改版了,修复了上述bug,仓库如下
(主要用于下载bilibili的音频,视频也可以,并配合ffmpeg提供转码功能)

看了一下 ffmpeg的文档.

默认情况下, 不指定参数的转换, FFmpeg 是根据后缀猜测格式, 使用默认的编码转换.

文档说

ffmpeg has no native MP3 encoder

而 lame是一个独立的且有名的开源mp3编码库.

所以很多播放器会对 lame 支持度比较好.

我感觉这就是原因所在.

2 个赞

哇,长知识了,第一次知道这个东西哎