日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5分钟带你了解音视频开发

發布時間:2024/3/26 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5分钟带你了解音视频开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

想賺錢,第一點就得選對自己的方向,有的行業和領域,無論你如何努力,天花板也不過如此。選對時代的風口,就算是頭豬都能被吹上天,今天我們就來聊聊音視頻開發。

蓬勃發展的音視頻開發

時至今日,短視頻App可謂是如日中天,一片興興向榮。隨著短視頻的興起,音視頻開發也越來越受到重視,但是由于音視頻開發涉及知識面比較廣,入門門檻相對較高,讓許許多多開發者望而生畏。接下來我介紹一下音視頻開發的基礎部分,幫助大家學習。

一. 顏色模式

RGB

RGB顏色模型的主要目的是在電子系統中檢測,表示和顯示圖像,比如電視和計算機,但是在傳統攝影中也有應用。

RGB

基礎的部分不過多描述,更多內容點擊標題見維基百科。

YUV

Y’UV的發明是由于彩色電視與黑白電視的過渡時期。黑白視頻只有Y(Luma,Luminance)視頻,也就是灰階值。到了彩色電視規格的制定,是以YUV/YIQ的格式來處理彩色電視圖像,把UV視作表示彩度的C(Chrominance或Chroma),如果忽略C信號,那么剩下的Y(Luma)信號就跟之前的黑白電視頻號相同,這樣一來便解決彩色電視機與黑白電視機的兼容問題。Y’UV最大的優點在于只需占用極少的帶寬,因為人眼對亮度敏感,對色度不敏感,因此減少部分UV的數據量,但人眼感知不到。

YUV也稱為YCbCr,對于每個分量如下:

  • Y:Luminance, 亮度,也就是灰度值。除了表示亮度信號外,還含有較多的綠色通道量。
  • U:Cb,藍色通道與亮度的差值。
  • V:Cr,紅色通道與亮度的差值。

如下圖,可以看到3個分量的效果差值。

YUV示例圖

RGB與YUV轉換公式 (RGB取值范圍均為0~255)

  • Y=0.299R+0.587G+0.114B ? R=Y+1.14V
  • U=-0.147R-0.289G+0.436B ? G=Y-0.39U-0.58V
  • V=0.615R-0.515G-0.100B ? B=Y+2.03U

HSV

  • 色調H: 用角度度量,取值范圍為0°~360°,從紅色開始按逆時針方向計算,紅色為0°,綠色為120°,藍色為240°。它們的補色是:黃色為60°,青色為180°,品紅為300°;

  • 飽和度S: 飽和度S表示顏色接近光譜色的程度。一種顏色,可以看成是某種光譜色與白色混合的結果。其中光譜色所占的比例愈大,顏色接近光譜色的程度就愈高,顏色的飽和度也就愈高。飽和度高,顏色則深而艷。光譜色的白光成分為0,飽和度達到最高。通常取值范圍為0%~100%,值越大,顏色越飽和。

  • 明度V: 明度表示顏色明亮的程度,對于光源色,明度值與發光體的光亮度有關;對于物體色,此值和物體的透射比或反射比有關。通常取值范圍為0%(黑)到100%(白)。

    hsv_1.png

hsv_2.png

RGB和CMY顏色模型都是面向硬件的,而HSV(Hue Saturation Value)顏色模型是面向用戶的。
HSV模型的三維表示從RGB立方體演化而來。設想從RGB沿立方體對角線的白色頂點向黑色頂點觀察,就可以看到立方體的六邊形外形。六邊形邊界表示色彩,水平軸表示純度,明度沿垂直軸測量。

HSV在做顏色檢測方面比較常用,可以參考文章HSV顏色檢測。


二. 視頻基礎概念

幀(Frame)

簡單的理解幀就是為視頻或者動畫中的每一張畫面,而視頻和動畫特效就是由無數張畫面組合而成,每一張畫面都是一幀。

幀數(Frames)

幀數其實就是為幀生成數量的簡稱,可以解釋為靜止畫面的數量

幀率(Frame Rate)

幀率(Frame rate) = 幀數(Frames)/時間(Time),單位為幀每秒(f/s, frames per second, fps)。

刷新率

屏幕每秒畫面被刷新的次數,分為垂直刷新率和水平刷新率,一般我們提到的都是指垂直刷新率,以赫茲(Hz)為單位,刷新率越高,圖像就越穩定,圖像顯示就越自然清晰。

