欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

android音,android音頻解碼

Android音視頻開發(fā)——H264的基本概念

ffmpeg常用命令

10多年的臨縣網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整臨縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“臨縣網(wǎng)站設(shè)計(jì)”,“臨縣網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

封裝格式 。

編碼的本質(zhì)就是壓縮數(shù)據(jù)

音頻編碼的作用: 將音頻采樣數(shù)據(jù)( PCM 等)壓縮成音頻碼流,從而降低音頻的數(shù)據(jù)量。 常用的音頻編碼方式有以下幾種:

H264壓縮技術(shù)主要采用了以下幾種方法對(duì)視頻數(shù)據(jù)進(jìn)行壓縮。包括:

經(jīng)過壓縮后的幀分為:I幀,P幀和B幀:

除了I/P/B幀外,還有圖像序列GOP。

組成碼流的結(jié)構(gòu)中,包含了以下幾個(gè)部分,從大到小依次是:

H264視頻序列,圖像,片組,片,NALU,宏塊,像素

H264功能分為兩層:

1.H264視頻序列包括一系列的NAL單元,每個(gè)NAL單元包含一個(gè)RBSP。

2.一個(gè)原始的H.264由 N個(gè)NALU單元組成

3.NALU單元由[StartCode][NALU Header][NALU Payload]三部分組成

5.NAL Header

由三部分組成forbidden_bit(1bit)(禁止位),nal_reference_bit(2bits)(優(yōu)先級(jí),,值越大,該NAL越重要),nal_unit_type(5bits)(類型)

nal_unit_type

6.NAL的解碼單元的流程如下

android怎么讀

Android發(fā)音:['?ndr?id]。中文也讀:安卓。

簡(jiǎn)介:

Android是一個(gè)以Linux為基礎(chǔ)的半開源操作系統(tǒng),主要用于移動(dòng)設(shè)備,由Google和開放手持設(shè)備聯(lián)盟開發(fā)與領(lǐng)導(dǎo)。 Android 系統(tǒng)最初由安迪·魯賓(Andy Rubin)制作,最初主要支持手機(jī)。2005年8月17日被Google收購(gòu)。2007年11月5日,Google與84家硬件制造商、軟件開發(fā)商及電信營(yíng)運(yùn)商組成開放手持設(shè)備聯(lián)盟(Open Handset Alliance)來共同研發(fā)改良Android系統(tǒng)并生產(chǎn)搭載Android的智慧型手機(jī),并逐漸拓展到平板電腦及其他領(lǐng)域上。隨后,Google以Apache免費(fèi)開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。

Android-X86是由Beyounn和Cwhuang主持設(shè)計(jì)的。提供了一套完整的可行源代碼樹,配套文檔以及Live CD與Live USB。Android系統(tǒng)主要應(yīng)用在智能手機(jī)以及平板電腦設(shè)備上。日前,越來越多使用英特爾和AMD處理器的計(jì)算機(jī)也開始運(yùn)行Android系統(tǒng)。

Android -- 音視頻基礎(chǔ)知識(shí)

幀,是視頻的一個(gè)基本概念,表示一張畫面,如上面的翻頁(yè)動(dòng)畫書中的一頁(yè),就是一幀。一個(gè)視頻就是由許許多多幀組成的。

幀率,即單位時(shí)間內(nèi)幀的數(shù)量,單位為:幀/秒 或fps(frames per second)。一秒內(nèi)包含多少?gòu)垐D片,圖片越多,畫面越順滑,過渡越自然。 幀率的一般以下幾個(gè)典型值:

24/25 fps:1秒 24/25 幀,一般的電影幀率。

30/60 fps:1秒 30/60 幀,游戲的幀率,30幀可以接受,60幀會(huì)感覺更加流暢逼真。

85 fps以上人眼基本無法察覺出來了,所以更高的幀率在視頻里沒有太大意義。

這里我們只講常用到的兩種色彩空間。

RGB的顏色模式應(yīng)該是我們最熟悉的一種,在現(xiàn)在的電子設(shè)備中應(yīng)用廣泛。通過R G B三種基礎(chǔ)色,可以混合出所有的顏色。

這里著重講一下YUV,這種色彩空間并不是我們熟悉的。這是一種亮度與色度分離的色彩格式。

早期的電視都是黑白的,即只有亮度值,即Y。有了彩色電視以后,加入了UV兩種色度,形成現(xiàn)在的YUV,也叫YCbCr。

Y:亮度,就是灰度值。除了表示亮度信號(hào)外,還含有較多的綠色通道量。

U:藍(lán)色通道與亮度的差值。

V:紅色通道與亮度的差值。

音頻數(shù)據(jù)的承載方式最常用的是 脈沖編碼調(diào)制 ,即 PCM 。

在自然界中,聲音是連續(xù)不斷的,是一種模擬信號(hào),那怎樣才能把聲音保存下來呢?那就是把聲音數(shù)字化,即轉(zhuǎn)換為數(shù)字信號(hào)。

我們知道聲音是一種波,有自己的振幅和頻率,那么要保存聲音,就要保存聲音在各個(gè)時(shí)間點(diǎn)上的振幅。

而數(shù)字信號(hào)并不能連續(xù)保存所有時(shí)間點(diǎn)的振幅,事實(shí)上,并不需要保存連續(xù)的信號(hào),就可以還原到人耳可接受的聲音。

根據(jù)奈奎斯特采樣定理:為了不失真地恢復(fù)模擬信號(hào),采樣頻率應(yīng)該不小于模擬信號(hào)頻譜中最高頻率的2倍。

根據(jù)以上分析,PCM的采集步驟分為以下步驟:

采樣率,即采樣的頻率。

上面提到,采樣率要大于原聲波頻率的2倍,人耳能聽到的最高頻率為20kHz,所以為了滿足人耳的聽覺要求,采樣率至少為40kHz,通常為44.1kHz,更高的通常為48kHz。

采樣位數(shù),涉及到上面提到的振幅量化。波形振幅在模擬信號(hào)上也是連續(xù)的樣本值,而在數(shù)字信號(hào)中,信號(hào)一般是不連續(xù)的,所以模擬信號(hào)量化以后,只能取一個(gè)近似的整數(shù)值,為了記錄這些振幅值,采樣器會(huì)采用一個(gè)固定的位數(shù)來記錄這些振幅值,通常有8位、16位、32位。

位數(shù)越多,記錄的值越準(zhǔn)確,還原度越高。

最后就是編碼了。由于數(shù)字信號(hào)是由0,1組成的,因此,需要將幅度值轉(zhuǎn)換為一系列0和1進(jìn)行存儲(chǔ),也就是編碼,最后得到的數(shù)據(jù)就是數(shù)字信號(hào):一串0和1組成的數(shù)據(jù)。

整個(gè)過程如下:

聲道數(shù),是指支持能不同發(fā)聲(注意是不同聲音)的音響的個(gè)數(shù)。 單聲道:1個(gè)聲道

雙聲道:2個(gè)聲道

立體聲道:默認(rèn)為2個(gè)聲道

立體聲道(4聲道):4個(gè)聲道

碼率,是指一個(gè)數(shù)據(jù)流中每秒鐘能通過的信息量,單位bps(bit per second)

碼率 = 采樣率 * 采樣位數(shù) * 聲道數(shù)

這里的編碼和上面音頻中提到的編碼不是同個(gè)概念,而是指壓縮編碼。

我們知道,在計(jì)算機(jī)的世界中,一切都是0和1組成的,音頻和視頻數(shù)據(jù)也不例外。由于音視頻的數(shù)據(jù)量龐大,如果按照裸流數(shù)據(jù)存儲(chǔ)的話,那將需要耗費(fèi)非常大的存儲(chǔ)空間,也不利于傳送。而音視頻中,其實(shí)包含了大量0和1的重復(fù)數(shù)據(jù),因此可以通過一定的算法來壓縮這些0和1的數(shù)據(jù)。

特別在視頻中,由于畫面是逐漸過渡的,因此整個(gè)視頻中,包含了大量畫面/像素的重復(fù),這正好提供了非常大的壓縮空間。

因此,編碼可以大大減小音視頻數(shù)據(jù)的大小,讓音視頻更容易存儲(chǔ)和傳送。

視頻編碼格式有很多,比如H26x系列和MPEG系列的編碼,這些編碼格式都是為了適應(yīng)時(shí)代發(fā)展而出現(xiàn)的。

其中,H26x(1/2/3/4/5)系列由ITU(International Telecommunication Union)國(guó)際電傳視訊聯(lián)盟主導(dǎo)

MPEG(1/2/3/4)系列由MPEG(Moving Picture Experts Group, ISO旗下的組織)主導(dǎo)。

