音視頻小白系統入門筆記-0

本系列筆記為博主學習李超老師課程的課堂筆記,僅供參閱

音視頻小白系統入門課 音視頻基礎+ffmpeg原理

緒論

ffmpeg推流 ffplay/vlc拉流 使用rtmp協議

ffmpeg -i <source_path> -f flv rtmp://<rtmp_server_path>

為什么會推流失敗?

默認命令行方式可能導致音頻和視頻不同步原始是最快的播放速率,修改為`ffmpeg -re -i <source_path> -f flv rtmp://<rtmp_server_path>`  以原始播放速率播放

為什么清晰度不高?

`-f flv` 會按照默認方式對視頻重新進行編碼,導致視頻質量下降`ffmpeg -re -i <source_path> -c:v copy -f flv rtmp://<rtmp_server_path>`

環境變量

`PATH` :命令行程序如果不是通過地址指定,將通過`PATH`進行搜索
`PKG_CONFIG_PATH` :`pkg-config`參數在這個環境變量的目錄下找庫的執行文件和頭文件,實際上是找到對應庫的`.pc`文件,而`.pc`文件中包含有庫和頭文件的信息
在`~/.bashrc | ~/.bash_profile`文件中設置Linux | Mac 的環境變量,然后通過`source`命令生效

PKG_CONFIG_PATHLD_LIBRARY_PATH有什么區別?

https://www.cnblogs.com/doubleconquer/p/17862780.html`pkg-config` 輸出的參數最終會被 `gcc/clang` 和 `ld` 使用,但 **它本身不參與鏈接或運行**。

安裝ffmpeg

Mac系統可以直接使用brew安裝,類Unix系統可以使用源碼安裝,源碼安裝好處是更加靈活。Windows系統安裝稍微復雜

可執行工具:

`ffmpeg`:推流,音視頻處理`ffplay`:拉流,播放流媒體文件`ffprobe`:偵測多媒體文件格式、基本信息

庫:

`libavcodec`:編解碼`libavdevice`:管理設備`libavfilter`:過濾,特效`libavformat`:多媒體格式處理`libavutil`:基本工具`libpostproc`:沒什么用`libswresmaple`:音頻重采樣`libswscale`:視頻縮放默認生成動態庫(`.dylib/.so`),也可以生成靜態庫(`.a`)

為什么有時候ffmpeg編譯出來沒有ffplay工具?

https://blog.csdn.net/chendongpu/article/details/123688442應該是舊版本需要手動enable

音頻基礎

處理流程

共享端:音視頻采集(調用API) → 音視頻編碼

傳輸

觀看端:音視頻解碼 → 音視頻渲染 (調用驅動API)

音頻數據流

采集后得到數字信號PCM數據 → 編碼器aac/mp3編碼 → 壓縮后的數據aac/mp3 → 套馬甲形成多媒體文件mp4/flv

多媒體文件mp4/flv → 脫馬甲(解封裝) → 解碼 → PCM

為什么要套馬甲(封裝)?

1. 便于傳輸和存儲:多媒體文件格式(如mp4/flv)提供了標準化的容器,可以同時存儲音頻、視頻、字幕等多種數據2. 包含元數據:多媒體容器可以存儲諸如時長、創建時間、編碼格式等重要信息3. 支持流媒體:特定的容器格式支持流式傳輸,允許在下載完整文件前就開始播放4. 同步音視頻:容器格式包含時間戳等信息,確保音視頻在播放時能夠正確同步

音頻基礎知識

聲音:物體振動 → 通過介質傳輸能量 → 介質刺激耳膜 → 被人腦識別

人類的聽覺頻率范圍(介質振動頻率):次聲波 20Hz 可聽聲波 20kHz 超聲波

說話:85 — 1100 Hz

聲音的三要素 → 波的三要素

音調 → 波的頻率 頻率較高悅耳

音量 → 波的振幅

音色 → 諧波

什么是諧波?

諧波是在基頻(基本頻率)上疊加的整數倍頻率的波。當一個物體振動時,除了產生基本頻率的聲波外,還會同時產生2倍、3倍等整數倍頻率的波。這些波的疊加形成了獨特的音色。例如:當一根琴弦振動時,除了產生基頻(最低頻率的聲波),還會產生2倍頻率(第二諧波)、3倍頻率(第三諧波)等。不同樂器發出相同音調的聲音聽起來不一樣,就是因為它們產生的諧波組成不同。

諧波有什么用?

1. 音質優化:在音頻處理中,了解諧波可以幫助進行更好的音質調節和優化2. 音頻壓縮:某些音頻壓縮算法會考慮諧波特性來實現更有效的壓縮3. 音色合成:在音樂制作中,通過調整諧波可以創造不同的音色效果

模擬信號經過采樣得到數字信號(根據奈奎斯特定理,采樣率超過最高頻率的2倍不會失真),普遍采樣率在48kHz

為什么采樣率需要是最高頻率的2倍?

