Ubuntu安裝ZLMediaKit

方式一

1、安裝vcpkg

在Ubuntu上安裝vcpkg的步驟如下:

  1. 安裝必要的依賴:

    • 首先,你可能需要安裝cmakeninja-build。你可以使用apt包管理器來安裝它們:

      bash復制代碼sudo apt install cmake ninja-build
      
  2. 下載vcpkg源碼:

    • 使用git克隆vcpkg的源代碼倉庫到你的本地目錄。例如,你可以將其克隆到你的主目錄下:

      bash復制代碼git clone https://github.com/Microsoft/vcpkg.git(訪問不到換git clone https://gitee.com/jackboosy/vcpkg)
      

      這將把vcpkg的源代碼下載到名為vcpkg的目錄中。

  3. 進入源碼目錄:

    • 使用cd命令進入你剛剛克隆的vcpkg目錄:

      bash復制代碼cd vcpkg
      
  4. 運行bootstrap腳本:

    • 在vcpkg目錄中,運行bootstrap腳本來構建vcpkg:

      bash復制代碼./bootstrap-vcpkg.sh
      

      這個腳本將下載并構建vcpkg所需的工具鏈和依賴。

  5. (可選)修改默認構建類型:

    • 如果你不希望vcpkg默認構建庫的debug版本,你可以修改triplets目錄下的x64-linux.cmake文件。在該文件的末尾添加:

      cmake復制代碼set(VCPKG_BUILD_TYPE release)
      

      這將使vcpkg默認構建庫的release版本。

  6. 使用vcpkg:

    • 現在你可以使用vcpkg來安裝和管理C++庫了。例如,要安裝一個庫(比如zlib),你可以運行:

      bash復制代碼./vcpkg install zlib
      
  7. (可選)添加環境變量:

    • 如果你想在系統的任何地方都能使用vcpkg,你可以將其添加到你的環境變量中。這通常是通過修改你的shell配置文件(如~/.bashrc~/.bash_profile)來實現的。添加類似于以下內容的行:

      bash復制代碼export PATH="$HOME/vcpkg/scripts/buildsystems:$PATH"
      

      這假設你已經將vcpkg克隆到了你的主目錄下的vcpkg文件夾中。然后,運行source ~/.bashrc(或你的shell配置文件)來使更改生效。

現在你應該已經成功在Ubuntu上安裝了vcpkg,并可以使用它來安裝和管理C++庫了。

Vcpkg是由Microsoft開發的開源包管理器,用于在不同平臺上安裝和管理C和C++庫。它極大地簡化了Windows、Linux和macOS上第三方庫的購置與安裝過程。Vcpkg維護著一系列常用的C和C++庫,這些庫可以使用Vcpkg獲取和編譯。一旦安裝了Vcpkg,您可以使用它來搜索庫、安裝庫并管理它們的版本,所有這些操作都可以通過命令行界面執行。此外,Vcpkg支持多個平臺,包括Windows、macOS和Linux,可在不同操作系統上一致地管理庫。

Vcpkg擁有大量開放源代碼庫和企業就緒功能,旨在通過支持任何構建和項目系統來促進開發過程。它是一個核心的C++工具,使用CMake中的腳本以C++語言編寫,從頭開始設計,以解決C/C++開發人員體驗的獨特難點。Vcpkg是開源的,目前有很多的貢獻者,通過vcpkg團隊及貢獻者共同的努力,vcpkg得以快速發展。

2、安裝ZLMediaKit

https://github.com/ZLMediaKit/ZLMediaKit/wiki/vcpkg%E6%96%B9%E5%BC%8F%E5%AE%89%E8%A3%85zlmediakit

方式二

1、獲取代碼

git clone https://gitee.com/xia-chu/ZLMediaKit

cd ZLMediaKit

2、下載第三方庫

git submodule update --init
  • 安裝gcc、gcc-c++
sudo apt install build-essentialsudo apt install gcc(版本大于等于4.8)sudo apt  install gcc-c++
  • 安裝cmake,要求版本在3.1.7以上

方法1:使用apt命令安裝

