Ubuntu系統-FFmpeg安裝及環境配置

来源:https://www.cnblogs.com/helong-123/archive/2022/06/02/16337750.html
-Advertisement-
Play Games

鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 1 簡介 FCN-4是一個應用於音頻自動標註的全捲積神經網路。使用該網路完成音頻標註任務時,首先需要使用python的音頻處理工具包Librosa提取音頻的時頻特征,針對mp3格式的音頻文件,Librosa讀取音頻文件的工作依賴音頻處理後端ffm ...


鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站

1 簡介

FCN-4是一個應用於音頻自動標註的全捲積神經網路。使用該網路完成音頻標註任務時,首先需要使用python的音頻處理工具包Librosa提取音頻的時頻特征,針對mp3格式的音頻文件,Librosa讀取音頻文件的工作依賴音頻處理後端ffmpeg完成,因此要求使用該網路進行mp3音頻自動標註任務的環境具備Librosa依賴庫和ffmpeg。

  • Librosa是一個用於音頻、音樂分析、處理的python工具包,具備時頻處理、特征提取、繪製聲音圖形等常用功能。

  • FFmpeg是處理多媒體內容(如音頻、視頻、字幕和相關元數據)的庫和工具的集合,它包含包含了先進的音視頻編解碼庫,提供了錄製、轉換以及流傳輸音視頻的完整跨平臺解決方案。可以使用它的API對音視頻進行處理,也可以使用它提供的工具,如 ffmpeg, ffplay, ffprobe,來編輯音視頻文件。

以下對Librosa庫和FFmpeg工具在安裝配置過程中的常見問題進行說明。

2 安裝Librosa依賴庫的常見問題

2.1 Librosa庫的安裝

  • 當執行含有“import librosa”語句的python腳本時,報錯如下圖所示,說明需要安裝Librosa依賴庫。

file

  • 命令行執行以下命令安裝librosa庫
    pip install librosa

安裝結果中出現紅框中的提示內容,說明librosa依賴庫安裝成功。

file

2.2 調用librosa包的過程中可能出現的錯誤

安裝好librosa依賴庫後,仍可能存在環境中缺少其他相關依賴的問題,以下給出可能存在的問題及其解決方案

2.2.1 沒有bz2模塊

  • 報錯

報錯“ No modual named ‘_bz2’ ”。如下所示

file

  • 可能原因

出現這個錯誤的原因是由於運行程式所使用的python版本中沒有安裝_bz2庫所致。

通常是由於運行程式使用的是python3.7,但是bz2這個庫是安裝到了python3.6的路徑下,所以找不到。

  • 解決方案

將python3.6裡面的bz2庫拷貝到python3.7下麵。

操作步驟:

1.找到python3.6路徑下的_bz2庫文件,即“_bz2.cpython-36m-x86_64-linux-gnu.so”

ll /usr/lib/python3.6/lib-dynload/

file

2.切換到python3.7對應路徑,將該文件複製到該目錄下

cd /usr/local/python3.7.5/lib/python3.7/lib-dynload/
cp /usr/lib/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so ./

3.修改文件名稱,將"-36m"修改為"-37m"

mv _bz2.cpython-36m-x86_64-linux-gnu.so _bz2.cpython-37m-x86_64-linux-gnu.so
chmod +x _bz2.cpython-37m-x86_64-linux-gnu.so    # (可選)增加該文件的可執行許可權 

現在運行程式所使用的是python3.7的目錄下已經有了bz庫文件

file

說明:

該問題有多種解決方案,只要保證所使用的python版本相關路徑下存在_bz2庫即可。例如可以從網上下載“_bz2.cpython-37m-x86_64-linux-gnu.so”文件,或從任意其他存在該文件的環境中複製到目標環境的相關路徑下即可。

2.2.2 沒有_lzma模塊

  • 報錯

報錯“ No module named ‘_lzma’ ”。如下所示

file

  • 解決方案

請參考上一步驟“2.2.1 沒有bz2模塊”解決,保證所使用的python版本相關路徑下存在lzma庫即可。

file

2.2.3 找不到sndfile庫

  • 報錯“OSError: sndfile library not found”。如下所示。

file

  • 解決方案