1. 重建原始信號:根據奈奎斯特定理,要完整重建一個連續的模擬信號,采樣率必須至少是信號最高頻率的2倍。這是因為每個周期至少需要兩個采樣點才能確定一個正弦波的頻率和相位。2. 避免混疊效應:如果采樣率低于信號最高頻率的2倍,高頻信號會被錯誤地解釋為低頻信號,這種現象稱為"混疊"。這會導致重建的信號失真。3. 數學證明:假設采樣率低于2倍頻率,那么在信號重建時,由于采樣點不足,同一組采樣點可能對應多個不同頻率的正弦波,系統無法確定原始信號的真實頻率。4. 實際應用:在實踐中,為了保證更好的信號質量,通常會采用更高的采樣率,比如音頻常用的44.1kHz或48kHz。

位深/采樣大小:一個采樣用多少bit存放。常用16bit

采樣率:采樣頻率 8k(打電話) 16k 32k 44.1k 48k

聲道數:單聲道、雙聲道(人耳)、多聲道

碼率:采樣率 x 聲道數 x 位深

PCM格式:裸數據,記錄采樣信息

WAV格式:封裝數據,一般用于封裝PCM數據,加上元信息,最主要就是位深、采樣率和聲道數(以及其他一些大小等)

RIFF 是 WAV 的容器格式,通過分塊(Chunk)組織數據,使用小端序存儲數字。

大端序(Big-Endian)和 小端序(Little-Endian)是兩種不同的字節存儲順序,用于定義多字節數據(如整數、浮點數)在內存或文件中的排列方式。它們的區別主要體現在字節的排列順序上,直接影響數據的解析和跨平臺兼容性。
  • 關鍵塊"RIFF"(頂層)、"fmt "(參數)、"data"(音頻數據)。
  • 應用場景:WAV、AVI、WebP 等均基于 RIFF 結構。

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

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

相關文章

mysql按條件三表并聯查詢

下面為你呈現一個 MySQL 按條件三表并聯查詢的示例。假定有三個表&#xff1a;students、courses 和 enrollments&#xff0c;它們的結構和關聯如下&#xff1a; students 表&#xff1a;包含學生的基本信息&#xff0c;有 student_id 和 student_name 等字段。courses 表&…

UML之序列圖的消息

序列圖表現各參與者之間為完成某個行為而發生的交互及其時間順序&#xff0c;序列圖中的交互通過消息實現。消息是從一條生命線到另一條生命線的通信&#xff0c;它們通常是水平或傾斜向下的箭頭&#xff0c;從發送方生命線離開&#xff0c;到達接收方生命線。如果需要&#xf…

UniAD:自動駕駛的統一架構 - 創新與挑戰并存

引言 自動駕駛技術正經歷一場架構革命。傳統上&#xff0c;自動駕駛系統采用模塊化設計&#xff0c;將感知、預測和規劃分離為獨立組件。而上海人工智能實驗室的OpenDriveLab團隊提出的UniAD&#xff08;Unified Autonomous Driving&#xff09;則嘗試將這些任務整合到一個統一…

如何寫好合同管理系統需求分析

引言 在當今企業數字化轉型的浪潮中&#xff0c;合同管理系統作為企業法律合規和商業運營的重要支撐工具&#xff0c;其需求分析的準確性和完整性直接關系到系統建設的成敗。本文基于Volere需求過程方法論&#xff0c;結合江鈴汽車集團合同管理系統需求規格說明書實踐案例&…

libevent服務器附帶qt界面開發(附帶源碼)

本章是入門章節&#xff0c;講解如何實現一個附帶界面的服務器&#xff0c;后續會完善與優化 使用qt編譯libevent源碼演示視頻qt的一些知識 1.主要功能有登錄界面 2.基于libevent實現的服務器的業務功能 使用qt編譯libevent 下載這個&#xff0c;其他版本也可以 主要是github上…

八、自動化函數

1.元素的定位 web自動化測試的操作核心是能夠找到頁面對應的元素&#xff0c;然后才能對元素進行具體的操作。 常見的元素定位方式非常多&#xff0c;如id,classname,tagname,xpath,cssSelector 常用的主要由cssSelector和xpath 1.1 cssSelector選擇器 選擇器的功能&#x…

Web三漏洞學習(其二:sql注入)

靶場&#xff1a;NSSCTF 、云曦歷年考核題 二、sql注入 NSSCTF 【SWPUCTF 2021 新生賽】easy_sql 這題雖然之前做過&#xff0c;但為了學習sql&#xff0c;整理一下就再寫一次 打開以后是杰哥的界面 注意到html網頁標題的名稱是 “參數是wllm” 那就傳參數值試一試 首先判…

單片機非耦合業務邏輯框架

在小型單片機項目開發初期&#xff0c;由于業務邏輯相對簡單&#xff0c;我們往往較少關注程序架構層面的設計。 然而隨著項目經驗的積累&#xff0c;開發者會逐漸意識到模塊間的耦合問題&#xff1a;當功能迭代時&#xff0c;一處修改可能引發連鎖反應。 此時&#xff0c;構…

Zookeeper三臺服務器三節點集群部署(docker-compose方式)

