[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,每天至少一篇技術文章,適合技術點滴積累,利用瑣碎時間學習技術的人。

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