音視頻開發(fā)入門學(xué)習(xí)筆記

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)用到該庫 
  1. 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);
http://img.mukewang.com/szimg/60826de709a1312a12181172.jpg

C 的編譯與執(zhí)行

  1. 編譯: gcc/clang -g(debug模式) -o(指定輸出的可執(zhí)行文件名稱) bin xxx.c;


    image.png
  • -i. -L. (點(diǎn)表示當(dāng)前目錄) -l(省略lib的庫名)
  • pkg-config ---cflags --libs ...可以替代 -i -L -l
  1. 生成靜態(tài)庫
  • 將c文件編譯成.o文件:clang -g -c c文件名.c
  • libtool - static -o libLIBNAME.a c文件名.o
  1. 鏈接分為靜態(tài)鏈接和動態(tài)鏈接,靜態(tài)鏈接是會把相關(guān)的靜態(tài)庫添加到程序拣帽,動態(tài)鏈接是在運(yùn)行時疼电,去共享區(qū),調(diào)用訪問的動態(tài)庫减拭;
  1. 調(diào)試器


    調(diào)試器原理
調(diào)試命令

將可執(zhí)行程序加載到調(diào)試器:lldb exe 蔽豺,加載到調(diào)試器后會在同級目錄生成一個dsym文件;
查看調(diào)試信息文件:dwarfdump 調(diào)試信息文件(在dsym下面)

  1. 執(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)行播放了旷余;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绢记,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荣暮,更是在濱河造成了極大的恐慌庭惜,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穗酥,死亡現(xiàn)場離奇詭異护赊,居然都是意外死亡惠遏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門骏啰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來节吮,“玉大人,你說我怎么就攤上這事判耕⊥讣ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵壁熄,是天一觀的道長帚豪。 經(jīng)常有香客問我,道長草丧,這世上最難降的妖魔是什么狸臣? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮昌执,結(jié)果婚禮上烛亦,老公的妹妹穿的比我還像新娘。我一直安慰自己懂拾,他們只是感情好煤禽,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岖赋,像睡著了一般檬果。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贾节,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天汁汗,我揣著相機(jī)與錄音,去河邊找鬼栗涂。 笑死知牌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斤程。 我是一名探鬼主播角寸,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忿墅!你這毒婦竟也來了扁藕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤疚脐,失蹤者是張志新(化名)和其女友劉穎亿柑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棍弄,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡望薄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年疟游,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痕支。...
    茶點(diǎn)故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡颁虐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卧须,到底是詐尸還是另有隱情另绩,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布花嘶,位于F島的核電站笋籽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏椭员。R本人自食惡果不足惜干签,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拆撼。 院中可真熱鬧,春花似錦喘沿、人聲如沸闸度。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莺禁。三九已至,卻和暖如春窄赋,著一層夾襖步出監(jiān)牢的瞬間哟冬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工忆绰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浩峡,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓错敢,卻偏偏與公主長得像翰灾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子稚茅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評論 2 345