這是最簡單直接的方法,但需要注意的是,通過這種方式安裝的CMake版本可能不是最新的。

  1. 打開終端。

  2. 更新你的包列表,確保你安裝的是可用的最新版本:

    bash復制代碼sudo apt update
    
  3. 安裝CMake:

    bash復制代碼sudo apt install cmake
    

方法2:從CMake官網下載預編譯的二進制文件安裝

如果你需要安裝的CMake版本比APT源中提供的版本新,你可以從CMake官網下載預編譯的二進制文件進行安裝。

  1. 訪問CMake官網,下載適合你的系統版本的二進制文件(.sh文件或.tar.gz文件)。
  2. 如果是.sh文件,你可以直接運行它來安裝。
  3. 如果是.tar.gz文件,解壓該文件到一個目錄,然后將其bin目錄添加到你的PATH環境變量中,并更新環境變量。

方法3:源碼編譯安裝

如果你需要安裝最新版本的CMake,或者想要自定義編譯選項,可以選擇源碼編譯安裝。

  1. 從CMake官方網站下載源碼包,例如cmake-3.xx.x.tar.gz

  2. 解壓源碼包:

    bash復制代碼tar -zxvf cmake-3.xx.x.tar.gz
    
  3. 進入解壓后的文件夾,并執行bootstrap腳本進行檢查:

    cd cmake-3.xx.x  
    ./bootstrap
    

    如果出現錯誤,可能需要先安裝

    g++
    

    等依賴:

    bash復制代碼sudo apt-get install g++
    

    然后重新運行

    ./bootstrap
    
  4. 執行

    make
    

    命令進行編譯,可以使用

    -j
    

    選項指定并行編譯的線程數,如

    -j4
    

    表示使用4個核心進行編譯:

    bash復制代碼make -j4
    
  5. 安裝編譯好的CMake:

    bash復制代碼sudo make install
    

完成以上步驟后,你就可以在Ubuntu上使用CMake了。你可以通過運行cmake --version來檢查CMake的版本。

  • 安裝依賴
sudo apt install openssl-develsudo apt install SDL2-devel
  • 安裝ffmpeg,要求版本4.2以上

方法1:使用apt安裝FFmpeg

  1. 更新軟件包列表
    首先,你需要確保你的軟件包列表是最新的。打開終端并輸入以下命令:

    bash復制代碼sudo apt update
    
  2. 安裝FFmpeg
    接下來,你可以使用apt來安裝FFmpeg。在大多數情況下,你只需要安裝ffmpeg包,但如果你也需要其他工具或庫(如ffprobe,一個多媒體流分析器),你可能還需要安裝libav-tools包。

    sudo apt install ffmpeg  
    # 或者,如果你還需要ffprobe和其他工具  
    sudo apt install ffmpeg libav-tools
    
  3. 驗證安裝
    安裝完成后,你可以通過運行以下命令來驗證FFmpeg是否已成功安裝并檢查其版本:

    bash復制代碼ffmpeg -version
    

方法2:從源代碼編譯FFmpeg(可選)

如果你需要FFmpeg的特定版本或定制編譯選項,你可以從源代碼編譯它。但請注意,這通常比使用apt包管理器更復雜。以下是從源代碼編譯FFmpeg的基本步驟:

  1. 獲取源代碼
    首先,你需要從FFmpeg官方網站或Git存儲庫獲取源代碼。
  2. 解壓源代碼
    如果你下載了壓縮的源代碼包(如tar.gz),你需要解壓它。
  3. 配置編譯選項
    使用./configure腳本配置編譯選項。你可以通過傳遞不同的參數來定制你的安裝。
  4. 編譯
    運行make命令來編譯源代碼。
  5. 安裝
    運行sudo make install來安裝FFmpeg。
  • 安裝ZLMediaKit
cd ZLMediaKit
mkdir build
cd build
cmake ..
make -j4
make install
  • 啟動
cd ZLMediaKit/release/linux/Debug
#通過-h可以了解啟動參數
./MediaServer -h
#以守護進程模式啟動
./MediaServer -d &
#以自定義配置文件啟動
./MediaServer -c 配置文件具體地址
(nohup ./MediaServer -c 配置文件具體地址 &)