命令行執行以下命令安裝sndfile庫

apt-get install libsndfile1

file

file

3 安裝FFmpeg工具的常見問題

Librosa依賴庫安裝配置完成後,在讀取音頻文件的時候可能會觸發“audioread.exceptions.NoBackendError”,如下所示。

file

  • 報錯

audioread.exceptions.NoBackendError

  • 原因

這個問題主要是由於“librosa”音頻處理庫無法直接讀取“mp3”格式的音頻數據,需要調用“ffmpeg”後端讀取音頻文件所致。

具體原因可分為以下兩點

  • 環境中沒有安裝“ffmpeg”。
  • 安裝了“ffmpeg”,但現有環境配置無法指導librosa庫調用處找到“ffmpeg”後端所在。

接下來將給出ffmpeg工具的完整安裝配置過程,可根據環境中已有的配置情況選擇性的完成以下步驟。

3.1 安裝ffmpeg

3.1.1 安裝wget (可選)

ubuntu環境下需要使用wget工具下載ffmpeg的源碼安裝包,因而首先需要下載安裝wget工具(註:也可以在其他環境中下載ffmpeg的源碼安裝包,並將其上傳到目標環境中即可)。

  • 命令行執行以下命令,安裝wget
apt-get install -y wget

3.1.2 安裝ffmpeg

1.下載並解壓安裝包

命令行執行以下命令,下載ffmpeg的源碼安裝包

cd /usr/local/
wget https://johnvansickle.com/ffmpeg/release-source/ffmpeg-4.1.tar.xz

可能存在無法通過認證檢查的情況下載失敗,此時根據提示,命令行中加入取消認證檢查的選項即可,即執行以下命令

wget --no-check-certificate https://johnvansickle.com/ffmpeg/release-source/ffmpeg-4.1.tar.xz

file

下載完成後,當前目錄(/usr/local/)下應該存在“ffmpeg-4.1.tar.xz”這個壓縮包

file

執行以下命令解壓安裝包

tar -xvf ffmpeg-4.1.tar.xz 

解壓完成後,當前目錄(/usr/local/)下將存在“ffmpeg-4.1”文件夾

file

2.執行安裝配置文件。

在當前路徑(/usr/local/)下創建“ffmpeg”文件夾,作為ffmpeg工具的安裝路徑。

mkdir ffmpeg

進入源碼包,“config”程式,完成ffmpeg的安裝配置。

cd ffmpeg-4.1
./configure --enable-shared --prefix=/usr/local/ffmpeg  # --prefix選項指出ffmpeg的安裝路徑

出現以下結果說明配置程式已經執行成功。

file

file

註:執行config程式時,可能會報“nasm/yasm not foun or too old. Use …”的錯,此時需要先安裝yams,然後再重新執行配置程式

file

安裝yasm的命令:

apt-get install yasm 

file

3.執行編譯&安裝指令

執行以下命令,完成ffmpeg程式的編譯和安裝

file

安裝完成後,在配置中指出的安裝路徑(–prefix=/usr/local/ffmpeg)下存在以下內容,則說明ffmpeg安裝成功。

file

3.2 配置環境變數

1.修改環境變數

將ffmpeg的絕對路徑添加到PATH環境變數中,以讓系統能找到ffmpeg的安裝路徑。

vim ~/.bashrc  # 打開系統環境變數配置文件

在文件中添以下內容。

export PATH="/usr/local/ffmpeg/bin:${PATH}"
export LD_LIBRARY_PATH="/usr/local/ffmpeg/lib:{LD_LIBRARY_PATH}"

file

2.無法打開共用庫文件

命令行使用“ffmpeg -h”或“/usr/local/ffmpeg/binffmpeg -h”命令檢測ffmpeg安裝情況時,出現以下內容。

“error while loading shared libraries: libavdevice.so.58: can not open shared object file or directory”

這是由於系統找不到ffmpeg的共用庫所致。

在“/etc/ld.so.conf.d/”路徑下創建文件“ffmpeg.conf”文件,在該文件中寫入“/usr/local/ffmpeg/lib”

