一存璃、顏色模式
RGB
YUV:YUV4:4:4 YUV4:2:2 YUV4:2:0
RGB與YUV轉(zhuǎn)換公式
HSV
二氮昧、視頻基礎(chǔ)概念
幀
幀數(shù)
幀率:=幀數(shù)/時(shí)間
刷新率(HZ)
分辨率:視頻、圖片的畫面大小或尺寸
碼率/比特率
三迟杂、CPU & GPU
CPU:中央處理器
GPU:圖形處理器
硬解和軟解(ffmpeg)
視頻硬解碼和軟解碼的區(qū)別:
- 軟解碼和硬解碼的區(qū)別
軟編碼:使用CPU進(jìn)行編碼
硬編碼:使用非CPU進(jìn)行編碼泌枪,如顯卡GPU耳贬、專用的DSP、FPGA醋旦、ASIC芯片等 - 軟編碼和硬編碼比較
軟編碼:實(shí)現(xiàn)直接恒水、簡單,參數(shù)調(diào)整方便饲齐,升級易钉凌,但CPU負(fù)載重,性能較硬編碼低捂人,低碼率下質(zhì)量通常比硬編碼要好一點(diǎn)御雕。
硬編碼:性能高矢沿,低碼率下通常質(zhì)量低于軟編碼器,但部分產(chǎn)品在GPU硬件平臺移植了優(yōu)秀的軟編碼算法(如X264)的酸纲,質(zhì)量基本等同于軟編碼捣鲸。
四、視頻封裝格式
MP4/AVI/MOV/WMV/FLV/MKV/RMVB
五闽坡、視頻編碼格式codec
MPEG
H.26X
H.264
視頻封裝格式&視頻編碼格式:封裝格式是提供了一個(gè)容器栽惶,用于存放視頻、音頻以及其他配置信息疾嗅,而編碼格式是指對視頻畫面內(nèi)容進(jìn)行壓縮的一種標(biāo)準(zhǔn)外厂。
六、音頻格式
WAV\MP3\AAC
七代承、H.264編碼介紹
IPB關(guān)鍵幀
PTS和DTS
GOP
ffmpeg在不同系統(tǒng)中的安裝與簡單裁剪
音頻基礎(chǔ)知識酣衷,如頻率、采樣大小和通道數(shù)等
音頻的壓縮原理
如何從不同的設(shè)備上采集音頻數(shù)據(jù)
如何對音頻進(jìn)行不同的編解碼
視頻的基礎(chǔ)知識
H264編碼原理
如何從不同設(shè)備上采集視頻數(shù)據(jù)
熟悉YUV的一些常見格式(YUV420次泽、NV21穿仪,YV12的不同)
如何將YUV數(shù)據(jù)編碼為H264/H265、VP8/VP9等
FLV/RTMP/HLS/MP4協(xié)議要十分清楚
......
作者:Github資料整理員
鏈接:https://www.zhihu.com/question/325943454/answer/2025622908
來源:知乎
著作權(quán)歸作者所有意荤。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)啊片,非商業(yè)轉(zhuǎn)載請注明出處。
FFmpeg/WebRTC/RTMP音視頻流媒體技術(shù)
1.1 音視頻基礎(chǔ)
1.1 .1 FFMPEG環(huán)境搭建
- Windows平臺搭建FFMPEG
- Linux平臺搭建FFMPEG
1.1 .1音視頻基礎(chǔ)
音頻基礎(chǔ)
視頻基礎(chǔ)
常用工具
Medialnfo
VLC播放器
1.2 FFMPEG命令
- 視頻錄制
- 多媒體文件的分解/復(fù)用
- 裁剪與合并
- 圖片/視頻互轉(zhuǎn)
- 直播相關(guān)
- 各種濾鏡
1.3 FFMPEG編程
1.3 .1 音視頻渲染
- SDL環(huán)境搭建
- SDL事件
- SDL線程
- YUV視頻播放
- PCM聲音播放
1.3 .2 FFmpeg API
- FFmpeg框架
- FFmpeg內(nèi)存模型
- FFmpeg常用結(jié)構(gòu)體
1.3 .3 音視頻編碼
- AAC編解碼原理
- H264編解碼原理
- AAC解碼
- AAC編碼
- H264解碼
- H264編碼
- FFmpeg解碼流程
- FFmpeg編碼流程
1.3 .4 音視頻封裝格式
- FLV封裝格式
- MP4封裝格式
- 多媒體解復(fù)用
- 多媒體復(fù)用實(shí)戰(zhàn)
- 多媒體轉(zhuǎn)封裝格式實(shí)戰(zhàn)
1.3 .5 音視頻過濾器
- 音視頻過濾器
- 視頻過濾器
1.3 .6 播放器開發(fā)
- 播放器框架
- 模塊
- 音視頻解碼
- 播放器控制
- 音視頻同步
1.3 .7 ffplay播放器
- 掌握ffplay.c的意義
- ffplay框架
- 音視頻解碼
- 音視頻控制
- 音視頻同步
- 參數(shù)機(jī)制
1.3 .8 ffmpeg錄制轉(zhuǎn)碼
- 掌握ffmpeg.c
- ffmpeg框架
- 音視頻編碼
- 封裝格式轉(zhuǎn)換
- 提取音頻
- 提取視頻
- logo疊加
- 音視頻文件拼接
- filter機(jī)制
1.4 流媒體
1.4 .1 rtmp流媒體
- rtmp
- wireshark抓包
- rtmp拉流
- rtmp推流
1.4 .2 hls流媒體
- hls
- HTTP
- TS格式
- wireshark
- hls拉流
- ffmpeg hls源碼
- hls多碼率機(jī)制
1.4 .3 http-flv流媒體
- http-flv
- wireshark
- http chunk機(jī)制
- http-flv拉流
- ffmpeg http-flv源碼
1.4 .4 RTMP/HLS/HTTP-FLV流媒體服務(wù)器
- 整體框架
- rtmp推流
- rtmp拉流
- hls拉流
- http-flv拉流
- FFmpeg轉(zhuǎn)碼
- 首屏秒開技術(shù)
- forward集群源碼
- edge集群源碼
- 負(fù)載均衡部署方式
1.4 .5 RTSP流媒體
- RTSP
- RTP
- RTCP
- RTSP流媒體服務(wù)器搭建
- RTSP推流
- RTSP拉流
- wireshark
- RTSP流媒體服務(wù)器
1.5 WEBRTC
1.5 .1 WebRTC中級開發(fā)
- WebRTC通話原理
- WebRTC開發(fā)環(huán)境搭建
- coturn最佳搭建
- 如何采集音視頻數(shù)據(jù)
- —對—通話時(shí)序
- 信令服務(wù)器設(shè)計(jì)
- Web一對一通話
- Web和Android通話
- AppRTC
1.5 .2 WebRTC高級開發(fā)
- 自定義攝像頭分辨率
- 碼率限制
- 調(diào)整編碼器順序
- Mesh模型多方通話
- Janus框架
- Janus Web客戶端源碼
- Janus Android客戶端源碼
- Janus Windows客戶端源碼
- Janus信令設(shè)計(jì)
- 基于Janus實(shí)現(xiàn)會議系統(tǒng)
- WebRTC源碼編譯
- 擁塞控制算法
- FEC
- jitter buffer
1.5 .3 Janus服務(wù)器源碼
- 源碼結(jié)構(gòu)
- 插件機(jī)制
- 線程
- 信令交互過程
- videoroom
- sdp
- rtp
- srtp
- rtcp
- stun
- turn
音頻編碼
視頻編碼
IBP關(guān)鍵幀
音頻文件封裝格式
流媒體協(xié)議
時(shí)間戳
音視頻同步
雷霄驊--音視頻技術(shù)基礎(chǔ):封裝技術(shù)玖像、視頻壓縮編碼技術(shù)紫谷、音頻壓縮編碼技術(shù),流媒體協(xié)議技術(shù)(考慮傳輸?shù)骄W(wǎng)絡(luò)上時(shí))
- 封裝格式:后綴:avi捐寥、rmvb笤昨、mp4、flv等握恳,把音頻數(shù)據(jù)和視頻數(shù)據(jù)打包成一個(gè)文件的規(guī)范瞒窒。(MediaInfo查看)
-
視頻播放器原理:視頻播放器播放一個(gè)互聯(lián)網(wǎng)上的視頻文件,需要經(jīng)過以下幾個(gè)步驟:解協(xié)議(播放互聯(lián)網(wǎng)上視頻文件需要乡洼,本地文件不需要)崇裁、解封裝、解碼音視頻束昵、音視頻同步拔稳。
解協(xié)議:將流媒體協(xié)議的數(shù)據(jù),解析為標(biāo)準(zhǔn)的相應(yīng)的封裝格式數(shù)據(jù)锹雏。音視頻在網(wǎng)絡(luò)上傳播的時(shí)候巴比,常常采用各種流媒體協(xié)議,例如HTTP,RTMP轻绞,或是MMS等等腰耙。這些協(xié)議在傳輸視音頻數(shù)據(jù)的同時(shí),也會傳輸一些信令數(shù)據(jù)铲球。這些信令數(shù)據(jù)包括對播放的控制(播放挺庞,暫停,停止)稼病,或者對網(wǎng)絡(luò)狀態(tài)的描述等选侨。解協(xié)議的過程中會去除掉信令數(shù)據(jù)而只保留視音頻數(shù)據(jù)。例如然走,采用RTMP協(xié)議傳輸?shù)臄?shù)據(jù)援制,經(jīng)過解協(xié)議操作后,輸出FLV格式的數(shù)據(jù)芍瑞。
解封裝:將輸入的封裝格式的數(shù)據(jù)晨仑,分離成為音頻流壓縮編碼數(shù)據(jù)和視頻流壓縮編碼數(shù)據(jù)。封裝格式種類很多拆檬,例如MP4洪己,MKV,RMVB竟贯,TS答捕,F(xiàn)LV,AVI等等屑那,它的作用就是將已經(jīng)壓縮編碼的視頻數(shù)據(jù)和音頻數(shù)據(jù)按照一定的格式放到一起拱镐。例如,F(xiàn)LV格式的數(shù)據(jù)持际,經(jīng)過解封裝操作后沃琅,輸出H.264編碼的視頻碼流和AAC編碼的音頻碼流。
解碼:將視頻/音頻壓縮編碼數(shù)據(jù)蜘欲,解碼成為非壓縮的視頻/音頻原始數(shù)據(jù)益眉。音頻的壓縮編碼標(biāo)準(zhǔn)包含AAC,MP3芒填,AC-3等等呜叫,視頻的壓縮編碼標(biāo)準(zhǔn)則包含H.264,MPEG2殿衰,VC-1等等。解碼是整個(gè)系統(tǒng)中最重要也是最復(fù)雜的一個(gè)環(huán)節(jié)盛泡。通過解碼闷祥,壓縮編碼的視頻數(shù)據(jù)輸出成為非壓縮的顏色數(shù)據(jù),例如YUV420P,RGB等等凯砍;壓縮編碼的音頻數(shù)據(jù)輸出成為非壓縮的音頻抽樣數(shù)據(jù)箱硕,例如PCM數(shù)據(jù)。
視音頻同步的作用悟衩,就是根據(jù)解封裝模塊處理過程中獲取到的參數(shù)信息剧罩,同步解碼出來的視頻和音頻數(shù)據(jù),并將視頻音頻數(shù)據(jù)送至系統(tǒng)的顯卡和聲卡播放出來座泳。