目前, 大多數顯示器根據其設定按 30Hz、 60Hz、 120Hz 或者 144Hz 的頻率進行刷新。 而其中最常見的刷新頻率是 60 Hz。 這樣做是為了繼承以前電視機刷新頻率為 60Hz 的設定。

幀率關鍵值
  • 10~12 FPS:由于人類眼睛的特殊生理結構,如果所看畫面之幀率高于每秒約10至12幀的時候,就會認為是連貫的,此現象稱之為視覺暫留。
  • 24 FPS:一般電影的拍攝及播放幀數是每秒24幀。
  • 60 FPS:這個幀率對人眼識別來說已經具備較高的平滑度。
  • 85 FPS:人類大腦處理視頻的極限,人眼無法分辨更高頻率的差異。
60FPS

在做頁面性能優化時,常用60FPS作為一個基準,所以需要盡量讓每一幀的渲染控制在16ms內,這樣才能達到一秒60幀的流暢度。

分辨率

視頻、圖片的畫面大小或尺寸。

碼率/比特率

單位時間播放連續的媒體如壓縮后的音頻或視頻的比特數量。常用單位“比特每秒”,縮寫是“bit/s”。比特率越高,帶寬消耗得越多。


三. CPU & GPU

CPU:中央處理器(英文全名:Central Processing Unit),包括運算器(算術邏輯運算單元,ALU,Arithmetic Logic Unit)和高速緩沖存儲器(Cache)及實現它們之間聯系的數據(Data)、控制及狀態的總線(Bus)。

GPU:圖形處理器(英語全名:Graphics Processing Unit),專為執行復雜的數學和幾何計算而設計的,擁有2D或3D圖形加速功能。

GPU相比于CPU,更強大的2D、3D圖形計算能力,可以讓CPU從圖形處理的任務中解放出來,執行其他更多的系統任務,這樣可以大大提高計算機的整體性能。

硬件加速

硬件加速(Hardware acceleration)就是利用硬件模塊來替代軟件算法以充分利用硬件所固有的快速特性。硬件加速通常比軟件算法的效率要高。

將2D、3D圖形計算相關工作交給GPU處理,從而釋放CPU的壓力,也是屬于硬件加速的一種。

硬解和軟解

硬解和上面的硬件加速對應,即使用硬件模塊來解析視頻、音頻文件等,而軟解即是用CPU去計算解析。


四. 視頻封裝格式(Container format)

格式全名開發商初版年限特點
MP4MP4Moving Picture Experts Group,即 MPEG(動態圖像專家組)1998常用有損壓縮格式,通用性強
AVIAudio Video Interleaved(音頻視頻交錯格式)微軟1992體積大算法簡單
MOVQuickTime 影片格式Apple1991蘋果專屬格式對很多其他的播放器支持不是很友好
WMVWindows Media Video微軟2003微軟的專業視頻格式,兼容性并不是很好
FLVAdobe Flash 網絡流媒體格式Adobe2002被淘汰的早期網絡視頻格式
MKVMatroska 多媒體容器Matroska.org2002最有包容性的視頻格式,能容納無限量、多種不同類型編碼的視頻、音頻及字幕流
WebMWebMGoogle2010谷歌推出的 HTML5 標準的網絡視頻標準,以MKV容器格式為基礎開發
RMVBRMVBReal Networks1997根據不同的網絡傳輸速率,而制定出不同的壓縮比率,從而實現在低速率的網絡上進行影像數據實時傳送和播放,具有體積小,畫質不錯的優點。已過時。

更多參考 維基百科視頻文件格式。


五. 視頻編碼格式(Codec)

1. MPEG:(Moving Picture Experts Group, ISO旗下的組織)

MPEG是Moving Picture Experts Group的簡稱。這個名字本來的含義是指一個研究視頻和音頻編碼標準的“動態圖像專家組”組織,成立于1988年,致力開發視頻、音頻的壓縮編碼技術。

版本用途
MPEG - 1VCD
MPEG - 2DVD、數字有線電視信號
MPEG - 4(第二部分)視頻電話、網絡傳輸、廣播和媒體存儲

2. H.26X : ITU-T VCEG(Visual Coding Experts Group,國際電聯旗下的標準化組織)制定

版本用于
H.261老的視頻會議和視頻電話產品
H.262DVD、數字有線電視信號(與MPEG共同制定,與MPEG-2完全一致)
H.263視頻會議、視頻電話和網絡視頻
H.264高精度視頻的錄制、壓縮和發布格式(與MPEG-4第十部分完全一致),當前主流
H.265H.264的兩倍之壓縮率,可支持4K分辨率甚至到超高畫質電視,最高分辨率可達到8192×4320(8K分辨率)

