啊啦 作为小白 实在扛不住了 还是决定到论坛上来咨询一下了
涉及 gem:audite
, mpg123
, portaudio
事件描述:我最近在练习 ruby,决定把虾米猜电台写个 ruby 版。我想把 下载进度 和 播放进度 以进度条的形式展现出来,所以我至少需要获取 mp3 的时长,问题就出在这里:
1.虾米的 mp3 文件既有 CBR 又有 VBR
2.audite 这个 gem 计算时间采用的是 Duration = Samples / Samples_per_Frame * time_per_frame
这个公式对于 没有在第一桢后面用 header 记录信息的 CBR 来说,在文件没下载完整之前取到的 Samples 是错误的,于是也就没有办法获得时长
3.当然如果能对 CBR 编码的 mp3 取到 比特率(Bitrate),根据 http header 里面提供的文件大小也是能算出音频时长的,但是各种找资料,还是不知道 mpg123 该如何取得 比特率
由于对音频文件的知识十分有限(都是现学的 ~~o(>_<)o ~~) ,所以也不知道上边的理解对不对 主要是实在找不到思路了 所以拿出来给大家看看,看还能不能再抢救一下,没有要做伸手党的意思哈~
PS:不知道有人发现没,通过 gem 安装的 audite 好像是有点小问题的,不过 github 上边的源码是 ok 的,也不知是不是我打开的方式不对 ~
等回复的时间,我还是去研究下虾米的手机版吧,看看它是怎么处理的,阿门