當(dāng)然,他們也有聯(lián)合制定的編碼標(biāo)準(zhǔn),那就是現(xiàn)在主流的編碼格式H264,當(dāng)然還有下一代更先進(jìn)的壓縮編碼標(biāo)準(zhǔn)H265。

H264是目前最主流的視頻編碼標(biāo)準(zhǔn),所以我們后續(xù)的文章中主要以該編碼格式為基準(zhǔn)。

H264由ITU和MPEG共同定制,屬于MPEG-4第十部分內(nèi)容。

我們已經(jīng)知道,視頻是由一幀一幀畫面構(gòu)成的,但是在視頻的數(shù)據(jù)中,并不是真正按照一幀一幀原始數(shù)據(jù)保存下來的(如果這樣,壓縮編碼就沒有意義了)。

H264會(huì)根據(jù)一段時(shí)間內(nèi),畫面的變化情況,選取一幀畫面作為完整編碼,下一幀只記錄與上一幀完整數(shù)據(jù)的差別,是一個(gè)動(dòng)態(tài)壓縮的過程。

在H264中,三種類型的幀數(shù)據(jù)分別為

I幀:幀內(nèi)編碼幀。就是一個(gè)完整幀。

P幀:前向預(yù)測(cè)編碼幀。是一個(gè)非完整幀,通過參考前面的I幀或P幀生成。

B幀:雙向預(yù)測(cè)內(nèi)插編碼幀。參考前后圖像幀編碼生成。B幀依賴其前最近的一個(gè)I幀或P幀及其后最近的一個(gè)P幀。

全稱:Group of picture。指一組變化不大的視頻幀。

GOP的第一幀成為關(guān)鍵幀:IDR

IDR都是I幀,可以防止一幀解碼出錯(cuò),導(dǎo)致后面所有幀解碼出錯(cuò)的問題。當(dāng)解碼器在解碼到IDR的時(shí)候,會(huì)將之前的參考幀清空,重新開始一個(gè)新的序列,這樣,即便前面一幀解碼出現(xiàn)重大錯(cuò)誤,也不會(huì)蔓延到后面的數(shù)據(jù)中。

DTS全稱:Decoding Time Stamp。標(biāo)示讀入內(nèi)存中數(shù)據(jù)流在什么時(shí)候開始送入解碼器中進(jìn)行解碼。也就是解碼順序的時(shí)間戳。

PTS全稱:Presentation Time Stamp。用于標(biāo)示解碼后的視頻幀什么時(shí)候被顯示出來。

前面我們介紹了RGB和YUV兩種圖像色彩空間。H264采用的是YUV。

YUV存儲(chǔ)方式分為兩大類:planar 和 packed。

planar如下:

packed如下:

上面說過,由于人眼對(duì)色度敏感度低,所以可以通過省略一些色度信息,即亮度共用一些色度信息,進(jìn)而節(jié)省存儲(chǔ)空間。因此,planar又區(qū)分了以下幾種格式:YUV444、 YUV422、YUV420。

YUV 4:4:4采樣,每一個(gè)Y對(duì)應(yīng)一組UV分量。

YUV 4:2:2采樣,每?jī)蓚€(gè)Y共用一組UV分量。

YUV 4:2:0采樣,每四個(gè)Y共用一組UV分量。

其中,最常用的就是YUV420。

YUV420屬于planar存儲(chǔ)方式,但是又分兩種類型:

YUV420P:三平面存儲(chǔ)。數(shù)據(jù)組成為YYYYYYYYUUVV(如I420)或YYYYYYYYVVUU(如YV12)。

YUV420SP:兩平面存儲(chǔ)。分為兩種類型YYYYYYYYUVUV(如NV12)或YYYYYYYYVUVU(如NV21)

原始的PCM音頻數(shù)據(jù)也是非常大的數(shù)據(jù)量,因此也需要對(duì)其進(jìn)行壓縮編碼。

和視頻編碼一樣,音頻也有許多的編碼格式,如:WAV、MP3、WMA、APE、FLAC等等,音樂發(fā)燒友應(yīng)該對(duì)這些格式非常熟悉,特別是后兩種無損壓縮格式。

但是,我們今天的主角不是他們,而是另外一個(gè)叫AAC的壓縮格式。

AAC是新一代的音頻有損壓縮技術(shù),一種高壓縮比的音頻壓縮算法。在MP4視頻中的音頻數(shù)據(jù),大多數(shù)時(shí)候都是采用AAC壓縮格式。

AAC格式主要分為兩種:ADIF、ADTS。

