ffmpeg命令分為8大類
-
查詢命令
ffmpeg -devices
查看當(dāng)前電腦的錄制設(shè)備架構(gòu)ffmpeg -f avfoundation -list_devices true -i ""
查看當(dāng)前電腦的錄制設(shè)備列表ffmpeg f
查看當(dāng)前ffmpeg的各類詳細信息ffmpeg -help
查看ffmpeg的幫助文檔 -
錄制命令
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
使用1圖像設(shè)備(0:攝像頭寨辩;1:錄屏)錄制文件名為out.yuv的30fps的視頻ffmpeg -f avfoundation -i :0 out.aac
使用0音頻設(shè)備(0:電腦自帶的麥克風(fēng))錄制名為out.aac的音頻 -
解復(fù)用命令
ffmpeg -i demo.mp4 -vcodec copy -acodec copy demo.flv
將demo.mp4文件的音頻和視頻原封不動的拷貝成demo.flv文件胰蝠,不改變其分辨率,格式檩淋,濾鏡等ffmpeg -i demo.mp4 -vcodec copy -an demo.h264
將demo.mp4文件的視頻原封不動的拷貝成demo.flv文件牵咙,但是不含音頻ffmpeg -i demo.mp4 -vn -acodec copy demo.aac
將demo.mp4文件中的音頻原封不動的拷貝成demo.aac文件派近,但是不含視頻 -
處理原始數(shù)據(jù)命令
ffmpeg -i demo.mp4 -an -c:v rawvideo -pix_fmt yuv420p demo.yuv
將demo.mp4文件轉(zhuǎn)成demo.yuv這樣的原始視頻數(shù)據(jù)文件,其中不包含音頻洁桌。并且編碼為rawvideo原始視頻文件像素格式是yuv420p渴丸。yuv常用像素格式444p,422p另凌,420pffmpeg -i demo.mp4 -vn -ar 44100 -ac 2 -f s16le demo.pcm
將demo.mp4文件中的音頻抽取出來轉(zhuǎn)成demo.pcm這樣的音頻原始文件谱轨,其中不包含視頻。其中音頻采樣率(audio rate)為44100吠谢,音頻聲道為2聲道(audio channel)音頻編碼格式是s16le(s代表有符號的土童,即正負;16代表16進制工坊;le代表小的little end) 音視頻裁剪命令
ffmpeg -i demo.mp4 -ss 00:02:00 -t 20 demo.ts
將demo,mp4從2分鐘進行裁剪献汗,裁剪成10秒的一個視頻
-ss代表從什么時間點開始裁剪
-t代表裁剪的時長
.ts格式是一種日本高清攝像機錄制之后封裝的視頻格式-
視頻圖片互轉(zhuǎn)命令
ffmpeg -i demo.mp4 -r 1 -f image2 image_%3d.jpeg
將demo.mp4視頻按照1秒鐘1張圖片的方式截成image2格式的圖片,如果視頻有22秒王污,那么最終就是22張
-r代表按照多少秒的間隔截取圖片
image2是一種圖片格式
image_%3d代表一種動態(tài)的命名規(guī)范雀瓢,比如:image_001.jpegffmpeg -i image_%3d.jpeg demoImage.mp4
將符合image_%3.jpeg文件格式的所有文件轉(zhuǎn)成mp4文件 -
直播流命令
推流命令
ffmpeg -re -i demo.mp4 -c copy -f flv rtmp://server/live/streamName
將demo.mp4文件推送到直播流地址中
-re代表減慢推流速度,讓當(dāng)前錄制的視頻和推流視頻保持一致
-c代表音視頻同時編碼玉掸,如果只對視頻編碼-vcodec,音頻就是-acodec
-f代表格式拉流命令
ffmpeg rtmp://server/live/steamName -c copy demo.flv
將rtmp地址上的視頻拉到本地醒叁,同時對音視頻編碼保存到本地 濾鏡命令
濾鏡原理:
1. 拿到解碼后的原始視頻數(shù)據(jù)幀
2. 對原始視頻數(shù)據(jù)幀進行加濾鏡
3. 再進行編碼得到濾鏡后的編碼數(shù)據(jù)包
ffmpeg -i demo.mp4 -vf crop=demo_w-200:demo_h-200 -c:v libx264 -c:a copy demo.mp4
將demo.mp4進行寬高各裁剪200像素的濾鏡操作
-vf是對視頻進行操作司浪,crop是裁剪的意思后面跟著參數(shù)
-c:v 是對視頻進行編碼,后面跟著視頻編碼器把沼,這里用的是lib264x
-c:a 是對音頻進行編碼啊易,后面跟著音頻編碼器,這里用copy就是不變動音頻-
其他命令
ffplay demo.mp4
播放demo.mp4文件ffplay -s 1280x800 -pix_fmt uyvy422 demo.yuv
播放分辨率是1280x800的像素格式是uyvy422的demo.yuv視頻原始文件
附錄:
-i:后面接文件名饮睬,“i”是“index”索引的簡稱租谈,用于找到文件
-s:后面接一個分辨率或者大小,“s”是“size”大小的簡稱,用于指定原始視頻文件(如:yuv格式)的分辨率割去,如果不指定的話窟却,視頻無法正常播放
-c:后面接編碼命令,-c代表對音視頻同時編碼呻逆,如果單獨對音頻或者視頻編碼使用-acodec或者-vcodec
-pix_fmt:后面接一個視頻格式夸赫,如:yuv420p,uyvy422等咖城〔缤龋“pix”是“pixel”像素的簡稱,“fmt”是“fomat”格式的簡稱宜雀。同樣切平,如果不指定的話,原始視頻文件無法正常播放
-f:后面接一個格式辐董,比如:flv悴品,MP4等
-vn:不對視頻編輯或者屏蔽視頻的命令,“v”代表“video”視頻郎哭,“n”代表“no”
-an:不對音頻編輯或者屏蔽音頻的命令他匪,“a”代表“audio”音頻,“n”代表“no”
-vcodec:對視頻進行編碼
-avodec:對音頻進行編碼
copy:拷貝命令夸研,一般用于更改視頻或者音頻格式
-ac:代表音頻聲道邦蜜,“a”代表“audio”,“c”代表“channel”
-ar:代表音頻采樣率亥至,“a”代表“audio”悼沈,“r”代表“rate”