FFMPEG音視頻基礎問題和被面試問到的東西


一、YUV的格式

  1.planner模式

  2.packet模式

  3.半planner模式

    

  https://www.jianshu.com/p/538ee63f4c1c  YUV格式詳解

二、H264基礎概念

  1.SPS

   a.profile

   b.視頻長寬

  2.PPS

   a.I幀

   b.P幀

   c.B幀

  3.PTS和DTS

   PTS: 顯示時間戳,表示解碼后顯示的時間

   DTS: 解碼時間戳,表示送入解碼器的順序

  4.H264存儲的兩個形態

   a.Annex B : 

    StartCode :NALU單元,開頭一般是0001或者001

    防競爭字節:為了區分 0 0 0 1,它采用0 0 0 0x3 1作為區分

    多用於網絡流媒體中:rtmp、rtp格式

   b.AVCC :

    表示NALU長度的前綴,不定長       用4、2、1來存儲這個NALU的長度

    防競爭字節

  多用於文件存儲中  mp4的格式

 

1.音頻播放過快,視頻慢,如何選擇丟幀

2.碼率和分辨率都會影響視頻的清晰度

3.生產者和消費者多多的關系

4.C++死鎖的成因:

    A.忘記釋放鎖

    B.單線程重復申請鎖,對同一個事物加兩遍鎖

    C.雙線程多鎖申請,都是指對一個事物加鎖

    D.環形鎖申請 A鎖B、B鎖A

5.sps和pps的區別

    SPS是序列參數集    0x67

    PPS是圖像參數集    0x68

   在SPS序列參數集中可以解析出圖像的寬,高和幀率等信息。而在h264文件中,最開始的兩幀數據就是SPS和PPS,這個h264文件只存在一個SPS幀和一個PPS幀。

 

7.AAC和PCM的區別

   AAC在數據開始時候加了一些參數:采樣率、聲道、采樣大小

 

FFMPEG:

圖片如何合成視頻

 

 

編碼流程:

1.av_register_all

2.為AVFormatContext  分配內存

3.打開文件

4.創建輸出碼流AVSream

5.找到編碼器

6.打開編碼器

7.寫文件頭,沒有的就不寫入

8.循環編碼視頻像素數據->視頻壓縮數據

循環編碼音頻采樣數據->音頻壓縮數據  ———>AVFrame轉化為AVPacket

9.將編碼后的視頻碼流寫入文件  ——>AVPacket轉化為AVFormat函數

10.關閉編碼器

11.寫文件尾

12.關閉資源文件

 

 

解碼流程:

1.av_register_all

2.創建AVFormatContext的對象上下文

3.打開文件

4. avformat_find_stream_info

5.找到解碼器

6.打開解碼器

7.創建AVCodecContext上下文

8.av_read_frame :將avPacket數據轉換為avFrame數據

 

glUniform1i() ——>這個可以設置對應紋理的第幾層

glTexSubImage2D() 和glTexImage2D區別————>替換紋理的內容

 

幾個不粗的網址

atomic_thread_fence    https://blog.csdn.net/wxj1992/article/details/103917093

https://www.cnblogs.com/yskn/p/9355556.html

https://blog.csdn.net/liumf2005/article/details/8489265 內存屏障

 

https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=230931344   音視頻常見的文檔

 

FFMPEG的教程文檔:
http://ffmpeg.org/documentation.html 

 

https://blog.csdn.net/leixiaohua1020/article/details/50618190 音視頻濾鏡使用

 

https://www.cnblogs.com/fandx/p/12208107.html. FFMPEG分析一個流、包、幀的結構

 

https://www.cnblogs.com/leisure_chn/p/10584901.html     編輯代碼的一些基礎

 

 

FFMPEG面試大綱:
https://zhuanlan.zhihu.com/p/126693434

播放器的seek操作內部是如何實現的?

https://github.com/yhaolpz/FFmpegCmd ————>這個是一個demo,可以學學

 

https://www.cnblogs.com/leisure_chn/p/10429145.html —————>這個人寫的音視頻博客很強,關於FFMPEG的

 

 

https://www.cnblogs.com/inception6-lxc/p/8686156.html     C++的面試大全文檔

 

 

 

未來要學習的FFMPEG代碼

https://p.codekk.com/detail/c/xufuji456/FFmpegAndroid  

 

https://p.codekk.com/detail/Android/LanSoSdk/LanSoEditor_common

 

https://www.jianshu.com/u/35083fcb7747

 

FFmpeg - 打造一款萬能的音樂播放器

https://www.jianshu.com/p/d8300535bbf0  

 

 

FFMPEG的學習庫的文檔

http://ffmpeg.org/doxygen/trunk/files.html    

 

 

即將下載

https://github.com/leixiaohua1020/simplest_ffmpeg_mobile

 

https://github.com/mabeijianxi/FFmpeg4Android

 

https://github.com/tanersener/mobile-ffmpeg

 

https://github.com/WangShuo1143368701/FFmpegAndroid

 

https://blog.csdn.net/leixiaohua1020/article/list/1   雷振華的網址

 

 

 

 

這兩篇文章差不多,可以綜合參考一下

音視頻高手開發系列之FFMPEG結構體分析

https://blog.csdn.net/leixiaohua1020/article/details/14215821   

 

基本數據結構的解釋

https://www.jianshu.com/p/9bc380f5225c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

 

 

 

OpenGL的學習

https://github.com/wangchao0837/OpenGlCameraRender   

 

美圖秀秀demo

https://github.com/wuhaoyu1990/MagicCamera  

 

瘋狂學習openGL

https://search.bilibili.com/all?keyword=OpenGL%20%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E6%88%90%E9%AD%94       ———————————

 

https://www.jianshu.com/p/eea4d8582499 ———————這個OPENGL的博客可以仔細看看

https://blog.csdn.net/u010607947/article/details/76431474?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v28-1-76431474.nonecase&utm_term=dot%20opengl%20函數&spm=1000.2123.3001.4430  ——————————————OPENGL內置變量和函數

 

https://www.bilibili.com/video/BV1t7411E723?p=1   OPENGL的學習

 

https://ke.qq.com/course/2263825  FFMPEG的視頻

https://ke.qq.com/course/143145   性能架構視頻

https://ke.qq.com/course/441819

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM