2021年4月23日
這是本人在某某網(wǎng)的學(xué)習(xí)音視頻筆記,主要包括音視頻的入門和ffmpeg的實(shí)戰(zhàn)沛善。筆記內(nèi)容按照上課流程進(jìn)行排版的,每個人的基礎(chǔ)不一樣淘钟,我只把我自己認(rèn)為需要記的才會寫入筆記牛郑;本人五年iOS開發(fā)芜飘,了解一下~~ ??
1. 【音頻基礎(chǔ)知識】
2. 【音頻采集實(shí)戰(zhàn)】
3. 【音頻編碼原理】
4. 【音頻編解碼實(shí)戰(zhàn)】
5. 【視頻基礎(chǔ)知識】
6. 【視頻采集實(shí)戰(zhàn)】
7. 【視頻編碼原理】
8. 【視頻編解碼實(shí)戰(zhàn)】
9. 【RTMP協(xié)議和傳輸】
10. 【搭建流媒體服務(wù)器】
會持續(xù)更新~~
可以加入QQ交流群一起學(xué)習(xí):326144274
其他入門必備知識
【ffmpeg的編譯和安裝】
【ffmpeg相關(guān)命令】
【音視頻入門常見問題】
Linux基礎(chǔ):
1. 基礎(chǔ)命令
1. ls 顯示當(dāng)前目錄的子目錄
2. cd 進(jìn)入某個目錄
3. pwd 獲取當(dāng)前目錄
4. mkdir 創(chuàng)建文件夾
5. cp 拷貝一個文件到另外一個地方
6. rm 刪除單個文件 rm -rf 循環(huán)刪除 子目錄
7. sudo 使用管理員身份 操作
8. pkg-config 鏈接 C/C++ 庫
9. echo 寫數(shù)據(jù)到一個文件 如果沒有這個文件 就創(chuàng)建 如: echo "dada" test.txt
10. cat 查看文件內(nèi)容
11. which 獲取某個環(huán)境變量的目錄地址
12. | grep 查找某個命令的詳情
2. vim基本命令
- 詳細(xì)命令地址: https://www.runoob.com/linux/linux-vim.html
- vim 分為命令模式和編輯模式蜀变,默認(rèn)是命令模式通過i/a切換到編輯模式鼠哥,按退出鍵就從編輯模式切換到命令模式驻售;
1. :w 保存
2. :q 退出 保存并退出 :wq
3. i/a 編輯文件 i表示在光標(biāo)之后插入字符露久,a表示在光標(biāo)之前插入字符;
4. h 光標(biāo)左移 j 上移 k 下移 L 右移
5. 拷貝 yy(拷貝一行)/yw(拷貝一個詞)
6. 粘貼 p
7. 刪除 dd(刪除一行)/ dw (刪除一個詞)
8. 跳到文件頭 gg 文件尾 GG
9. 移動到行首 ^ 行尾 $
10. 按單詞移動:向前w/2w/3w/... 向后b/2b/3b/...
11. 查找 /關(guān)鍵字...
12. 查找與替換 %/關(guān)鍵字/替換字/gc(g表示一行中多次搜索關(guān)鍵字c表示替換時需要經(jīng)過確認(rèn)) %表示查找整個文件欺栗,也可以使用行業(yè)限制查找區(qū)域如1,10;
在查找通過n跳到下一個查找結(jié)果毫痕,N 跳回到上一個查找結(jié)果;
13. 顯示行號 set number
14. 多窗口模式 split(水平分窗口) / vsplit(垂直切分窗口)
窗口跳轉(zhuǎn) ctrl + ww / w[hjkl]
放大某一個窗口 ctrl + w + -/| ,恢復(fù): ctrl + w + =
關(guān)閉窗口 close
15. 設(shè)置代碼關(guān)鍵字高亮 : syntax on
3. linux中的環(huán)境變量
mac中環(huán)境變量的地址:~/.bash_profile 使用source命令使環(huán)境變量生效纸巷;
pkg-config命令 直接獲取PKG_CONFIG_PATH環(huán)境中的地址去查找.pc文件 如:pkg-config --libs --cflags 庫名 其中--libs指庫的地址 --cflags庫的頭文件
詳細(xì)了解地址:https://www.cnblogs.com/sddai/p/10266624.html
1. PATH 可執(zhí)行的二進(jìn)制文件镇草,添加進(jìn)去后可以作為命令調(diào)用
2. PKG_CONFIG_PATH 用于放置.pc庫,同LD_LIBRARY_PATH
3. LD_LIBARARY_PATH 用于放置.so庫瘤旨,如果自己安裝的.so庫不在/usr/lib:/usr/lib64:/lib:/lib64:/usr/local/lib:/usr/local/lib64下梯啤, 則需要加到該環(huán)境變量中,系統(tǒng)才能調(diào)用到該庫
- vim編輯時的常用設(shè)置存哲,將以下以內(nèi)容編輯到~/.vimrc文件中;
“去掉討厭的有關(guān)vi一致性模式因宇,避免以前版本的一些bug和局限
set nocompatible
“顯示行號
set number
“檢測文件的類型
filetype on
“記錄歷史的行數(shù)
set history=1000
“背景使用黑色
set background=dark
“語法高亮度顯示
syntax on
“下面兩行在進(jìn)行編寫代碼時,在格式對起上很有用祟偷;
“第一行察滑,vim使用自動對起,也就是把當(dāng)前行的對起格式應(yīng)用到下一行修肠;
“第二行贺辰,依據(jù)上面的對起格式,智能的選擇對起方式嵌施,對于類似C語言編
“寫上很有用
set autoindent
set smartindent
“第一行設(shè)置tab鍵為4個空格饲化,第二行設(shè)置當(dāng)行之間交錯時使用4個空格
set tabstop=4
set shiftwidth=4
“設(shè)置匹配模式,類似當(dāng)輸入一個左括號時會匹配相應(yīng)的那個右括號
set showmatch
“去除vim的GUI版本中的toolbar
set guioptions-=T
“當(dāng)vim進(jìn)行編輯時吗伤,如果命令錯誤吃靠,會發(fā)出一個響聲,該設(shè)置去掉響聲
set vb t_vb=
“在編輯過程中足淆,在右下角顯示光標(biāo)位置的狀態(tài)行
set ruler
“默認(rèn)情況下巢块,尋找匹配是高亮度顯示的礁阁,該設(shè)置關(guān)閉高亮顯示
set nohls
“查詢時非常方便,如要查找book單詞族奢,當(dāng)輸入到/b時姥闭,會自動找到第一
“個b開頭的單詞,當(dāng)輸入到/bo時歹鱼,會自動找到第一個bo開頭的單詞泣栈,依
“次類推,進(jìn)行查找時弥姻,使用此設(shè)置會快速找到答案,當(dāng)你找要匹配的單詞
“時掺涛,別忘記回車
set incsearch
“修改一個文件后庭敦,自動進(jìn)行備份,備份的文件名為原文件名加“~“后綴
if has(“vms”)
set nobackup
else
set backup
endif
C語言基礎(chǔ):
1. 指針 可以對指針進(jìn)行操作 也可以獲取指針指向的內(nèi)容進(jìn)行操作 獲取指針的內(nèi)容 *變量名
2. 堆內(nèi)存的分配和釋放
1. 內(nèi)存分配 void *v = malloc(size) malloc屬于”stdlib“庫;
2. 內(nèi)存釋放 free(v) v = NULL;
3. C語言的一些較難的使用
1. 函數(shù)指針 聲明寫法:返回值類型 (*函數(shù)指針變量名) (形參列表) 面向?qū)ο笾械亩鄳B(tài)實(shí)際上就是用的函數(shù)指針實(shí)現(xiàn)的薪缆,還有iOS開發(fā)中的runtime中的message_invoke和message_send方法也是使用的函數(shù)指針進(jìn)行發(fā)消息的秧廉;
2. 文件操作
1. FILE *file
2. 打開文件 FILE* fopen(path, mode)其中mode w == write r == read ;
3. 寫文件 fwrite(字符串指針,每個字符的大小,總大小,FILE);
4. 讀文件 fread(buffer,每個字符的大小,總大小,FILE);
5. 關(guān)閉文件 fclose(FILE);
C 的編譯與執(zhí)行
-
編譯: gcc/clang -g(debug模式) -o(指定輸出的可執(zhí)行文件名稱) bin xxx.c;
- -i. -L. (點(diǎn)表示當(dāng)前目錄) -l(省略lib的庫名)
-
pkg-config ---cflags --libs ...
可以替代 -i -L -l
- 生成靜態(tài)庫
- 將c文件編譯成.o文件:clang -g -c c文件名.c
- libtool - static -o libLIBNAME.a c文件名.o
- 鏈接分為靜態(tài)鏈接和動態(tài)鏈接,靜態(tài)鏈接是會把相關(guān)的靜態(tài)庫添加到程序拣帽,動態(tài)鏈接是在運(yùn)行時疼电,去共享區(qū),調(diào)用訪問的動態(tài)庫减拭;
-
調(diào)試器
將可執(zhí)行程序加載到調(diào)試器:lldb exe 蔽豺,加載到調(diào)試器后會在同級目錄生成一個dsym文件;
查看調(diào)試信息文件:dwarfdump 調(diào)試信息文件(在dsym下面)
- 執(zhí)行: ./可執(zhí)行文件名
音視頻處理流程:
1. 直播客戶端的處理流程
1. 音視頻采集
2. 音視頻編碼: 有損編碼 無損編碼
3. 傳輸?shù)接^看端 - 解碼-渲染
2. 音頻數(shù)據(jù)的流轉(zhuǎn)
1. 將采集到模擬信號轉(zhuǎn)成數(shù)字信號拧粪,數(shù)據(jù)的格式一般為PCM修陡;
2. 壓縮 編碼為 例:aac/mp3 等;
3. 生成多媒體文件可霎,相當(dāng)于再從外面套個套魄鸦,相當(dāng)于穿了個馬甲,就是平常所用到的格式 如: MP4/flv癣朗,這個馬甲也可以自己定義;
4. 解碼:就先確定格式拾因,脫掉馬甲拿到壓縮數(shù)據(jù)進(jìn)行解碼,還原成pcm就能在觀看端進(jìn)行播放了旷余;