音視頻多媒體編解碼器基礎-codec

如果要從事編解碼多媒體的工作,需要準備哪些更為基礎的內容,這里幫你總結完。

因為數據類型不同所以編解碼算法不同,分為圖像、視頻和音頻三大類;因為流程不同,可以分為編碼和解碼兩部分;因為編碼器實現不同,分為硬編碼和軟編碼;因為編解碼硬件位置不同,可以分為片內、片外和獨立編解碼模塊三類;軟件常用的框架ffmpeg。

音視頻編解碼(Audio-Video Coding)是指將音頻和視頻信號進行壓縮編碼以及解碼還原的過程。

算法通過去除圖像中的冗余信息,實現圖像的壓縮存儲和傳輸。在解碼過程中,這些算法將壓縮的圖像數據恢復為原始的圖像信號。

編解碼的應用流程:先對原始圖像進行壓縮編碼,然后進行存儲和傳輸,最后在使用或者后處理時再進行解碼。

0. 基本原理和概念

音視頻編解碼的基本原理是利用人的感知系統特性的特點,對音視頻信號進行數據壓縮,從而便于傳輸和存儲。

編碼過程中是將信號轉換為數字形式,并應用壓縮算法來減少數據量。

解碼是編碼的逆過程,是將壓縮后的數據重新恢復為原始的音視頻信號。

編碼的一般流程為:采樣、量化、壓縮、打包。

解碼的一般流程為:解包、解碼、反量化和數模轉換,最終恢復為模擬音視頻信號。

編碼器壓縮兩要素:圖像相關性、人眼敏感性。

軟編碼和硬編碼

硬編碼是指利用顯卡GPU、專用的DSP、FPGA、ASIC芯片等硬件進行編碼,性能高;軟編碼是使用CPU進行編碼,軟件實現直接、簡單,參數調整方便,升級易,但性能較硬編碼低。

H264軟件編碼器有JM官方編碼實現X264,提供了豐富的視頻編碼函數庫。

H264硬件編碼器IP比如LC1860就有芯原Hautro H1,可以直接通過控制硬件實現硬編碼。

H264圖像序列實現幀間預測

每個序列以一個關鍵幀(I幀)開始,隨后跟著若干個參考前面的幀生成的差別幀(P幀),以及參考前后的幀生成的差別幀(B幀),這種減少I幀數量的方式進一步提高了壓縮效率。

以下是音視頻編解碼的具體過程:

目的音頻視頻
采樣將模擬信號通過采樣轉換成數字信號連續的模擬音頻信號轉換為離散的數字信號連續的模擬視頻信號轉換為離散的數字信號
量化減小數據量將采樣后的音頻信號量化對采樣后的視頻信號量化,再進行預處理,包括去噪、濾波、顏色空間轉換等
壓縮將信號表示為更緊湊的形式對量化后的音頻信號進行編碼對預處理后的視頻進行壓縮編碼,包括運動估計、變換編碼等
打包便于傳輸和存儲將編碼后的音頻數據組織為數據包將編碼后的視頻數據組織為數據包

1. 圖像編解碼算法

圖像編解碼算法主要包括無損編碼、有損編碼兩個類,顧名思義,無需解釋。

無損壓縮原理:通過預測編碼、霍夫曼編碼等技術,減少數據的冗余度同時保持圖像信息的完整性。

有損編碼原理:通過離散余弦變換(DCT)編碼、小波變換編碼等技術,利用人眼對圖像的感知特性,去除對圖像影響較小的信息。

常見的圖像壓縮算法

圖像壓縮算法原理應用
JPEG將圖像分割成8x8像素方塊,DCT變換到頻域,再量化以減少數據量網頁圖片、數碼相機
HEIFHEVC(H.265)視頻編碼技術實現高效壓縮智能手機攝像頭拍攝的照片
PNG采用LZ77壓縮算法和哈夫曼編碼等技術實現無損壓縮圖標、徽標

使用時需要對壓縮后的圖像數據進行解碼處理以還原為原始圖像,恢復出壓縮前的圖像數據進行后處理和顯示等。

解碼過程包括熵解碼、逆量化和逆DCT變換等過程。

2. 視頻編解碼算法

視頻編碼通過將視頻信號分解成一系列的圖像幀,并對這些圖像幀進行壓縮處理,以減少數據量并提高傳輸效率。常見的視頻編碼標準有H.264/AVC、HEVC/H.265、prores(apple)、VP9等。

視頻編碼方式主要包括幀內壓縮(prores)、幀間壓縮(H264. H265)。

常見的視頻壓縮方法

視頻壓縮算法原理應用
H264|AVC通過減少冗余信息和利用圖像特性實現壓縮廣泛應用于各種視頻應用
H265|HEVC比264更高的壓縮效率在相同碼率下提供更好的視覺質量,在高清視頻逐漸應用
ProRes通過變換編碼、運動補償、DCT實現壓縮蘋果開發的一種高質量、無損和可編輯的視頻編解碼器

3. 音頻編解碼算法

常見的音頻編碼標準有MP3、AAC等。這些標準采用了一系列復雜的算法和技術來實現高效的音頻壓縮。在編碼過程中,音頻信號被轉換為數字形式,并應用特定的壓縮算法來減少數據量。解碼過程則是將壓縮后的音頻數據恢復為原始的音頻信號。

音頻編碼的過程也是包括:模擬信號采樣,采樣后的信號量化,之后進行編碼得到數字音頻信號。

音頻解碼的過程包括:加盟其首先對音頻進行解包提取音頻數據,然后將使用編碼時對應的解碼算法進行解碼獲得原始信號,然后通過反量化操作恢復為連續的近似值,最后通過重構把之前的信號換換成模擬音頻信號。

音頻輸入輸出的實際流程:

播放應用從存儲中讀取音頻封裝格式的文件(比如mp3),播放器調用解碼模型進行解碼成PCM數據,最終送到音頻驅動去播放。

而在錄音時,音頻驅動接收采樣獲得的PCM數據,給到應用程序,應用調用編碼模型進行編碼,再調用存儲模型進行存儲。

常見的音頻壓縮方法

音頻壓縮方式原理應用
PCM脈沖編碼調制將模擬音頻信號轉換為數字信號的技術,是一種未壓縮的音頻原始數據流。可以理解為音頻中類似“視頻中的YUV",實際播放的音頻原始數據。
MP3利用心理聲學模型去除人耳察覺不到的音頻成分,編碼過程在量化后增加聲學分析以及霍爾曼編碼等步驟。廣泛應用音頻文件如音樂歌曲等。
AAC(Advanced Audio Codin)使用預測編碼和變換變化技術,實現了更高效的音頻編碼。廣泛應用于廣播和流媒體等。

音頻編解碼還需要考慮音頻的質量、采樣率、比特率和聲道數等因素。這些因素直接影響音頻的聽覺效果和傳輸效率。

4. codec片外芯片硬件

CODEC作用

Codec負責音頻信號的模擬/數字轉換(A/D和D/A轉換),以及音頻信號的編碼和解碼。

CODEC芯片的選擇,決定了模擬音頻輸入輸出質量的好壞,在音頻加速器模塊中,決定數字信號質量的好壞。

示例

以音頻芯片CODEC ALC5640為例,ALC5640芯片使用i2c1接口的控制總線,數據傳輸通過i2s0接口。

在這里插入圖片描述

5. 獨立編解碼器

以上為常見的芯片內編解碼模塊的方案,但是也會有一類是獨立的編解碼器,通過外部接口的方式實現音視頻編解碼,從而擴展主板的能力,提高硬件適應性。

在這里插入圖片描述

海康威視DS-6700HUH音視頻編碼器為例。

支持HDTVI、HDCVI、CVBS和AHD的攝像頭輸入信號,采用H.265或者H.264標準視頻編碼,可同時對四路1080p分辨率的視頻信號進行實時編碼,支持豐富的網絡協議,可以通過網口,把視頻流傳送到網絡設備上。

網絡另一端的Android終端通過網絡終端接收視頻信號,并把接收視頻顯示在Android終端的屏幕上,默認顯示音視頻編碼器視頻流的方式,通過瀏覽器輸入默認地址192.168.1.64,并根據提示下載插件,即可實現遠程攝像頭視頻的實時顯示。

音視頻編解碼器的具體使用步驟如下:

\1. 給音視頻編碼器和操控端上電,音視頻編碼器網口與操控端網口相連,編碼器視頻口與模擬攝像頭相連。

\2. 設置操控端IP與音視頻編碼器默認的IP在同一網段,DS-6700HUH默認的IPv4地址是192.168.1.64。