參考文檔:https://blog.csdn.net/jinhuding/article/details/132189291

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12741.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12741.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12741.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

后端開發面經系列 -- 阿里C++二面面經

阿里C二面面經 公眾號:阿Q技術站 來源:https://www.nowcoder.com/feed/main/detail/fc4a48403b534aafa6a6bce14b542c4e?sourceSSRsearch 1、智能指針? std::shared_ptr: 原理:std::shared_ptr是基于引用計數的智能指…

Stable Diffusion入門使用技巧及個人實例分享--大模型及lora篇

大家好,近期使用Stable Diffusion比較多,積累整理了一些內容,得空分享給大家。如果你近期正好在關注AI繪畫領域,可以看看哦。 本文比較適合已經解決了安裝問題,(沒有安裝的在文末領取) 在尋找合…

【RAG】Linux系統下ppt轉pptx,讀取解析pptx文本數據

前情提要 檢索增強生成(RAG)技術,作為 AI 領域的尖端技術,能夠提供可靠且最新的外部知識,極大地便利了各種任務。在 AI 內容生成的浪潮中,RAG 通過其強大的檢索能力為生成式 AI 提供了額外的知識&#xff…

vue3 動態加載頁面

首先&#xff0c;通過下面代碼告訴編譯器要編譯哪些頁面 static modules import.meta.glob(./views/**/*.vue);然后動態加載函數這樣寫&#xff1a; static asyncLoadView (path: string) > {return defineAsyncComponent({loader: <any>Global.modules[./views/${…

Redis的跳表:高效實現有序集合

在 Redis 中&#xff0c;跳表&#xff08;Skip List&#xff09;是一種常用的數據結構&#xff0c;用于實現有序集合&#xff08;Sorted Set&#xff09;。跳表是一種基于鏈表的數據結構&#xff0c;具有快速的查找、插入和刪除操作&#xff0c;適用于有序集合的實現。 本文將…

分布式搜索——ElasticSeach簡介

一般都用數據庫存儲數據&#xff0c;然后對數據庫進行查詢獲取數據&#xff0c;但是當數據量很大時&#xff0c;查詢效率就會很慢&#xff08;具體下面會講到&#xff09;&#xff0c;所以這種情況下就會使用到ElasticSeach ElasticSeach的基本介紹 ElasticSeach是一 款非常強…

2024重慶高等教育博覽會|2024重慶高教展|全國高等教育博覽會

2024重慶高等教育博覽會|2024重慶高教展|全國高等教育博覽會 第62屆全國高等教育博覽會&#xff08;2024.秋季重慶&#xff09; 時間&#xff1a;2024年11月15-17日 地點&#xff1a;重慶國際博覽中心 組織機構 主辦單位&#xff1a;中國高等教育學會 承辦單位&#xff1a;國藥…

杰發科技AC7801——ADC之Bandgap和內部溫度計算

0. 參考 電流模架構Bandgap設計與仿真 bandgap的理解&#xff08;內部帶隙電壓基準&#xff09; ? ? 雖然看不懂這些公式&#xff0c;但是比較重要的一句應該是這個&#xff1a;因為傳統帶隙基準的輸出值為1.2V ? 1. 使用 參考示例代碼。 40002000是falsh控制器寄…

NXP RT1176(一)——二級BootLoader開發(安全引導加載程序SBL)

目錄 1. 開發環境 2. 二級BOOT的功能 3. 步驟 3.1 配置源碼 3.2 構建項目 3.2.1 MDK 3.2.2 IAR&#xff08;IAR也編譯一下工程看看&#xff0c;這樣兩個平臺都可以支持了&#xff09; 單核M7的開發&#xff01;&#xff01; 1. 開發環境 本文Windows下開發&#xff1a;…

【無標題】vo dto

在Java中&#xff0c;VO、PO、DTO都是常用的數據對象模型。 VO&#xff08;Value Object&#xff09;是值對象&#xff0c;通常用于表示一個業務實體或者頁面展示的內容。VO通常包含了多個屬性&#xff0c;并且這些屬性的類型和名稱與業務相關。VO并不一定與數據庫中的表結構相…