3. H.264

當前主流的編碼格式是H.264,這是由ITU-T VCEG和MPEG共同制定的標準,MPEG - 4第十部分內容也是H.264。

視頻封裝格式 & 視頻編碼格式

封裝格式是提供了一個容器,用于存放視頻、音頻以及其他配置信息,而編碼格式是指對視頻畫面內容進行壓縮的一種標準。


六. 音頻格式

  • WAV:因其文件擴展名為wav,微軟和IBM聯合開發的標準,數據本身的格式為PCM或壓縮型,屬于無損格式。
  • MP3 : MP3是一種音頻壓縮技術,其全稱是動態影像專家壓縮標準音頻層面3(Moving Picture Experts Group Audio Layer III),簡稱為MP3。壓縮比4:1~10:1之間。
  • AAC:Advanced Audio Coding, 出現于1997年,由Fraunhofer IIS、杜比實驗室、AT&T、Sony、Nokia等公司共同開發。AAC壓縮比通常為18:1。相比MP3,采用更高效的編碼算法,音質更佳,文件更小。
  • Opus:Opus格式是一個開放格式,使用上沒有任何專利或限制,比MP3、AAC、HE-AAC等常見格式,有更低的延遲和更好的聲音壓縮率。2012年7月2日,Opus被IETF批準用于標準化。

七. H.264編碼介紹

IPB幀

  • I幀:幀內編碼幀(intra picture),采用幀內壓縮去掉空間冗余信息。
  • P幀:前向預測編碼幀(predictive-frame),通過將圖像序列中前面已經編碼幀的時間冗余信息來壓縮傳輸數據量的編碼圖像。參考前面的I幀或者P幀。
  • B幀:雙向預測內插編碼幀(bi-directional interpolated prediction frame),既考慮源圖像序列前面的已編碼幀,又顧及源圖像序列后面的已編碼幀之間的冗余信息,來壓縮傳輸數據量的編碼圖像,也稱為雙向編碼幀。參考前面一個的I幀或者P幀及其后面的一個P幀。

PTS和DTS

  • DTS(Decoding Time Stamp)是標識讀入內存中bit流在什么時候開始送入解碼器中進行解碼。也就是解碼順序的時間戳。
  • PTS(Presentation Time Stamp)用于度量解碼后的視頻幀什么時候被顯示出來。在沒有B幀的情況下,DTS和PTS的輸出順序是一樣的,一旦存在B幀,PTS和DTS則會不同。也就是顯示順序的時間戳。

GOP

即Group of picture(圖像組),指兩個I幀之間的距離,Reference(參考周期)指兩個P幀之間的距離。

一個I幀所占用的字節數大于一個P幀,一個P幀所占用的字節數大于一個B幀。所以在碼率不變的前提下,GOP值越大,P、B幀的數量會越多,平均每個I、P、B幀所占用的字節數就越多,也就更容易獲取較好的圖像質量;Reference越大,B幀的數量越多,同理也更容易獲得較好的圖像質量。

簡而言之:

  • 字節大小:I > P > B
  • 解碼順序:I -> P -> B

GOP解碼案例


更多Android開發詳細資料掃碼免費獲得

寫在最后

在技術領域內,沒有任何一門課程可以讓你學完后一勞永逸,再好的課程也只能是“師傅領進門,修行靠個人”。“學無止境”這句話,在任何技術領域,都不只是良好的習慣,更是程序員和工程師們不被時代淘汰、獲得更好機會和發展的必要前提。

如果你覺得自己學習效率低,缺乏正確的指導,可以掃碼,領取更多詳細音視頻資料,并加入我們資源豐富,學習氛圍濃厚的技術圈一起學習交流吧!

加入我們吧!群內有許多來自一線的技術大牛,也有在小廠或外包公司奮斗的碼農,我們致力打造一個平等,高質量的Android交流圈子,不一定能短期就讓每個人的技術突飛猛進,但從長遠來說,眼光,格局,長遠發展的方向才是最重要的。

35歲中年危機大多是因為被短期的利益牽著走,過早壓榨掉了價值,如果能一開始就樹立一個正確的長遠的職業規劃。35歲后的你只會比周圍的人更值錢。

總結

以上是生活随笔為你收集整理的5分钟带你了解音视频开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。