ADIF:Audio Data Interchange Format。音頻數(shù)據(jù)交換格式。這種格式的特征是可以確定的找到這個(gè)音頻數(shù)據(jù)的開始,不需進(jìn)行在音頻數(shù)據(jù)流中間開始的解碼,即它的解碼必須在明確定義的開始處進(jìn)行。這種格式常用在磁盤文件中。

ADTS:Audio Data Transport Stream。音頻數(shù)據(jù)傳輸流。這種格式的特征是它是一個(gè)有同步字的比特流,解碼可以在這個(gè)流中任何位置開始。它的特征類似于mp3數(shù)據(jù)流格式。

ADIF數(shù)據(jù)格式:

ADTS 一幀 數(shù)據(jù)格式(中間部分,左右省略號(hào)為前后數(shù)據(jù)幀):

AAC內(nèi)部結(jié)構(gòu)也不再贅述,可以參考AAC 文件解析及解碼流程

細(xì)心的讀者可能已經(jīng)發(fā)現(xiàn),前面我們介紹的各種音視頻的編碼格式,沒有一種是我們平時(shí)使用到的視頻格式,比如:mp4、rmvb、avi、mkv、mov...

沒錯(cuò),這些我們熟悉的視頻格式,其實(shí)是包裹了音視頻編碼數(shù)據(jù)的容器,用來把以特定編碼標(biāo)準(zhǔn)編碼的視頻流和音頻流混在一起,成為一個(gè)文件。

例如:mp4支持H264、H265等視頻編碼和AAC、MP3等音頻編碼。

我們?cè)谝恍┎シ牌髦袝?huì)看到,有硬解碼和軟解碼兩種播放形式給我們選擇,但是我們大部分時(shí)候并不能感覺出他們的區(qū)別,對(duì)于普通用戶來說,只要能播放就行了。

那么他們內(nèi)部究竟有什么區(qū)別呢?

在手機(jī)或者PC上,都會(huì)有CPU、GPU或者解碼器等硬件。通常,我們的計(jì)算都是在CPU上進(jìn)行的,也就是我們軟件的執(zhí)行芯片,而GPU主要負(fù)責(zé)畫面的顯示(是一種硬件加速)。

所謂軟解碼,就是指利用CPU的計(jì)算能力來解碼,通常如果CPU的能力不是很強(qiáng)的時(shí)候,一則解碼速度會(huì)比較慢,二則手機(jī)可能出現(xiàn)發(fā)熱現(xiàn)象。但是,由于使用統(tǒng)一的算法,兼容性會(huì)很好。

硬解碼,指的是利用手機(jī)上專門的解碼芯片來加速解碼。通常硬解碼的解碼速度會(huì)快很多,但是由于硬解碼由各個(gè)廠家實(shí)現(xiàn),質(zhì)量參差不齊,非常容易出現(xiàn)兼容性問題。

MediaCodec 是Android 4.1(api 16)版本引入的編解碼接口,是所有想在Android上開發(fā)音視頻的開發(fā)人員繞不開的坑。

由于Android碎片化嚴(yán)重,雖然經(jīng)過多年的發(fā)展,Android硬解已經(jīng)有了很大改觀,但實(shí)際上各個(gè)廠家實(shí)現(xiàn)不同, 還是會(huì)有一些意想不到的坑。

相對(duì)于FFmpeg,Android原生硬解碼還是相對(duì)容易入門一些,所以接下來,我將會(huì)從MediaCodec入手,講解如何實(shí)現(xiàn)視頻的編解碼,以及引入OpenGL實(shí)現(xiàn)對(duì)視頻的編輯,最后才引入FFmpeg來實(shí)現(xiàn)軟解,算是一個(gè)比較常規(guī)的音視頻開發(fā)入門流程吧。

Android音視頻:Android支持的媒體格式

下表描述了Android平臺(tái)內(nèi)置的媒體格式支持。不保證在所有Android平臺(tái)版本上都可用的編解碼器在括號(hào)中注明,例如:(Android 3.0+)。請(qǐng)注意,任何給定的移動(dòng)設(shè)備都可能支持表中未列出的其他格式或文件類型。 Android兼容性定義的第5部分指定設(shè)備必須支持的媒體格式才能與Android 8.1兼容。。

下表列出了使用H.264 Baseline Profile編解碼器建議播放的Android媒體框架視頻編碼配置文件和參數(shù)。相同的建議適用于主要配置文件編解碼器,僅在Android 6.0及更高版本中可用。