MHD、MQA、GQA注意力機制詳解

MHD、MQA、GQA注意力機制詳解 注意力機制詳解及代碼前言&#xff1a;MHAMQAGQA 注意力機制詳解及代碼 前言&#xff1a; 自回歸解碼器推理是 Transformer 模型的 一個嚴重瓶頸&#xff0c;因為在每個解碼步驟中加 載解碼器權重以及所有注意鍵和值會產生 內存帶寬開銷 下圖為三…

鞏固學習8

在 Pandas 中&#xff0c;sep參數用于指定數據中字段之間的分隔符。常見的參數包括&#xff1a; 逗號&#xff1a;,&#xff0c;常用于CSV文件。 制表符&#xff1a;\t&#xff0c;常用于TSV文件。 空格&#xff1a;’ &#xff0c;用于空格分隔的數據。 分號&#xff1a;;&…

【合成孔徑雷達】合成孔徑雷達的多視角理解和時/頻成像算法的統一解釋

文章目錄 一、什么是雷達成像&#xff08;1&#xff09;主要的遙感探測手段&#xff1a;光學、紅外和雷達&#xff08;2&#xff09;從數學的角度&#xff1a;雷達成像主要研究什么&#xff1f;數據采集&#xff1a; y T x n yTxn yTxn信息提取&#xff1a; y ? > x ? y…

編譯錯誤:stray ‘\357’ in program的解決方法

目錄 把報錯文件更換編碼格式&#xff0c;我試的utf-8 bom編碼就可以了&#xff0c;可以多換幾種試試。 網友的另一種案例&#xff1a; 編譯錯誤&#xff1a;stray ‘\357’ in program的解決方法 把報錯文件更換編碼格式&#xff0c;我試的utf-8 bom編碼就可以了&#xff0c…

LabVIEW做儀器測試不知道是否適用

LabVIEW&#xff08;Laboratory Virtual Instrument Engineering Workbench&#xff09;是一個用于系統工程和測量系統的圖形編程平臺&#xff0c;由National Instruments開發。它非常適用于儀器控制、數據采集、信號處理以及自動化測試與測量系統的開發。如果您的工作涉及到這…

如何同步管理1000個設備的VLAN數據?

什么是VLAN&#xff1f; VLAN&#xff0c;也就是虛擬局域網&#xff0c;是通過為子網提供數據鏈路連接來抽象出局域網的概念。在企業網中&#xff0c;一個企業級交換機一般是24口或者是48口&#xff0c;連接這些接口的終端在物理上形成一個廣播域。廣播域過大&#xff0c;就會導…

【AI智能體】零代碼構建AI應用,全網都在喊話歌手誰能應戰,一鍵AI制作歌手信息查詢應用

歡迎來到《小5講堂》 這是《文心智能體平臺》系列文章&#xff0c;每篇文章將以博主理解的角度展開講解。 溫馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不對之處望指正&#xff01; 目錄 文心智能體大賽背景創建應用平臺地址快速構建【基礎配置】…

前端無樣式id或者class等來定位標簽

目錄&#xff1a; 1、使用背景2、代碼處理 1、使用背景 客戶使用我們產品組件&#xff0c;發現替換文件&#xff0c;每次替換都會新增如下的樣式&#xff0c;造就樣式錯亂&#xff0c;是組件的文件&#xff0c;目前臨時處理的話就是替換文件時刪除新增的樣式&#xff0c;但是發…

8評分卡建模整體流程梳理

評分卡建模整體流程梳理 學習目標 掌握評分卡建模流程使用Toad庫構建評分卡1 加載數據 import pandas as pd from sklearn.metrics import roc_auc_score,roc_curve,auc from sklearn.model_selection import train_test_split from sklearn.linear_model import Logis…

云服務器上Redis數據庫被攻擊實錄+總結

情景重現 Redis日志記錄&#xff08;異常部分&#xff09;&#xff1a; 36346:M 14 May 2024 15:46:12.505 # Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to us…