一、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