音視頻學習-音視頻基礎

`

文章目錄

  • 一、 音視頻錄制原理
  • 二、音視頻播放原理
  • 三、圖像基礎概念
    • 1.像素
    • 2.分辨率
    • 3.位深
    • 4.幀率
    • 5.碼率
    • 6.Stride跨距
  • 四、RGB、YUV
    • 1.RGB
    • 2.YUV
      • 1. 4:4:4格式
      • 2. 4:2:2格式
      • 3. 4:2:0格式
      • 4. 4:2:0數據格式對比
    • 3.RGB和YUV的轉換
    • 4.YUV Stride對齊問題
  • 五、視頻的主要概念
    • 1.基本概念
    • 2.I P B幀
    • 3.視頻文件封裝格式
    • 4.音視頻編碼方式
  • 六、音頻基礎
    • 1.聲音的物理性質
    • 2.數字音頻
    • 3.音頻常見名詞
    • 4.音頻編碼原理簡介
    • 5.音視頻同步
    • 6.常用的音頻編碼
  • 總結


一、 音視頻錄制原理

在這里插入圖片描述

二、音視頻播放原理

在這里插入圖片描述

三、圖像基礎概念

? 像素:像素是一個圖片的基本單位,pix是英語單詞picture的簡寫,加上英語單詞“元素element”,就得到了“pixel”,簡稱px,所以“像素”有“圖像元素”之意。
? 分辨率:是指圖像的大小或尺寸。比如1920x1080。
? 位深:是指在記錄數字圖像的顏色時,計算機實際上是用每個像素需要的位深來表示的。比如紅色分量用8bit。
? 幀率:在1秒鐘時間里傳輸的圖片的幀數,也可以理解為圖形處理器每秒鐘能夠刷新幾次。比如25fps表示一秒有25張圖片。
? 碼率:視頻文件在單位時間內使用的數據流量。比如1Mbps。
? Stride:指在內存中每行像素所占的空間。為了實現內存對齊每行像素在內存中所占的空間并不一定是圖像的寬度。

1.像素

像素是一個圖片的基本單位,pix是英語單詞picture的簡寫,加上英語單詞“元素element”,就得到了“pixel”,簡稱px,所以“像素”有“圖像元素”之意。
例如2500×2000的照片就是指橫向有2500個像素點,豎向有2000個像素點,總共是500萬個像素,也俗稱500萬像素照片。
在這里插入圖片描述

2.分辨率

圖像(或視頻)的分辨率是指圖像的大小或尺寸。我們通常用像素表示圖像的尺寸。例如2500×2000的照片就是指橫向(寬)有2500個像素點,豎向(高)有2000個像素點。

常見的分辨率:
360P(640x360)、720P(1280x720)、1080P(1920x1080)、4K(3840x2160)、8K(7680x4320)

不同分辨率之間的區別:
常說的 1080 和 720 其實是指垂直像素數,分辨率除去垂直像素,還需要考慮到水平像素數。按照 16:9 (寬 : 高) 的比例計算,720p 的水平像素數為 720 ÷ 9 × 16 = 1280,總計像素為921600像素即大約為 92 萬像素。1080p 具有 1920 個水平像素,總計2073600像素即約 200 萬像素,是 720p 的兩倍多。
像素越多視頻就越清晰,所以 1080p 比 720p 的視頻更加清晰。圖像的分辨率越高,圖像就越清晰。
在這里插入圖片描述
在這里插入圖片描述

3.位深

在這里插入圖片描述
我們看到的彩色圖片,都有三個通道,分別為紅?、綠(G)、藍(B)通道。(如果需要透明度則還有alpha分量)

通常每個通道用8bit表示,8bit能表示256種顏色,所以可以組成256256256=16,777,216 = 1677萬種顏色。
這里的8bit就是我們講的位深。

每個通道的位深越大,能夠表示的顏色值就越大,比如現在高端電視說的10bit色彩,即是每個通道用10bit表示,每個通道有1024種顏色。102410241024約為10,7374萬色=10億色, 是8bit的64倍。
常見的顏色還是8bit居多。

4.幀率

幀率即 FPS(每秒有多少幀畫面),經常玩游戲的應該會對這個詞很熟悉。我們玩游戲時,FPS 幀率越高就代表游戲畫面越流暢,越低則越卡頓。視頻也是如此。由于視覺圖像在視網膜的暫時停留,一般圖像幀率能達到24幀,我們就認為圖像是連續動態的。
電影幀率一般是 24fps(幀每秒);
電視劇一般是25fps;
監控行業常用 25fps;
音視頻通話常用15fps;
幀率越高,畫面越流暢,需要的設備性能也越高。

5.碼率

? 視頻文件在單位時間內使用的數據流量。比如1Mbps。
? 大多數情況下碼率越高 分辨率越高,也就越清晰。但模糊的視頻文件大小(碼率)也可以很大,分辨率小的視頻文件可能也比分辨率大的視頻文件清晰。
? 對于同一個原始圖像源的時候,同樣的編碼算法,則碼率越高,圖像的失真就會越小,視頻畫面就會越清晰

6.Stride跨距

? Stride :指在內存中每行像素所占的空間。為了實現內存對齊每行像素在內存中所占的空間并不一定是圖像的寬度。
? Stride 就是這些擴展內容的名稱,Stride 也被稱作 Pitch,如果圖像的每一行像素末尾擁有擴展內容,Stride 的值一定大于圖像的寬度值,就像下圖所示:
? 比如分辨率638x480的RGB24圖像,我們在內存處理的時候如果要以16字節對齊,則6383/16=119.625不能整除,因此不能16字節對齊,我們需要在每行尾部填充6個字節。就是(638+2->640), 6403/16=120。此時該圖片的stride為1920字節。
在這里插入圖片描述

四、RGB、YUV

? RGB:紅R、綠G、藍B三基色。
? YUV:“Y”表示明亮度(Luminance或Luma),也就是灰階值,“U”和“V”表示的則是色度(Chrominance或Chroma)。

1.RGB

通常我們采用RGB模型來表示顏色,RGB模型中,每種顏色需要3個數字分別表示R、G、B,每個數字占用1個bit字節,這樣總共需要24bits
image.png
如果添加透明度,則總共需要32bits
在這里插入圖片描述

2.YUV

? 與我們熟知RGB類似,YUV也是一種顏色編碼方法,它是指將亮度參量(Y:Luminance
或Luma)和色度參量(UV:Chrominance或Chroma)分開進行表示的像素編碼格式。
? 這樣分開的好處就是不但可以避免相互干擾,沒有UV信息一樣可以顯示完整的圖像,
因而解決了彩色電視與黑白電視的兼容問題;還可以降低色度的采樣率而不會對圖像
質量影響太大,降低了視屏信號傳輸時對頻寬(帶寬)的要求。
? Y Y共用一組UV分量
在這里插入圖片描述
? YUV是一個比較籠統地說法,針對它的具體排列方式,可以分為很多種具體的格式:
? 打包(packed)格式:將每個像素點的Y、U、V分量交叉排列并以像素點為單元連續的存放
在同一數組中,通常幾個相鄰的像素組成一個宏像素(macro-pixel)
? 平面(planar)格式:使用三個數組分開連續的存放Y、U、V三個分量,即Y、U、V分別存放在各自的數組中。
? YUV采用A:B:C表示法來描述Y,U,V采樣頻率比例,下圖中黑點表示采樣像素點Y分量,
空心圓表示采樣像素點的UV分量。主要分為 YUV 4:4:4、YUV 4:2:2、YUV 4:2:0 這幾種
常用的類型
在這里插入圖片描述
? 4:4:4 表示色度頻道沒有下采樣,即一個Y分量對應著一個U分量和一個V分量。
? 4:2:2 表示 2:1 的水平下采樣,沒有垂直下采樣,即每兩個Y分量共用一個U分量和一個V分量。
? 4:2:0 表示 2:1 的水平下采樣,2:1 的垂直下采樣,即每四個Y分量共用一個U分量和一個V分量。
? 下面以每個分量數據存儲在一個char(或byte)中為例描述YUV的數據存儲方式。

1. 4:4:4格式

? 比如I444(YUV444P)格式, 對應Ffmpeg像素表示AV_PIX_FMT_YUV444P, ///< planar YUV
4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
在這里插入圖片描述

2. 4:2:2格式

? 對應Ffmpeg像素表示AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr& Cb sample per 2x1 Y samples)
? 該類型為planar格式
在這里插入圖片描述

3. 4:2:0格式

? I420(YUV420P)格式
? 對應Ffmpeg像素表示AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr& Cb sample per 2x2 Y samples)
? 該類型為planar格式
? (4+1+1)/4 = 1.5字節
在這里插入圖片描述
? NV12格式
? 對應Ffmpeg像素表示AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane
for Y and 1 plane for the UV components, which are interleaved (first byte U and
the following byte V)
在這里插入圖片描述

4. 4:2:0數據格式對比

在這里插入圖片描述
? YUV420p:
YV12:YYYYYYYY VV UU
I420: YYYYYYYY UU VV
? YUV420sp:
NV12:YYYYYYYY UV UV
NV21:YYYYYYYY VU VU

3.RGB和YUV的轉換

? 通常情況下RGB和YUV直接的相互轉換都是調用接口實現,比如Ffmpeg的swscale或者libyuv等庫。
? 主要轉換標準是 BT601 和 BT709。
8bit位深的情況下
? TV range是16-235(Y)、16-240(UV) , 也叫Limited Range
? PC range是0-255,也叫Full Range
? 而RGB沒有range之分,全是0-255

? BT601 TV Range轉換公式

YUV(256 級別) 可以從8位 RGB 直接計算:
Y = 0.299*R + 0.587*G + 0.114*B;
U = -0.169*R - 0.331*G + 0.5 *B ;
V = 0.5 *R - 0.419*G - 0.081*B;
反過來,RGB 也可以直接從YUV (256級別) 計算:
R = Y + 1.402 (Y-128)
G = Y - 0.34414 (U-128) - 0.71414 (U-128)
B = Y + 1.772 (V-128)

? 從YUV 轉到 RGB 如果值小于0要取0,如果大于255要取255

RGB和YUV的轉換-為什么解碼出錯顯示綠屏?
因為解碼失敗時YUV分量都填為0值,然后根據公式:
R = 1.402 * (-128) = -126.598
G = -0.34414*(-128) - 0.71414*(-128) = 44.04992 + 91.40992 = 135.45984
B = 1.772 * (-128) = -126.228
RGB 值范圍為[0,255], 所以最終的值為:
R = 0
G = 135.45984
B = 0
此時只有G分量有值所以為綠色。
YUV -> RGB
在這里插入圖片描述

4.YUV Stride對齊問題

比如分辨率638x480的YUV420P圖像,我們在內存處理的時候如果要以16字節對齊,則638不能被16整除,我們需要在每行尾部填充2個字節。就是640。此時該圖片的Y stride為640字節。
在這里插入圖片描述

五、視頻的主要概念

1.基本概念

視頻碼率:kb/s,是指視頻文件在單位時間內使用的數據流量,也叫碼流率。碼率越大,說明單位時間內取樣率越大,數據流精度就越高。

視頻幀率:fps,通常說一個視頻的25幀,指的就是這個視頻幀率,即1秒中會顯示25幀。幀率越高,給人的視覺就越流暢。

視頻分辨率:分辨率就是我們常說的640x480分辨率、1920x1080分辨率,分辨率影響視頻圖像的大小。

2.I P B幀

  1. I 幀(Intra coded frames):
    I幀不需要參考其他畫面而生成,解碼時僅靠自己就重構完整圖像;

     I幀圖像采用幀內編碼方式;I幀所占數據的信息量比較大;I幀圖像是周期性出現在圖像序列中的,出現頻率可由編碼器選擇;I幀是P幀和B幀的參考幀(其質量直接影響到同組中以后各幀的質量);I幀是幀組GOP的基礎幀(第一幀),在一組中只有一個I幀;I幀不需要考慮運動矢量;
    
  2. P 幀(Predicted frames):
    根據本幀與相鄰的前一幀(I幀或P幀)的不同點來壓縮本幀數據,同時利用了空間和時間上的相關性。
    P幀屬于前向預測的幀間編碼。它需要參考前面最靠近它的I幀或P幀來解碼。

  3. B 幀(Bi-directional predicted frames):
    B 幀圖像采用雙向時間預測,可以大大提高壓縮倍數。需要參考前面的I幀和它后面的幀就行預測。
    在這里插入圖片描述

3.視頻文件封裝格式

封裝格式(也叫容器),就是將已經編碼壓縮好的視頻軌和音頻軌按照一定的格式放到一個文件中,也就是說僅僅是一個外殼,或者大家把它當成一個放視頻軌和音頻軌的文件夾也可以。說得通俗點,視頻軌相當于飯,而音頻軌相當于菜,封裝格式就是一個碗,或者一個鍋,用來盛放飯菜的容器。 下面是幾種常用的 視頻文件后綴類型 與其相對應的 封裝格式

視頻文件格式視頻封裝格式
.aviAVI(Audio Video Interleaved)
.wmv、.asfWMV(Windows Media Video)
.mpg、.mpeg、.vob、.dat、.3gp、.mp4MPEG(Moving Picture Experts Group)
.mkvMatroska
.rm、.rmvbReal Video
.movQuickTime File Format
.flvFlash Video

4.音視頻編碼方式

  1. 視頻編碼方式
    視頻編碼的作用:將視頻像素數據(RGB,YUV 等)壓縮成視頻碼流,從而降低視頻的數據量。
名稱推出機構推出時間目前使用領域
HEVC(H.265)MPEG/ITU-T2013研發中
H.264MPEG/ITU-T2003各個領域
MPEG4MPEG2001不溫不火
MPEG2MPEG1994數字電視
VP9Google2013研發中
VP8Google2008不普及
VC-1Microsoft Inc.2006微軟平臺
視頻文件格式視頻封裝格式釋義
.aviAVI(Audio Video Interleave)圖像質量好,但體積過于龐大,壓縮標準不統一,存在高低版本兼容問題。
.wmvWMV(Windows Media Video)可邊下載邊播放,很適合網上播放和傳輸
.mpg .mpeg .mpe .dat .vob .asf .3gp .mp4MPEG(Moving Picture Experts Group)由運動圖像專家組制定的視頻格式,有三個壓縮標準,分別是 MPEG-1、MPEG-2、和 MPEG-4,它為了播放流式媒體的高質量視頻而專門設計的,以求使用最少的數據獲得最佳的圖像質量。
.mkvMatroska一種新的視頻封裝格式,它可將多種不同編碼的視頻及 16 條以上不同格式的音頻和不同語言的字幕流封裝到一個 Matroska Media 文件當中。
.rm、.rmvbReal VideoReal Networks 公司所制定的音頻視頻壓縮規范稱為 Real Media。用戶可以使用 RealPlayer 根據不同的網絡傳輸速率制定出不同的壓縮比率,從而實現在低速率的網絡上進行影像數據實時傳送和播放。
.movQuickTime File FormatApple 公司開發的一種視頻格式,默認的播放器是蘋果的 QuickTime。這種封裝格式具有較高的壓縮比率和較完美的視頻清晰度等特點,并可以保存 alpha 通道。
.flvFlash Video由 Adobe Flash 延伸出來的一種網絡視頻封裝格式。這種格式被很多視頻網站所采用。
  1. 音頻編碼方式
    音頻編碼的作用: 將音頻采樣數據(PCM 等)壓縮成音頻碼流,從而降低音頻的數據量。 常用的音頻編碼方式有以下幾種:
名稱推出機構推出時間目前使用領域
AACMPEG1997各個領域(新)
MP3MPEG1993各個領域(舊)
WMVMicrosoft Inc.1999微軟平臺
AC-3Dolby Inc.1992電影

六、音頻基礎

1.聲音的物理性質

  1. 振動
    聲音是一種由物體振動引發的物理現象,如小提琴的弦聲等。物體的振動使其四周空氣的壓強產生變化,這種忽強忽弱變化以波的形式向四周傳播,當被人耳所接收時,我們就聽見了聲音。

  2. 波形
    聲音是由物體的振動產生的,這種振動引起了周圍空氣壓強的振蕩,我們稱這種振蕩的函數表現形式為波形.
    在這里插入圖片描述

  3. 頻率
    聲音的頻率是周期的倒數,它表示的是聲音在1秒鐘內的周期數,單位是赫茲(Hz)。千赫(kHz),即1000Hz,表示每秒振動1000次。聲音按頻率可作如下劃分:

      次聲		                 0~20Hz人耳能聽見的聲音 	20Hz~20KHz超聲					    20KHz~1GHz特超聲					1GHz~10THz 
    
  4. 振幅
    聲音有振幅,振幅的主觀感覺是聲音的大小。聲音的振幅大小取決于空氣壓力波距平均值(也稱平衡態)的最大偏移量。

2.數字音頻

計算機并不直接使用連續平滑的波形來表示聲音,它是每隔固定的時間對波形的幅值進行采樣,用得到的一系列數字量來表示聲音。下方右圖 是經過數字采樣的波形示意圖。
PCM脈沖編碼調制
PCM(Pulse Code Modulation),脈沖編碼調制。人耳聽到的是模擬信號,PCM是把聲音從模擬信號轉化為數字信號的技術。
在這里插入圖片描述

  1. 采樣頻率
    根據Nyguist采樣定律,要從采樣中完全恢復原始信號波形,采樣頻率必須至少是信號中最高頻率的兩倍。

    前面提到人耳能聽到的頻率范圍是[20H~20kHz],所以采樣頻率一般為44.1Khz,這樣就能保證聲音到達20Khz也能被數字化,從而使得經過數字化處理之后,人耳聽到的聲音質量不會被降低。

    采樣頻率:每秒鐘采樣的點的個數。常用的采樣頻率有:

采樣頻率應用領域
22000(22kHz)無線廣播
44100(44.1kHz)CD音質
48000(48kHz)數字電視,DVD
96000(96kHz)藍光,高清DVD
192000(192kHz)藍光,高清DVD
  1. 采樣量化
    采樣是在離散的時間點上進行的,而采樣值本身在計算機中也是離散的。
    采樣值的精度取決于它用多少位來表示,這就是量化。例如8位量化可以表示256個不同值,而CD質量的16位量化可以表示65 536個值,范圍為[-32768, 32767]。

下圖是一個3位量化的示意圖,可以看出3位量化只能表示8個值:0.75,0.5,0.25,0,─0.25,─0.5,─0.75和 ─1,因而量化位數越少,波形就越難辨認,還原后的聲音質量也就越差(可能除了一片嗡嗡聲之外什么都沒有)
在這里插入圖片描述

3.音頻常見名詞

采樣頻率:每秒鐘采樣的點的個數。

采樣精度(采樣深度):每個“樣本點”的大小,
常用的大小為8bit, 16bit,24bit。

通道數:單聲道,雙聲道,四聲道,5.1聲道。

比特率:每秒傳輸的bit數,單位為:bps(Bit Per Second)
間接衡量聲音質量的一個標準。
沒有壓縮的音頻數據的比特率 = 采樣頻率 * 采樣精度 * 通道數。

碼率: 壓縮后的音頻數據的比特率。常見的碼率:
96kbps: FM質量
128-160kbps:一般質量音頻。
192kbps: CD質量。
256-320Kbps:高質量音頻
碼率越大,壓縮效率越低,音質越好,壓縮后數據越大。
碼率 = 音頻文件大小/時長。

例如:

采樣頻率44100,采樣精度16bit,2通道(聲道),采集4分鐘的數據
大小:44100*16*2*4*60= ?338688000?bit
?338688000?/8/1024/1024 = 40M字節
比特率:采樣頻率 * 采樣精度 * 通道數 = 44100*16*2= 1411200bit/s

:每次編碼的采樣單元數,比如MP3通常是1152個采樣點作為一個編碼單元,AAC通常是1024個采樣點作為一個編碼單元。

幀長:可以指每幀播放持續的時間:每幀持續時間(秒) = 每幀采樣點數 / 采樣頻率(HZ)
比如:MP3 48k, 1152個采樣點,每幀則為 24毫秒
1152/48000= 0.024 秒 = 24毫秒;
也可以指壓縮后每幀的數據長度。

交錯模式:數字音頻信號存儲的方式。數據以連續幀的方式存放,即首先記錄幀1的左聲道樣本和右聲道樣本,再開始幀2的記錄…
在這里插入圖片描述

非交錯模式:首先記錄的是一個周期內所有幀的左聲道樣本,再記錄所有右聲道樣本
在這里插入圖片描述

4.音頻編碼原理簡介

數字音頻信號如果不加壓縮地直接進行傳送,將會占用極大的帶寬。例如,一套雙聲道數字音頻若取樣頻率為44.1KHz,每樣值按16bit量化,則其碼率為:
2*44.1kHz*16bit=1.411Mbit/s
如此大的帶寬將給信號的傳輸和處理都帶來許多困難和成本(阿里云服務器帶寬大于5M后,每M價格是100元/月),
因此必須采取音頻壓縮技術對音頻數據進行處理,才能有效地傳輸音頻數據。

數字音頻壓縮編碼在保證信號在聽覺方面不產生失真的前提下,對音頻數據信號進行盡可能大的壓縮,降低數據量。數字音頻壓縮編碼采取去除聲音信號中冗余成分的方法來實現。所謂冗余成分指的是音頻中不能被人耳感知到的信號,它們對確定聲音的音色,音調等信息沒有任何的幫助。

冗余信號包含人耳聽覺范圍外的音頻信號以及被掩蔽掉的音頻信號等。例如,人耳所能察覺的聲音信號的頻率范圍為20Hz~20KHz,除此之外的其它頻率人耳無法察覺,都可視為冗余信號。

此外,根據人耳聽覺的生理和心理聲學現象,當一個強音信號與一個弱音信號同時存在時,弱音信號將被強音信號所掩蔽而聽不見,這樣弱音信號就可以視為冗余信號而不用傳送。這就是人耳聽覺的掩蔽效應,主要表現在頻譜掩蔽效應和時域掩蔽效應。

  1. 音頻編碼-頻譜掩蔽效應
    一個頻率的聲音能量小于某個閾值之后,人耳就會聽不到。當有另外能量較大的聲音出現的時候,該聲音頻率附近的閾值會提高很多,即所謂的掩蔽效應。如下圖所示:
    在這里插入圖片描述
    由圖中我們可以看出人耳對2KHz~5KHz的聲音最敏感,而對頻率太低或太高的聲音信號都很遲鈍,當有一個頻率為0.2KHz、強度為60dB的聲音出現時,其附近的閾值提高了很多。由圖中我們可以看出在0.1KHz以下、1KHz以上的部分,由于離0.2KHz強信號較遠,不受0.2KHz強信號影響,閾值不受影響;而在0.1KHz~1KHz范圍,由于0.2KHz強音的出現,閾值有較大的提升,人耳在此范圍所能感覺到的最小聲音強度大幅提升。如果0.1KHz~1KHz范圍內的聲音信號的強度在被提升的閾值曲線之下,由于它被0.2KHz強音信號所掩蔽,那么此時我們人耳只能聽到0.2KHz的強音信號而根本聽不見其它弱信號,這些與0.2KHz強音信號同時存在的弱音信號就可視為冗余信號而不必傳送。

  2. 音頻編碼-時域掩蔽效應
    當強音信號和弱音信號同時出現時,還存在時域掩蔽效應。即兩者發生時間很接近的時候,也會發生掩蔽效應。時域掩蔽過程曲線如圖所示,分為前掩蔽、同時掩蔽和后掩蔽三部分。
    在這里插入圖片描述
    時域掩蔽效應可以分成三種:前掩蔽,同時掩蔽,后掩蔽
    前掩蔽是指人耳在聽到強信號之前的短暫時間內,已經存在的弱信號會被掩蔽而聽不到。
    同時掩蔽是指當強信號與弱信號同時存在時,弱信號會被強信號所掩蔽而聽不到。
    后掩蔽是指當強信號消失后,需經過較長的一段時間才能重新聽見弱信號,稱為后掩蔽。這些被掩蔽的弱信號即可視為冗余信號。

  3. 音頻編碼-壓縮編碼方法
    當前數字音頻編碼領域存在著不同的編碼方案和實現方式, 但基本的編碼思路大同小異, 如圖所示。
    在這里插入圖片描述
    對每一個音頻聲道中的音頻采樣信號:
    1)將它們映射到頻域中,這種時域到頻域的映射可通過子帶濾波器實現。每個聲道中的音頻采樣塊首先要根據心理聲學模型來計算掩蔽門限值;
    2)由計算出的掩蔽門限值決定從公共比特池中分配給該聲道的不同頻率域中多少比特數,接著進行量化以及編碼工作;
    3)將控制參數及輔助數據加入數據之中,產生編碼后的數據流。

5.音視頻同步

DTS(Decoding Time Stamp):即解碼時間戳,這個時間戳的意義在于告訴播放器該在什么時候解碼這一幀的數據。
PTS(Presentation Time Stamp):即顯示時間戳,這個時間戳用來告訴播放器該在什么時候顯示這一幀的數據。

音視頻同步方式:
Audio Master:同步視頻到音頻
Video Master:同步音頻到視頻
External Clock Master:同步音頻和視頻到外部時鐘。
一般情況下 Audio Master > External Clock Master > Video Master

6.常用的音頻編碼

  • AAC,英文全稱 Advanced Audio Coding,是由 Fraunhofer IIS、杜比實驗室、AT&T、Sony等公司共同開發,在 1997 年推出的基于 MPEG-2 的音頻編碼技術。2000 年,MPEG-4 標準出現后,AAC 重新集成了其特性,加入了 SBR 技術和 PS 技術,為了區別于傳統的 MPEG-2 AAC 又稱為 MPEG-4 AAC。
  • MP3,英文全稱 MPEG-1 or MPEG-2 Audio Layer III,是當曾經非常流行的一種數字音頻編碼和有損壓縮格式,它被設計來大幅降低音頻數據量。它是在 1991 年,由位于德國埃爾朗根的研究組織 Fraunhofer-Gesellschaft 的一組工程師發明和標準化的。MP3 的普及,曾對音樂產業造成極大的沖擊與影響。
  • WMA,英文全稱 Windows Media Audio,由微軟公司開發的一種數字音頻壓縮格式,本身包括有損和無損壓縮格式。

總結

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

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

相關文章

數據結構:棧和隊列(超詳細)

目錄 ?編輯 棧&#xff1a; 棧的概念及結構&#xff1a; 棧的實現&#xff1a; 隊列&#xff1a; 隊列的概念及結構&#xff1a; 隊列的實現&#xff1a; 擴展知識&#xff1a; 以上就是個人學習線性表的個人見解和學習的解析&#xff0c;歡迎各位大佬在評論區探討&#…

PHP substr()函數詳解,PHP截取字符串。

「作者主頁」&#xff1a;士別三日wyx 「作者簡介」&#xff1a;CSDN top100、阿里云博客專家、華為云享專家、網絡安全領域優質創作者 「推薦專欄」&#xff1a;對網絡安全感興趣的小伙伴可以關注專欄《網絡安全入門到精通》 substr 一、截取字符串二、截取中文字符串三、leng…

clickhouse集群部署

一、集群部署簡介 部署的詳情可以看官網 先部署兩個server,三個keeper[zookeeper] clickhouse之前依賴的存儲是zookeeper,后來改為了keeper,官網給出了原因 所以這就決定了clickhouse有兩種安裝方式&#xff0c;依賴于keeper做存儲或者依賴于zookeeper做存儲 二、zookeeper作…

注冊中心 —— SpringCloud Netflix Eureka

Eureka 簡介 Eureka 是一個基于 REST 的服務發現組件&#xff0c;SpringCloud 將它集成在其子項目 spring-cloud-netflix 中&#xff0c;以實現 SpringCloud 的服務注冊與發現&#xff0c;同時提供了負載均衡、故障轉移等能力&#xff0c;目前 Eureka2.0 已經不再維護&#xf…

基于YOLOv8模型和Caltech數據集的行人檢測系統(PyTorch+Pyside6+YOLOv8模型)

摘要 基于YOLOv8模型和Caltech數據集的行人檢測系統可用于日常生活中檢測與定位行人&#xff0c;利用深度學習算法可實現圖片、視頻、攝像頭等方式的行人目標檢測&#xff0c;另外本系統還支持圖片、視頻等格式的結果可視化與結果導出。本系統采用YOLOv8目標檢測算法訓練數據集…

C#使用FileInfo和DirectoryInfo類來執行文件和文件夾操作

System.IO.FileInfo 和 System.IO.DirectoryInfo 是C#中用于操作文件和文件夾的類&#xff0c;它們提供了許多有用的方法和屬性來管理文件和文件夾。 System.IO.FileInfo&#xff1a; FileInfo 類用于操作單個文件的信息和內容。以下是一些常用的方法和屬性&#xff1a; Exi…

頻繁full gc 調參

Error message from spark is:java.lang.Exception: application_1678793738534_17900289 Driver Disassociated [akka.tcp://sparkDriverClient11.71.243.117:37931] <- [akka.tcp://sparkYarnSQLAM9.10.130.149:38513] disassociated! 日志里頻繁full gc &#xff0c;可以…

Python Opencv實踐 - 圖像金字塔

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape)#圖像上采樣 #cv.pyrUp(src, dstNone, dstsizeNone, borderTypeNone) #參考資料&#xff1a;https://blo…

js實現將文本轉PDF格式并下載到本地

html里面需要引入jspdf.umd.min.js和FileSaver.js jspdf.umd.min.js&#xff1a;https://www.npmjs.com/package/jspdf FileSaver.js&#xff1a;https://download.csdn.net/download/weixin_45791806/87272893?spm1001.2014.3001.5503 同時項目的根部目錄也需要引入SimHei.tt…

單片機之從C語言基礎到專家編程 - 4 C語言基礎 - 4.7 進制及其轉換

進制是數字的進位計數制&#xff0c;R進制也就是逢R進一。計算機只能識別二進制&#xff0c;也就是逢二進一&#xff0c;例如&#xff0c;11在十進制中為2&#xff0c;在二進制中逢2進1&#xff0c;則為10。以下為進制表示表。 二進制三進制八進制九進制十進制十六進制0000001…

【LeetCode 算法】Find the Losers of the Circular Game 找出轉圈游戲輸家

文章目錄 Find the Losers of the Circular Game 找出轉圈游戲輸家問題描述&#xff1a;分析代碼模擬 Tag Find the Losers of the Circular Game 找出轉圈游戲輸家 問題描述&#xff1a; n 個朋友在玩游戲。這些朋友坐成一個圈&#xff0c;按 順時針方向 從 1 到 n 編號。從…

AD域控制器將輔域控制器角色提升為主域控制器

背景 域控服務器遷移&#xff0c;已將新機器添加為該域的輔域控制器。 主域控制器&#xff1a;test-dc-01 輔域控制器&#xff1a;test-dc-02 需求將主輔域的角色進行互換&#xff0c;test-dc-01更換為輔域&#xff0c;test-dc-02更換為主域。 操作步驟 方法1 命令行修改AD域…

Datawhale Django入門組隊學習Task02

Task02 首先啟動虛擬環境&#xff08;復習一下之前的&#xff09; 先退出conda的&#xff0c; conda deactivate然后cd到我的venv下面 &#xff0c;然后cd 到 scripts&#xff0c;再 activate &#xff08;powershell里面&#xff09; 創建admin管理員 首先cd到項目路徑下&a…

mySQL 視圖 VIEW

簡化版的創建視圖 create view 視圖名 as select col ...coln from 表create view 視圖名&#xff08;依次別名&#xff09; as select col ...coln from 表create view 視圖名 as select col “別名1”&#xff0c;。。。col "別名n" from 表show tab…

Flink的常用算子以及實例

1.map 特性&#xff1a;接收一個數據&#xff0c;經過處理之后&#xff0c;就返回一個數據 1.1. 源碼分析 我們來看看map的源碼 map需要接收一個MapFunction<T,R>的對象&#xff0c;其中泛型T表示傳入的數據類型&#xff0c;R表示經過處理之后輸出的數據類型我們繼續往…

計算機提示vcruntime140_1.dll丟失的解決方法

在使用Windows操作系統時&#xff0c;有時候我們可能會遇到一些應用程序無法正常運行的問題&#xff0c;出現錯誤提示&#xff0c;其中之一可能就是缺少或損壞了vcruntime140_1.dll文件。在遇到這種情況時&#xff0c;我們可以嘗試修復vcruntime140_1.dll文件來解決問題。 先科…

后端 springboot 給 vue 提供參數

前端 /** 發起新增或修改的請求 */requestAddOrEdit(formData) {debuggerif(formData.id undefined) {formData.id }getAction(/material/getNameModelStandard, {standard: this.model.standard,name: this.model.name,model: this.model.model}).then((res) > {if (res …

《零基礎7天入門Arduino物聯網-06》程序基礎-編程語言是什么

配套視頻課程&#xff1a;《零基礎學Arduino物聯網&#xff0c;入門到進階》 配套課件資料獲取&#xff1a;微聯實驗室 配套學習套件購買&#xff1a;淘寶搜索店鋪【微聯實驗室】 程序基礎-編程語言是什么 程序是什么 程序設計可以理解為是用計算機語言創造出一系列指令的過程…

Shell 基本運算符

Shell 基本運算符 Shell 和其他編程語言一樣&#xff0c;支持多種運算符&#xff0c;包括&#xff1a; 算數運算符關系運算符布爾運算符字符串運算符文件測試運算符 原生bash不支持簡單的數學運算&#xff0c;但是可以通過其他命令來實現&#xff0c;例如 awk 和 expr&#…