1.先通過下面命令查詢Mac上有哪些設備
ffmpeg -f avfoundation -list_devices true -i ""
查詢結果如下圖所示,視頻輸入設備有2個:索引號0表示內置攝像頭,1表示屏幕出刷;音頻輸入設備有一個:0表示內置麥克風璧疗。
2.屏幕錄制與播放
2.1 屏幕錄制
如果執(zhí)行下面命令時出現(xiàn)權限問題,就在命令前面加上sudo再執(zhí)行)馁龟。
// 屏幕錄制命令(control+c停止錄制)
ffmpeg -f avfoundation -i 1 -r 30 abc.yuv
參數(shù)說明:
-f:指定使用Mac系統(tǒng)下的 avfoundation 庫來采集數(shù)據(jù)崩侠。Mac系統(tǒng)下avfoundation庫是專門用于音視頻處理的。
-i:指定輸入源坷檩,也就是從哪采集數(shù)據(jù)却音,后面的1是一個索引號,通過前面的查詢命令得知屏幕的索引值是1矢炼。
-r:指定幀率僧家。按ffmpeg官方文檔說-r與-framerate作用相同,但實際測試時發(fā)現(xiàn)不同裸删。-framerate 用于限制輸入,而-r用于限制輸出阵赠。(注意涯塔,屏幕的輸入對幀率沒有要求,所以不用限制桌面的幀率清蚀。)
abc.yuv:指定輸出格式為yuv格式(yuv是一種原始格式數(shù)據(jù)匕荸,數(shù)據(jù)量是非常大的),abc為文件名(保存的路徑是在你當前所在的目錄)枷邪。
執(zhí)行錄制命令后結果如下圖所示榛搔,uyvy422是錄制的像素格式,4096x2304是錄制的視頻尺寸东揣,后面用ffplay播放這個視頻時需要用到這兩個參數(shù)践惑。
2.2 播放錄制的屏幕
// 播放命令
ffplay -s 4096x2304 -pix_fmt uyvy422 abc.yuv
參數(shù)說明:
-s:指定視頻尺寸
-pix_fmt:指定像素格式。(ffplay默認使用的像素格式是yuv420p嘶卧,而錄制屏幕時使用的像素格式是uyvy422尔觉,所以這里需要指定一下播放的像素格式才能正常播放。)
如果是播放封裝格式的文件是不用指定這兩個參數(shù)的芥吟,比如如果上面錄制的格式是mp4侦铜,直接ffplay out.mp4就可以播放。
3.聲音錄制與播放
3.1 聲音錄制
// 聲音錄制命令(control+c停止錄制)
ffmpeg -f avfoundation -i :0 aaa.wav
參數(shù)說明:
-f:指定使用Mac系統(tǒng)下的 avfoundation 庫來采集數(shù)據(jù)钟鸵。
-i:指定輸入源钉稍,通過前面的查詢命令得知內置麥克風的索引值是0(音頻設備索引值前面要加冒號)。
aaa.yuv:指定輸出格式為wav棺耍。
3.2 播放聲音
// 因為播放的不是原始聲音贡未,所以不需要指定一些參數(shù)
ffplay aaa.wav
4.錄制pcm格式的音頻裸數(shù)據(jù)
PCM音頻數(shù)據(jù)是未經壓縮的音頻采樣數(shù)據(jù)裸流,它是由模擬信號經過采樣、量化羞秤、編碼轉換成的標準的數(shù)字音頻數(shù)據(jù)缸托。
ffmpeg -f avfoundation -i :0 -ar 44100 -f s16le out.pcm
參數(shù)說明:
-ar 指定采樣率為44.1kHz。
-f s16le 指定采樣大小為16bit (不是很確定瘾蛋?俐镐??)哺哼。
5.錄屏加聲音
ffmpeg -f avfoundation -i 1:0 -r 29.97 -c:v libx264 -crf 0 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k aaa.mp4
參數(shù)說明:
-i 冒號前面的1表示屏幕索引號佩抹,冒號后面的0表示內置麥克風索引號。
-r 幀速率為29.97 (29.97是標準幀速率)取董。
-c:v 與參數(shù) -vcodec 一樣棍苹,表示視頻編碼器。c 是 codec 的縮寫茵汰,v 是video的縮寫枢里。
-crf 是 x264 的參數(shù)。 0 表式無損壓縮蹂午。
-c:a 與參數(shù) -acodec 一樣栏豺,表示音頻編碼器。
-profile:a 是 fdk_aac 的參數(shù)豆胸。 aac_he_v2 表式使用 AAC_HE v2 壓縮數(shù)據(jù)奥洼。
-b:a 指定音頻碼率。 b 是 bitrate的縮寫, a是 audio的縮與晚胡。
6.視頻錄制
ffmpeg -f avfoundation -framerate 30 -i 0 1.mp4
參數(shù)說明:
-framerate 限制視頻的采集幀率灵奖。這個必須要根據(jù)提示要求進行設置,如果不設置就會報錯估盘。
7.視頻和音頻錄制
ffmpeg -f avfoundation -framerate 29.97 -i 0:0 2.mp4