\3. 在Android操控端的瀏覽器中輸入DS-6700HUH的默認地址192.168.1.64。

\4. 在激活界面輸入默認的管理員賬號,用戶名是admin,并創建登錄密碼,首次登錄要根據提示信息安裝瀏覽器插件。

\5. 在設置界面中選擇“配置->網絡->基本設置->TCP/IP”,可實現對音視頻編碼器的網絡進行設置。

\6. 最后進入預覽界面,單擊界面的預覽框即可打開或者關閉預覽圖像。

6. ffmpeg軟件框架

通過ffmpeg實現編解碼和所有軟件操作。

FFmpeg是一個開源的多媒體框架,使用廣泛,幾乎能夠解碼、編碼、轉碼、mux、demux、過濾和播放所有已知格式的音視頻文件。(之后獨立總結一章,這個很重要)
在這里插入圖片描述
系列收官之作,最近陸續把一些camera相關驅動崗位的基礎整理完畢,希望對你有所幫助。

計劃2025多做整理,比2024翻倍的內容在路上,您點贊和支持,就是繼續優化的動力,拜謝!

最后祝您2025新年快樂!

END

其他你可能感興趣的驅動基礎:

攝像頭camera驅動開發基礎-MIPI和V4L2

攝像頭camera驅動開發基礎-USB和UVC

影像顯示驅動基礎-MIPI和I2C

視頻語音驅動基礎-I2S和tinyALSA

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

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

相關文章

ML基礎-Jupyter notebook中的魔法命令

在 Jupyter Notebook 或 IPython 環境中,“魔法命令”(Magic Commands)是一些以百分號(%)或驚嘆號(!)開頭的特殊命令,用于執行一些與代碼運行環境相關的操作,而不僅僅是執行普通的 P…

【Unity2D 2022:UI】創建滾動視圖

一、創建Scroll View游戲對象 在Canvas畫布下新建Scroll View游戲對象 二、為Content游戲對象添加Grid Layout Group(網格布局組)組件 選中Content游戲物體,點擊Add Competent添加組件,搜索Grid Layout Group組件 三、調整Grid La…

9-收納的知識