1. 準備工作 - 服務器:3 臺服務器,IP 地址分別為 `10.10.10.11`、`10.10.10.12`、`10.10.10.13`。 - 安裝 Docker:確保每臺服務器已安裝 Docker 和 Docker Compose。 - 網絡通信:確保三臺服務器之間可以通過 IP 地址互相訪問,并開放以下端口: - `2181`:Zookeeper 客戶…

Mac關閉sip方法

Mac關閉sip方法 導航 文章目錄 Mac關閉sip方法導航完整操作流程圖詳細步驟 完整操作流程圖 這東西是我在網上搬運下來的&#xff0c;但是我在為業務實操過程中&#xff0c;根據實操情況還是有新的注意點的 詳細步驟 1.在「關于本機」-「系統報告」-「軟件」;查看SIP是否開啟…

C++| 深入剖析std::list底層實現:鏈表結構與內存管理機制

引言 std::list的底層實現基于雙向鏈表&#xff0c;其設計哲學與std::vector截然不同。本文將深入探討其節點結構、內存分配策略及迭代器實現原理&#xff0c;揭示鏈表的性能優勢和潛在代價。 1. 底層數據結構&#xff1a;雙向鏈表 每個std::list節點包含&#xff1a; 數據域…

漢諾塔問題——用貪心算法解決

目錄 一&#xff1a;起源 二&#xff1a;問題描述 三&#xff1a;規律 三&#xff1a;解決方案 遞歸算法 四&#xff1a;代碼實現 復雜度分析 一&#xff1a;起源 漢諾塔&#xff08;Tower of Hanoi&#xff09;問題起源于一個印度的古老傳說。在世界中心貝拿勒斯&#…

【Python】Python 100題 分類入門練習題 - 新手友好

Python 100題 分類入門練習題 - 新手友好篇 - 整合篇 一、數學問題題目1&#xff1a;組合數字題目2&#xff1a;利潤計算題目3&#xff1a;完全平方數題目4&#xff1a;日期天數計算題目11&#xff1a;兔子繁殖問題題目18&#xff1a;數列求和題目19&#xff1a;完數判斷題目21…

【linux】--- 進程概念

進程概念 1.認識馮諾依曼結構2. 操作系統&#xff08;Operator system)2.1 概念2.2 設計OS的目的2.3 理解操作系統2.4 如何理解管理2.5 理解系統調用和庫函數 3. 進程3.1 基本概念和基本操作3.1.1 描述進程 - PCB3.1.2 task_struct3.1.3 查看進程 3.2 進程狀態3.2.1 運行&&…

算法堆排序記錄

【算法】排序算法之堆排序 - 知乎 應用場景&#xff1a;獲取第n個大或者小的數 操作步驟&#xff1a; 1、將數組構造成堆 2、調整根節點為最大堆 ->倒序對每個根節點執行最大化 ->根節點最大化過程中如果發生交換&#xff0c;需要保證子節點也為最大堆&#xff08;執行…

STM32 模塊化開發實戰指南:系列介紹

本文是《STM32 模塊化開發實戰指南》系列的導讀篇,旨在介紹整個系列的寫作目的、適用讀者、技術路徑和每一篇的主題規劃。適合從事 STM32、裸機或 RTOS 嵌入式開發的個人開發者、初創工程師或企業項目團隊。 為什么要寫這個系列? 在嵌入式開發中,很多人剛開始都是從點亮一個…

【眼底輔助診斷開放平臺】項目筆記

這是一個標題 任務一前端頁面開發&#xff1a;后端接口配置&#xff1a; 任務二自行部署接入服務 日志修改樣式和解析MD文檔接入服務 Note前端登陸不進去/更改后端api接口304 Not Modifiedlogin.cache.jsonERR_CONNECTION_TIMED_OUT跨域一般提交格式proxy.ts src/coponents 目錄…

【后端開發】Spring MVC-計算器、用戶登錄、留言板

文章目錄 前后端分離設計接口設計思路項目問題解決思路 計算器需求分析接口定義前端頁面代碼服務器代碼 用戶登錄需求分析接口定義用戶登錄校驗接口查詢登錄用戶接口 前端頁面代碼用戶登錄校驗查詢登錄用戶 服務器代碼前后端交互 留言版需求分析接口定義獲取全部留言發布留言前…

在Ubuntu-22.04.5中安裝ONLYOFFICE DocSpace(協作空間)【注意:安裝失敗,謹慎參考!】

1. 通過Docker安裝 預計需要下載10G的鏡像。 &#xff08;1&#xff09;下載docspace安裝腳本 curl -fsSL https://download.onlyoffice.com/docspace/docspace-install.sh -o docspace-install.sh &#xff08;2&#xff09;修改docker compose的別名為docker-compose ali…

2025年計算機領域重大技術突破與行業動態綜述

——前沿技術重塑未來&#xff0c;開發者如何把握機遇&#xff1f; 2025年第一季度&#xff0c;全球計算機領域迎來多項里程碑式進展&#xff0c;從量子計算到人工智能&#xff0c;從芯片設計到網絡安全&#xff0c;技術革新與產業融合持續加速。本文梳理近三個月內最具影響力…