先自我介紹一下,小編浙江大學畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7
深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學效果低效又漫長,而且極易碰到天花板技術停滯不前!
因此收集整理了一份《2024年最新Android移動開發(fā)全套學習資料》,初衷也很簡單,就是希望能夠幫助到想自學提升又不知道該從何學起的朋友。
既有適合小白學習的零基礎資料,也有適合3年以上經(jīng)驗的小伙伴深入學習提升的進階課程,涵蓋了95%以上Android開發(fā)知識點,真正體系化!
由于文件比較多,這里只是將部分目錄截圖出來,全套包含大廠面經(jīng)、學習筆記、源碼講義、實戰(zhàn)項目、大綱路線、講解視頻,并且后續(xù)會持續(xù)更新
如果你需要這些資料,可以添加V獲?。簐ip204888 (備注Android)
正文
- DNS 解析慢
為了有效降低 DNS 解析對首開的影響,我們可以提前完成播放域名->IP 地址的解析,
并緩存起來,播放的時候,直接傳入帶 IP 地址的播放地址,從而省去了 DNS 解析的耗時。
如果要支持用 IP 地址播放,是需要修改底層 ffmpeg 源碼的。 - 播放策略
很多側(cè)重點播的播放器,為了減少卡頓,會有一些緩沖策略,當緩沖足夠多的數(shù)據(jù)之后 ,再送入解碼播放。
而為了加快首開效果,需要對播放的緩沖策略做一些調(diào)整,如果第一幀還沒有渲染出來的情況下,
不要做任何緩沖,直接送入解碼器解碼播放,這樣就可以保證沒有任何因為「主動」緩沖帶來的首開延時。
- 播放參數(shù)設置
所有基于 ffmpeg 的播放器,都會遇到avformat_find_stream_info這個函數(shù)耗時比較久,
從而增大了首開時間,該函數(shù)主要作用是通過讀取一定字節(jié)的碼流數(shù)據(jù),
來分析碼流的基本信息,如編碼信息、時長、碼率、幀率等等,它由兩個參數(shù)來控制其讀取的數(shù)據(jù)量大小和時長,
一個是 probesize,一個是 analyzeduration。
減少 probesize 和 analyzeduration 可以有效地減少avformat_find_stream_info的函數(shù)耗時,
從而加快首開,但是需要注意的是,設置地太小可能會導致讀取的數(shù)據(jù)量不足,從而無法解析出碼流信息,導致播放失敗,
或者出現(xiàn)只有音頻沒有視頻,只有視頻沒有音頻的問題。
- 服務端優(yōu)化
- 服務器關鍵幀緩沖
- CDN最近策略
3.直方圖在圖像處理里面最重要的作用是什么?
參考答案
- 灰度直方圖的定義:灰度級的函數(shù),描述圖像中該灰度級的像素個數(shù)或該灰度級像素出現(xiàn)的頻率。反映了圖像灰度分布的情況。
- 灰度直方圖只能反映圖像的灰度分布情況,不能反映圖像像素的位置,即所有的空間信息全部丟失。
- 直方圖的應用:
- a.數(shù)字化參數(shù):判斷一幅圖像是否合理的利用了全部被允許的灰度級范圍。一般一幅圖應該利用全部或幾乎全部可能的灰度級,否則等于增加了量化間隔,丟失的信息將不能恢復。
- b.邊界閾值選取(確定圖像二值化的閾值):假定某圖像的灰度直方圖具有二峰性,則表明這個圖像的較亮區(qū)域和較暗區(qū)域可以很好地分離,以這一點為閾值點,可以得到很好地2值處理效果(區(qū)分物體與背景)。
- c.當物體部分的灰度值比其他部分的灰度值大時,可利用直方圖統(tǒng)計圖像中物體的面積。
- d.計算圖像的信息量H。
4.數(shù)字圖像濾波有哪些方法?
參考答案
均值濾波(鄰域平均法)、中值濾波(消除獨立的噪聲點)、高斯濾波(線性平滑濾波,消除高斯噪聲,對整幅圖像進行加權(quán)平均,每一個像素點的值都由其本身和鄰域內(nèi)的其他像素值經(jīng)過加權(quán)平均后得到)、KNN濾波、高通濾波、低通濾波等。
5.圖像可以提取的特征有哪些?
參考答案
顏色、紋理(粗糙度、方向度、對比度)、形狀(曲率、離心率、主軸方向)、色彩等。
6.衡量圖像重建好壞的標準有哪些?怎樣計算?
參考答案
- SNR(信噪比)
- PSNR=10*log10((2n-1)2/MSE)
(MSE是原圖像與處理圖像之間均方誤差,所以計算PSNR需要2幅圖像的數(shù)據(jù)?。?/li> - SSIM
(結(jié)構(gòu)相似性分別從亮度對比度、對比度、結(jié)構(gòu)3方面度量圖像的相似性)
7.AAC和PCM的區(qū)別?
參考答案
AAC在數(shù)據(jù)開始時候加了一些參數(shù):采樣率、聲道、采樣大小
8.H264存儲的兩個形態(tài)?
參考答案
- a. Annex B :
StartCode :NALU單元,開頭一般是0001或者001
防競爭字節(jié):為了區(qū)分 0 0 0 1,它采用0 0 0 0x3 1作為區(qū)分
多用于網(wǎng)絡流媒體中:rtmp、rtp格式
- b. AVCC :
表示NALU長度的前綴,不定長用4、2、1來存儲這個NALU的長度
防競爭字節(jié)
多用于文件存儲中mp4的格式
9.FFMPEG:圖片如何合成視頻
參考答案
編碼流程:
- av_register_all
- 為AVFormatContext 分配內(nèi)存
- 打開文件
- 創(chuàng)建輸出碼流AVSream
- 找到編碼器
- 打開編碼器
- 寫文件頭,沒有的就不寫入
- 循環(huán)編碼視頻像素數(shù)據(jù)->視頻壓縮數(shù)據(jù)
- 循環(huán)編碼音頻采樣數(shù)據(jù)->音頻壓縮數(shù)據(jù) ———>AVFrame轉(zhuǎn)化為AVPacket
- 將編碼后的視頻碼流寫入文件 ——>AVPacket轉(zhuǎn)化為AVFormat函數(shù)
- 關閉編碼器
- 寫文件尾
- 關閉資源文件
解碼流程:
- av_register_all
- 創(chuàng)建AVFormatContext的對象上下文
- 打開文件
- avformat_find_stream_info
- 找到解碼器
- 打開解碼器
- 創(chuàng)建AVCodecContext上下文
- av_read_frame :將avPacket數(shù)據(jù)轉(zhuǎn)換為avFrame數(shù)據(jù)
glUniform1i() ——>這個可以設置對應紋理的第幾層
glTexSubImage2D() 和glTexImage2D區(qū)別————>替換紋理的內(nèi)容
10.常見的音視頻格式有哪些?
參考答案
- MPEG(運動圖像專家組)是Motion Picture Experts Group 的縮寫。這類格式包括了MPEG-1,MPEG-2和MPEG-4在內(nèi)的多種視頻格式。
- AVI,音頻視頻交錯(Audio Video Interleaved)的英文縮寫。AVI這個由微軟公司發(fā)布的視頻格式,在視頻領域可以說是最悠久的格式之一。
- MOV,使用過Mac機的朋友應該多少接觸過QuickTime。QuickTime原本是Apple公司用于Mac計算機上的一種圖像視頻處理軟件。
- ASF(Advanced Streaming format高級流格式)。ASF 是MICROSOFT 為了和的Real player 競爭而發(fā)展出來的一種可以直接在網(wǎng)上觀看視頻節(jié)目的文件壓縮格式。
- WMV,一種獨立于編碼方式的在Internet上實時傳播多媒體的技術標準,Microsoft公司希望用其取代QuickTime之類的技術標準以及WAV、AVI之類的文件擴展名。
- NAVI,如果發(fā)現(xiàn)原來的播放軟件突然打不開此類格式的AVI文件,那你就要考慮是不是碰到了n AVI。n AVI是New AVI 的縮寫,是一個名為Shadow Realm 的地下組織發(fā)展起來的一種新視頻格式。
- 3GP是一種3G流媒體的視頻編碼格式,主要是為了配合3G網(wǎng)絡的高傳輸速度而開發(fā)的,也是目前手機中最為常見的一種視頻格式。
- REAL VIDEO(RA、RAM)格式由一開始就是定位在視頻流應用方面的,也可以說是視頻流技術的始創(chuàng)者。
- MKV,一種后綴為MKV的視頻文件頻頻出現(xiàn)在網(wǎng)絡上,它可在一個文件中集成多條不同類型的音軌和字幕軌,而且其視頻編碼的自由度也非常大,可以是常見的DivX、XviD、3IVX,甚至可以是RealVideo、QuickTime、WMV 這類流式視頻。
- FLV是FLASH VIDEO的簡稱,F(xiàn)LV流媒體格式是一種新的視頻格式。由于它形成的文件極小、加載速度極快,使得網(wǎng)絡觀看視頻文件成為可能,它的出現(xiàn)有效地解決了視頻文件導入Flash后,使導出的SWF文件體積龐大,不能在網(wǎng)絡上很好的使用等缺點。
- F4V,作為一種更小更清晰,更利于在網(wǎng)絡傳播的格式,F(xiàn)4V已經(jīng)逐漸取代了傳統(tǒng)FLV,也已經(jīng)被大多數(shù)主流播放器兼容播放,而不需要通過轉(zhuǎn)換等復雜的方式。
11.請指出“1080p”的意義?
12.請解釋顏色的本質(zhì)及其數(shù)字記錄原理,并說出幾個你所知道的色域。
13.請解釋“矢量圖”和“位圖”的區(qū)別?
14.請從“光圈”“快門速度”“感光度”“白平衡”“景深”中任選2個進行敘述?
15.視頻分量YUV的意義及數(shù)字化格式?
16.在MPEG標準中圖像類型有哪些?
17.列舉一些音頻編解碼常用的實現(xiàn)方案?
18.請敘述MPEG視頻基本碼流結(jié)構(gòu)?
19.sps和pps的區(qū)別?
20.請敘述AMR基本碼流結(jié)構(gòu)?
由于篇幅限制,有些面試題中的內(nèi)容記錄過多,文章版面放不下,暫且只能用圖片方式進展示部分,如需參考完整版的可以參考《Android?音視頻面試整理篇》:
https://qr18.cn/AcV6Ap
21.說一說ffmpeg的數(shù)據(jù)結(jié)構(gòu)?
參考答案
ffmpeg的數(shù)據(jù)結(jié)構(gòu)可以分為以下幾類:
- (1)解協(xié)議(http,rtsp,rtmp,mms) AVIOContext,URLProtocol,URLContext主要存儲視音頻使用的協(xié)議的類型以及狀態(tài)。 URLProtocol存儲輸入音視頻使用的封裝格式。每種協(xié)議都對應一個URLProtocol結(jié)構(gòu)。(注意:FFMPEG中文件也被當做一種協(xié)議“file”)
- (2)解封裝(flv,avi,rmvb,mp4) AVFormatContext主要存儲視音頻封裝格式中包含的信息 ffmpeg支持各種各樣的音視頻輸入和輸出文件格式(例如FLV, MKV, MP4, AVI),而 AVInputFormat和AVOutputFormat 結(jié)構(gòu)體則保存了這些格式的信息和一些常規(guī)設置。
- (3)解碼(h264,mpeg2,aac,mp3) AVStream是存儲每一個視頻/音頻流信息的結(jié)構(gòu)體。 AVCodecContext: 編解碼器上下文結(jié)構(gòu)體,存儲該視頻/音頻流使用解碼方式的相關數(shù)據(jù)。 AVCodec: 每種視頻(音頻)編解碼器(例如H.264解碼器)對應一 個該結(jié)構(gòu)體。 三者的關系如下圖:
- (4)存數(shù)據(jù) 對于視頻,每個結(jié)構(gòu)一般是存一幀;音頻可能有好幾幀
- 解碼前數(shù)據(jù):AVPacket
- 解碼后數(shù)據(jù):AVFrame
22.說一說AVFormatContext 和 AVInputFormat之間的關系?
參考答案
- AVInputFormat被封裝在AVFormatContext里
- AVFormatContext 作為API被外界調(diào)用
- AVInputFormat 主要是FFmpeg內(nèi)部調(diào)用
- AVFormatContext里保存了視頻文件封裝格式相關信息,它是負責儲存數(shù)據(jù)的結(jié)構(gòu)體。而AVInputFormat代表了各個封裝格式,屬于方法,這是一種面向?qū)ο蟮姆庋b。
通過 int avformat_open_input(AVFormatContext **ps, const char filename,AVInputFormat fmt, AVDictionary options)函數(shù)裝載解封裝器. AVFormatContext 和 AVInputFormat之間的關系
23.說一說AVFormatContext, AVStream和AVCodecContext之間的關系?
參考答案
AVStream和AVpacket中都有index字段用于區(qū)分不同的碼流(視頻、音頻、字幕等),AVFormatContext中包含輸入的AVStream數(shù)組用于記錄各個碼流,nb_streams記錄輸入碼流的數(shù)量。AVCodecContext記錄著AVStream需要用那種解碼器來進行解碼。
24.說一說視頻拼接處理步驟?(細節(jié)處理,比如分辨率大小不一,時間處理等等)
參考答案
尾聲
最后,我再重復一次,如果你想成為一個優(yōu)秀的 Android 開發(fā)人員,請集中精力,對基礎和重要的事情做深度研究。
對于很多初中級Android工程師而言,想要提升技能,往往是自己摸索成長,不成體系的學習效果低效漫長且無助。 整理的這些架構(gòu)技術希望對Android開發(fā)的朋友們有所參考以及少走彎路,本文的重點是你有沒有收獲與成長,其余的都不重要,希望讀者們能謹記這一點。
這里,筆者分享一份從架構(gòu)哲學的層面來剖析的視頻及資料分享給大家梳理了多年的架構(gòu)經(jīng)驗,籌備近6個月最新錄制的,相信這份視頻能給你帶來不一樣的啟發(fā)、收獲。
Android進階學習資料庫
一共十個專題,包括了Android進階所有學習資料,Android進階視頻,F(xiàn)lutter,java基礎,kotlin,NDK模塊,計算機網(wǎng)絡,數(shù)據(jù)結(jié)構(gòu)與算法,微信小程序,面試題解析,framework源碼!
網(wǎng)上學習資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。
需要這份系統(tǒng)化的資料的朋友,可以添加V獲?。簐ip204888 (備注Android)
一個人可以走的很快,但一群人才能走的更遠!不論你是正從事IT行業(yè)的老鳥或是對IT行業(yè)感興趣的新人,都歡迎加入我們的的圈子(技術交流、學習資源、職場吐槽、大廠內(nèi)推、面試輔導),讓我們一起學習成長!文章來源地址http://www.zghlxwxcb.cn/news/detail-860552.html
面試題解析,framework源碼!
[外鏈圖片轉(zhuǎn)存中…(img-sigxMiPJ-1713353747070)]
網(wǎng)上學習資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。
需要這份系統(tǒng)化的資料的朋友,可以添加V獲?。簐ip204888 (備注Android)
[外鏈圖片轉(zhuǎn)存中…(img-TExQCo6z-1713353747071)]文章來源:http://www.zghlxwxcb.cn/news/detail-860552.html
一個人可以走的很快,但一群人才能走的更遠!不論你是正從事IT行業(yè)的老鳥或是對IT行業(yè)感興趣的新人,都歡迎加入我們的的圈子(技術交流、學習資源、職場吐槽、大廠內(nèi)推、面試輔導),讓我們一起學習成長!
到了這里,關于精選58道——Android 音視頻面試題_安卓音視頻面試題(3)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!