下表列出了使用VP8媒體編解碼器建議播放的Android媒體框架視頻編碼配置文件和參數(shù)。

設(shè)備實(shí)現(xiàn)必須支持動(dòng)態(tài)視頻分辨率和幀速率切換,通過同一流中的標(biāo)準(zhǔn)Android API實(shí)時(shí)為所有VP8,VP9,H.264和H.265編解碼器提供支持,并達(dá)到在該設(shè)備下的每個(gè)編解碼器支持的最大分辨率。

支持Dolby Vision解碼器的實(shí)現(xiàn)必須遵循以下準(zhǔn)則:

對(duì)于通過HTTP或RTSP流式傳輸?shù)囊曨l內(nèi)容,還有其他要求:

音頻和視頻播放支持以下網(wǎng)絡(luò)協(xié)議:

[本章完...]

Android音視頻開發(fā)-前言

Android音視頻開發(fā),我想很多開發(fā)者都知道這個(gè)概念,音視頻開發(fā)不僅需要掌握?qǐng)D像、音頻、視頻的基礎(chǔ)知識(shí),并且還需要掌握如何對(duì)它們進(jìn)行采集、渲染、處理、傳輸?shù)纫幌盗械拈_發(fā)和應(yīng)用,因此,音視頻開發(fā)是一門涉及到很多內(nèi)容的領(lǐng)域,主要內(nèi)容如下(一圖勝千言)

采集,在音視頻開發(fā)中主要針對(duì)的是數(shù)據(jù)從哪里來的問題。圖像、視頻的可視化數(shù)據(jù)來自攝像頭這毫無疑問,而音頻數(shù)據(jù)則是來自麥克風(fēng),關(guān)于 采集 的知識(shí)點(diǎn)涉及到如下內(nèi)容:

渲染,在音視頻開發(fā)中主要針對(duì)的是數(shù)據(jù)展現(xiàn)的問題。我們知道,圖像、視頻最終都是要繪制到視圖(View層)上面,而音頻最終都是要輸出到揚(yáng)聲器,因此,做音視頻渲染,就要掌握如下的技術(shù)知識(shí):

渲染,在音視頻開發(fā)中主要針對(duì)的是數(shù)據(jù)如何加工的問題,那具體怎么處理?如下圖:

針對(duì)圖像和音視頻的處理,實(shí)現(xiàn)方式除了使用系統(tǒng)的 API,大多數(shù)也會(huì)使用一些優(yōu)秀的第三方庫(kù),通過掌握這些第三方庫(kù)的原理和使用方法,基本上就可以滿足日常音視頻處理工作了,這些庫(kù)包括但不限于:

傳輸,在音視頻開發(fā)中主要針對(duì)的是數(shù)據(jù)共享的問題,采集完并處理數(shù)據(jù)以后,我們?nèi)绾慰焖賯鬏敂?shù)據(jù)這一難題又?jǐn)[在了面前,試想如果一個(gè)以音視頻為主導(dǎo)業(yè)務(wù)的APP如果在播放過程中非常卡頓的話,用戶體驗(yàn)?zāi)菚?huì)是非常糟糕的。因此,解決傳輸?shù)膯栴}也就擺在了我們的面前。那么,數(shù)據(jù)究竟如何實(shí)現(xiàn)傳輸共享呢 ?共享,實(shí)現(xiàn)細(xì)則最重要的一點(diǎn),就是協(xié)議,因此需要具體掌握的協(xié)議如下:

總體來說 Android音視頻開發(fā)屬于高級(jí)研發(fā)工程師涉及到的領(lǐng)域,市場(chǎng)上對(duì)于Android音視頻開發(fā)工程師提供的薪資真的是very very可觀的,另外,Android音視頻開發(fā)的學(xué)習(xí)系列文章主要是參考 Jhuster前輩 的博客和指導(dǎo)意見,這里在次感謝前輩們的無私分享,前輩也給出了具體的學(xué)習(xí)任務(wù)線,具體內(nèi)容如下:

如果這篇文章對(duì)您有開發(fā)or學(xué)習(xí)上的些許幫助,希望各位看官留下寶貴的star,謝謝。

網(wǎng)頁(yè)標(biāo)題:android音,android音頻解碼
本文URL:http://chinadenli.net/article31/dsgdjpd.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站移動(dòng)網(wǎng)站建設(shè)小程序開發(fā)App設(shè)計(jì)企業(yè)建站App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)