vim /etc/ld.so.conf.d/ffmpeg.conf   # 編輯文件,添加內容“/usr/local/ffmpeg/lib”後保存退出
cat /etc/ld.so.conf.d/ffmpeg.conf   # 查看ffmpeg.conf中的內容
ldonfig        # 執行ldconfig命令,使/etc/ld.so.conf.d/目錄下新加入的配置信息生效

file

3.測試是否配置成功

命令行輸入“which ffmpeg” 或 “ffmpeg -h”,出現以下內容,說明ffmpeg已經完全安裝配置成功。

file

3.3 修改庫文件中的後端調用指令

若完成以上配置後,仍報錯“audioread.exceptions.NoBackendError”,考慮以下解決方式。

  • 修改庫文件,指出ffmpeg的絕對安裝路徑。

找到“ffdec.py”所在的位置,打開並編輯該文件,對第33行的內容做如下修改。

將 COMMAND = (‘ffmpeg’, ‘avconv’) 改為 COMMAND = (’/usr/local/ffmpeg/bin/ffmpeg’, ‘avconv’)

file

file

附言

說明:

根據不同環境的已有配置不同,可能遇到的問題會有所不同。即,以上問題可能不會都遇到,也可能會遇到以上沒有列出的問題,若遇到以上未提及的問題,可根據報錯信息在搜索引擎中查找解決方案。

本文轉自:https://blog.csdn.net/qq_39456991/article/details/123346428


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、日誌文件輸出說明 日誌目錄: /nchome/nclogs/servername/ ,其中servername集群時目錄類似為master,ncMem01等。非集群時目錄為:server1(服務名) 模塊 輸出格式 說明 anonymous anony-log.log 業務日誌,如果沒有配置模塊 ...
  • 作者:代碼的色彩 鏈接:https://juejin.cn/post/7062662600437268493 1.前言 你是否對大廠展示的五花八門,花花綠綠的架構設計圖所深深吸引,當我們想用幾張圖來介紹下業務系統,是不是對著畫布不知從何下手?作為技術扛把子的筒子們是不是需要一張圖來描述系統,讓系統各 ...
  • 概念 棧(stack)是一種運算受限的線性表。棧只能從末尾插入或刪除數據。我們把這一端稱為棧頂,對應地,把另一端稱為棧底。 隊列(queue)是一種線性表。它允許在表的某一端進行插入操作,在另一端進行刪除操作。我們把進行刪除操作的一端稱作隊列的隊尾,把進行插入操作的一端稱作隊列的隊首。 實現 註:由 ...
  • Liunx安裝Nacos 一,準備安裝包 github下載點 同時請確認Linux已安裝jdk 二,在/usr/local/目錄下創建一個文件夾用於上傳和解壓Nacos cd /usr/local/ #這裡創建文件夾名字可隨意,解壓後會生成一個名為nacos的文件夾,後續會移動至/usr/local ...
  • 最近通過WPF開發項目,為了對WPF知識點進行總結,所以利用業餘時間,開發一個學生信息管理系統【Student Information Management System】。前三篇文章進行了框架搭建和模塊劃分,後臺WebApi介面編寫,以及課程管理模塊開發,本文在前三篇基礎之上,繼續深入開發學生信息... ...
  • 最近在看 C++ 的虛方法調用實現原理,大概就是說在 class 的首位置存放著一個指向 vtable array 指針數組 的指針,而 vtable array 中的每一個指針元素指向的就是各自的 虛方法,實現方式很有意思,哈哈,現在我很好奇 C# 中如何實現的。 一: C# 中的多態玩法 1. ...
  • OAuth2.0協議 在開始之前呢,需要我們對一些認證授權協議有一定的瞭解。 OAuth 2.0 的一個簡單解釋 http://www.ruanyifeng.com/blog/2019/04/oauth_design.html 理解 OAuth 2.0 https://www.ruanyifeng. ...
  • 文件系統 操作系統就是處理各種數據的,這些數據在硬碟上就是二進位,人類肯定不能直接看懂這些二進位數據,要有一個翻譯器,將這些二進位的數據還原為人類能看懂的文件形式,這個工作就是由文件系統來完成的,文件系統的目的就是實現數據的查詢和存儲,由於使用場合、使用環境的不同,Linux 有多種文件系統,不同的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...