[ComponentOf(typeof(xxx))]組件描述,表示是哪個實體的組件 [EntitySystemOf(typeof(xxx))] 系統描述 [Event(SceneType.Demo)] 定義事件,在指定場景的指定事件發生后觸發 [ChildOf(typeof(ComputersComponent))] 標明是誰的子實體 [ResponseType(na…

數據庫系統概念第六版記錄 一

1.關系型數據庫 關系型數據庫(Relational Database,簡稱 RDB)是基于關系模型的一種數據庫,它通過表格的形式來組織和存儲數據。每個表由若干行(記錄)和列(字段)組成,數據…

Vue前端開發-pinia之Actions插件

Store中的Actions部分,用于定義操作屬性的方法,類似于組件中的methods部分,它與Getters都可以操作State屬性,但在定義方法時,Getters是對State屬性進行加工處理,再返回使用,屬于內部計算;Action…

生成式AI安全最佳實踐 - 抵御OWASP Top 10攻擊 (下)

今天小李哥將開啟全新的技術分享系列,為大家介紹生成式AI的安全解決方案設計方法和最佳實踐。近年來生成式 AI 安全市場正迅速發展。據IDC預測,到2025年全球 AI 安全解決方案市場規模將突破200億美元,年復合增長率超過30%,而Gartn…

一個開源 GenBI AI 本地代理(確保本地數據安全),使數據驅動型團隊能夠與其數據進行互動,生成文本到 SQL、圖表、電子表格、報告和 BI

一、GenBI AI 代理介紹(文末提供下載) github地址:https://github.com/Canner/WrenAI 本文信息圖片均來源于github作者主頁 在 Wren AI,我們的使命是通過生成式商業智能 (GenBI) 使組織能夠無縫訪問數據&…

JAVA架構師進階之路

JAVA架構師進階之路 前言 苦于網絡上充斥的各種java知識,多半是互相抄襲,導致很多后來者在學習java知識中味同嚼蠟,本人閑暇之余整理了進階成為java架構師所必須掌握的核心知識點,后續會不斷擴充。 廢話少說,直接上正…

java程序員面試自身優缺點,詳細說明

程序員面試大廠經常被問到的Java異常機制問題,你搞懂了嗎運行時異常:運行時異常是可能被程序員避免的異常。與檢查性相反,運行時異常可以在編譯時被忽略。錯誤(ERROR):錯誤不是異常,而是脫離程序員控制的問題。錯誤通常在代碼中容易被忽略。例如:當棧溢出時,一個錯誤就發生了,它…

C++六大默認成員函數

C六大默認成員函數 默認構造函數默認析構函數RAII技術RAII的核心思想優點示例應用場景 默認拷貝構造深拷貝和淺拷貝 默認拷貝賦值運算符移動構造函數(C11起)默認移動賦值運算符(C11起)取地址及const取地址操作符重載取地址操作符重…

Java 2024年面試總結(持續更新)

目錄 最近趁著金三銀四面了五六家公司吧,也整理了一些問題供大家參考一下(適合經驗三年左右的)。 面試問題(答案是我自己總結的,不一定正確): 總結: 最近趁著金三銀四面了五六家公…

防火墻的安全策略

1.VLAN 2屬于辦公區;VLAN 3屬于生產區,創建時間段 [FW]ip address-set BG type object [FW-object-address-set-BG]address 192.168.1.0 mask 25 [FW]ip address-set SC type object [FW-object-address-set-SC]address 192.168.1.129 mask 25 [FW]ip address-se…

工作流項目BPMN.JS_Question梳理

工作流項目 想了解如果候選人熟悉工作流技術、bpmn.js和Flowable工作流引擎,面試官會對哪些信息感興趣。我需要分析這個問題,并給出一個全面而結構化的回答。 首先,用戶可能希望了解作為前端面試官,應該關注候選人哪些方面的知識和…

windows下搭建鴻蒙OS應用開發環境

一、前言 HUAWEI DevEco Studio 是華為推出的一款集成開發環境(IDE),主要用于開發基于華為鴻蒙操作系統(HarmonyOS)的應用。作為華為開發者工具的核心之一,DevEco Studio 提供了一個多功能的開發平臺&…

MacBook Pro(M1芯片)Qt環境配置

MacBook Pro(M1芯片)Qt環境配置 1、準備 試圖寫一個跨平臺的桌面應用,此時想到了使用Qt,于是開始了搭建開發環境~ 在M1芯片的電腦上安裝,使用brew工具比較方便 Apple Silicon(ARM/M1&#xf…

Sqlserver DBCC Check 遇到Msg 3853報錯涉及sys.columns和sys.objects信息不匹配的解決方法

對數據庫CacheDBMSIntl執行DBCC checkcatalog(‘CacheDBMSIntl’)時遇到報錯如下 Msg 3853, Level 16, State 1, Line 7 Attribute (object_id1071830442) of row (object_id1071830442,column_id1) in sys.columns does not have a matching row (object_id1071830442) in sy…

VUE之組件通信(二)

1、v-model v-model的底層原理:是:value值和input事件的結合 $event到底是啥?啥時候能.target 對于原生事件,$event就是事件對象 ,能.target對應自定義事件,$event就是觸發事件時,所傳遞的數據&#xff…

P2036 [COCI 2008/2009 #2] PERKET(dfs)

#include<bits/stdc.h> using namespace std;int n; int a[15],b[15]; int ansINT_MAX; // 初始化最小差值為一個很大的數&#xff0c;保證能找到最小值void dfs(int i,int s,int k){if(in){ // 當遍歷完所有元素時if(s1&&k0) return;int difabs(s-k);ans mi…

論文解讀:《基于TinyML毫米波雷達的座艙檢測、定位與分類》

摘要 本文提出了一種實時的座艙檢測、定位和分類解決方案&#xff0c;采用毫米波&#xff08;mmWave&#xff09;雷達系統芯片&#xff08;SoC&#xff09;&#xff0c;CapterahCAL60S344-AE&#xff0c;支持微型機器學習&#xff08;TinyML&#xff09;。提出了波束距離-多普勒…

ORB-SLAM2源碼學習:KeyFrame.cc④: void KeyFrame::UpdateBestCovisibles更新最佳共視

前言 在添加新連接之后就要重新對所有的共視關鍵幀和權重的那兩個列表重新進行降序排列&#xff0c;這樣非常容易知道列表的第一位就是最佳共視關鍵幀和權重。 總的來說就是只要權重發生了變化就要調用這個函數來修改mvpOrderedConnectedKeyFrames共視關鍵幀和mvOrderedWeigh…