[linux+python]获取mp3音频的时长

今天接到一个需求:获取合成音频的时长,提供给前端使用,便于实现音频播放进度的功能。

心想,在python看来,这都不是事,python的第三方库那么丰富,肯定有python库可以实现这个需求的啦,于是上网一搜,真的有很多。但是,往往编程这一行,不是掉坑里,就是在掉坑的路上。

 

最后选择了libroso库,使用到的接口很简单

import librosatime = librosa.get_duration(filename='get_duration_test.mp3')print(time)

运行显示NoBackendError的错误,网上搜索都是说程序没有找到ffmpeg路径的问题,在shell运行

which ffmpeg

 

找到ffmpeg位置在/usr/bin/ffmpeg,于是进入librosa源码,将:

COMMANDS = ('ffmpeg', 'avconv')

 

改为:

COMMANDS = ('/usr/bin/ffmpeg', 'avconv')

 

然而还是报同样的错误。

其实,librosa就有调用ffmpeg的原理在里面,报NoBackendError的错误,无非就是调用ffmpeg时出错了,直接在终端输入ffmpeg,显示

version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16)

 

原因就是没有找到zlib_1.2.9

继续捣鼓查资料,stackoverflow上找到了下载zlib_1.2.9的方法​​​​​​​

# 下载wget https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.9/zlib-1.2.9.tar.gz# 解压sudo tar -xvf zlib-1.2.9.tar.gzcd zlib-1.2.9sudo -s# 编译./configure; make; make installcd /lib/x86_64-linux-gnu# 创建软链接ln -s -f /usr/local/lib/libz.so.1.2.9/lib libz.so.1rm -rf zlib-1.2.9

再次运行脚本,成功。

对liunx系统理解不够透彻,也是慢慢摸索捣鼓,以此记录一下bug。

 

关注公众号:日常bug,每天至少一篇技术文章,适合技术点滴积累,利用琐碎时间学习技术的人。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章