[音視頻開發(fā)]FFmpeg常用命令合集

FFmpeg常用命令分類:

  • 基本信息查詢
  • 錄制
  • 分解/復(fù)用
  • 裁剪與合并
  • 圖片/視頻互轉(zhuǎn)
  • 直播
  • 處理原始數(shù)據(jù)
  • 濾鏡

一. 基本信息查詢命令

FFmpeg基本信息查詢命令

二. 錄制命令

FFmpeg錄屏命令:

ffmpeg -f avfoundation -i 1 -r 30  out.yuv

-f avfoundation: 指定使用avfoundation采集數(shù)據(jù)
-i: 指定從哪兒采集數(shù)據(jù)融痛,它是一個文件索引號太闺,1代表是從屏幕采集
-r: 指定幀率
out.yuv表示以yuv格式輸出
所以,上面的指令意思是:使用avfoundation以每秒30的幀率從屏幕采集視頻蛙奖。

輸入上面指令后,就開始錄制了肺孤,可以使用ctrl+c取消錄制司光,再通過以下指令播放錄制的視頻:

ffplay out.yuv

結(jié)果報錯:

Picture size 0x0 is invalid
out.yuv: Invalid argument

這是因為yuv原始數(shù)據(jù)沒有寬高,要指定分辨率春叫,從錄制日志中可以查到:


所以播放指令變成:

ffplay -s 4096x2304 out.yuv

但是播放時出現(xiàn)了以下花屏的情況:

這是因為ffplay默認(rèn)使用的像素格式是yuv420p:


而我們錄制屏幕采用的像素格式是uyvy422:


像素格式不一致導(dǎo)致了無法正確渲染,所以需要另外指定錄制時的像素格式泣港。

ffplay -s 4096x2304 -pix_fmt uyvy422 out.yuv

指令輸入后就能正常播放剛剛錄制的屏幕視頻了暂殖。

上面說了i是設(shè)備索引號,1代表的是從屏幕采集当纱,實際上我們可以通過命令去列出設(shè)備索引號:

ffmpeg -f avfoundation -list_devices true -I ""

上面列出了我的電腦上的視頻設(shè)備和音頻設(shè)備呛每,前面的數(shù)字就是索引號”苟可以看到視頻莉给、音頻索引號都有0、1廉沮,那怎么區(qū)分呢颓遏,也很簡單,錄制音頻指令滞时,索引號放到冒號后邊叁幢,如下:

ffmpeg -f avfoundation -i :0 out.wav

:0就代表音頻設(shè)備:Built-in Microphone內(nèi)置麥克風(fēng)

錄制結(jié)束也是ctrl+c。再通過以下指令來播放剛剛錄制的音頻:

ffplay out.wav

這樣音頻的錄制與播放就完成了坪稽。

三. 分解與復(fù)用命令

FFmpeg分解與復(fù)用主要是文件格式的轉(zhuǎn)換曼玩,以及分解出音頻鳞骤、視頻文件等等。

  1. 比如黍判,多媒體格式轉(zhuǎn)換豫尽,將一個mp4文件轉(zhuǎn)成flv格式:
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv

-i out.mp4:輸入一個名叫out的mp4文件。
-vcodec copy:視頻編碼處理方式顷帖。
-acodec copy:音頻編碼處理方式美旧。

  1. 單獨(dú)抽取音頻流或視頻流。
    如果只是想抽取視頻流贬墩,可以用以下命令:
ffmpeg -i out.mp4 -an -vcodec copy out.h264

-an:不要音頻榴嗅。
同理,只抽取音頻流:

ffmpeg -i out.mp4 -acodec copy -vn out.aac

四. 處理原始數(shù)據(jù)命令

所謂原始數(shù)據(jù)陶舞,就是FFmpeg解碼后的數(shù)據(jù)嗽测。

  1. 提取視頻原始數(shù)據(jù)。
ffmpeg -i out.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv

-c:v:對視頻進(jìn)行編碼肿孵。
rawvideo:編碼格式按原來的格式唠粥。
pix_fmt yuv420p:像素格式是yuv420p。

note: 播放yuv格式的視頻颁井,要指定分辨率厅贪,如

ffplay -s 4096x2304 out.yuv
  1. 提取音頻PCM原始數(shù)據(jù)。
ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm

-ar:音頻采樣率雅宾,常用的有48k、32k葵硕、16k等等眉抬。
-ac:音頻聲道,包括單聲道懈凹、雙聲道蜀变、立體聲、環(huán)繞立體聲等等介评,上面-ac2是雙聲道库北。
-f s16le: 存儲格式,s16是有符號16位來表示每個數(shù)值们陆,le是little寒瓦,它是一種存儲方式。

然后播放提取的音頻:

ffplay out.pcm

發(fā)現(xiàn)報錯:



這是因為播放pcm原始音頻數(shù)據(jù)并不知道采樣率坪仇、聲道這些信息杂腰,所以需要直接指定:

ffplay -ar 44100 -ac 2 -f s16le out.pcm

五. 濾鏡命令

濾鏡處理,比如加水印椅文、去水印喂很、畫中畫惜颇、視頻裁剪、音頻倍速等等少辣,都可以通過濾鏡命令實現(xiàn)凌摄。

濾鏡處理是對解碼后的原始數(shù)據(jù)幀進(jìn)行處理,那解碼后的數(shù)據(jù)如何得到呢漓帅,這就要先了解FFmpeg對音視頻文件處理的流程:

  • 輸入文件是一些具有封裝格式的文件望伦,經(jīng)過demuxer分解解封裝后,就得到了音頻煎殷、視頻等編碼壓縮數(shù)據(jù)屯伞。
  • 將這些編碼數(shù)據(jù)包進(jìn)行解碼decoder,解碼后就得到原始數(shù)據(jù)幀豪直。
  • 再將解碼后數(shù)據(jù)幀編碼壓縮成我們想要的大小劣摇,比如調(diào)整分辨率,720縮小變成480P的弓乙。
  • 重新muxer封裝編碼后的數(shù)據(jù)包成流行的格式并輸出播放末融。

上面流程是一個完整的流程,其中得到的解碼數(shù)據(jù)暇韧,如果進(jìn)行濾鏡處理勾习,就要再經(jīng)過下面的流程:

濾鏡處理流程

解碼后數(shù)據(jù)幀,經(jīng)過濾鏡程序過濾filter懈玻,得到過濾后的數(shù)據(jù)幀巧婶,再重新編碼。

  1. 視頻畫面大小裁剪
ffmpeg -i water.mp4 -vf crop=in_w-300:in_h-150 -c:v libx264 -c:a copy out.mp4

-vf: 視頻濾鏡類型涂乌,-af就是音頻濾鏡類型艺栈。
crop=in_w-300:in_h-150:crop是濾鏡名,等號后跟的是參數(shù)湾盒,本身視頻的寬高上減去一定的值湿右。
-c:v libx264:視頻編碼器是libx264。
-c:a copy:音頻編碼器是copy原來的罚勾,不作特殊處理毅人。

note: 要先cd到原視頻文件的目錄下,再執(zhí)行上面的命令尖殃。

六. 裁剪與合并命令

  1. 時長裁剪
ffmpeg -i water.mp4 -ss 00:00:00 -t 5 out.ts

-ss:裁剪起始時間
-t:總時長

  1. 多個視頻片段進(jìn)行合并
ffmpeg -f concat -i myInputsFile.txt out.mp4

-f concat:合并指令丈莺。
-i myInputsFile.txt:這里的myInputsFile.txt中存放的是多媒體文件列表,該txt文件中內(nèi)容的格式是file filename分衫,如下:

out.ts和out1.ts是本地兩個視頻文件场刑,當(dāng)然在合并時,要cd到當(dāng)前要合并的視頻文件目錄下。

當(dāng)然其他視頻格式也可以合并牵现,比如將兩個mp4格式的視頻合并铐懊,只需將文件名以上面的格式放到txt文件中即可。

七. 圖片與視頻互轉(zhuǎn)命令

  1. 視頻轉(zhuǎn)圖片
ffmpeg -i water.mp4 -r 1 -f image2 image-%3d.jpeg

-r:幀率瞎疼,上面是以每秒1幀轉(zhuǎn)出圖片科乎。
-f:轉(zhuǎn)出格式,上面是image格式的贼急,image2就是該格式的第二版茅茂。
image-%3d.jpeg:輸出文件名,前綴是image太抓,在加上3個數(shù)字的文件名空闲。

  1. 圖片轉(zhuǎn)視頻
ffmpeg -i image-%3d.jpeg imageVideo.mp4

將上面前綴為image的一組圖片轉(zhuǎn)成視頻。

八. 直播推拉流命令

  1. 直播推流
ffmpeg -re -i water.mp4 -c copy -f flv rtmp://server/live/streamName

-re: 減慢幀率速度走敌,本地音視頻文件是以盡可能快的速度進(jìn)行播放碴倾,加上re是為了讓直播流盡可能與真實的幀率保持一致。
-c: 編解碼方式掉丽,-ac是音頻跌榔,-vc是視頻。上面是copy捶障,不作處理僧须。
-f flv:推出文件格式。
rtmp://server/live/streamName:服務(wù)器地址项炼。

  1. 直播拉流
ffmpeg -i rtmp://server/live/streamName -c copy myLive.flv

現(xiàn)在應(yīng)用實戰(zhàn)一下担平,比如我們先從湖南衛(wèi)視直播源rtmp://58.200.131.2:1935/livetv/hunantv拉流,并保存到本地芥挣。

ffmpeg -i rtmp://58.200.131.2:1935/livetv/hunantv -c copy hunanTV.flv

ctrl + c驱闷,取消拉流保存到本地,現(xiàn)在播放一下保存的hunanTV.flv視頻文件是可以播放的空免。
當(dāng)然,也可以拉其他協(xié)議的視頻流盆耽,下面是一些視頻流的地址蹋砚,可以換到上面試一下。

RTSP協(xié)議直播源

HTTP協(xié)議直播源

比如拉取CCTV3高清:

ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8 -c copy cctv3.m3u8

note:注意保存格式摄杂,拉取的是m3u8格式坝咐,所以存的也要是m3u8格式的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末析恢,一起剝皮案震驚了整個濱河市墨坚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌映挂,老刑警劉巖泽篮,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盗尸,死亡現(xiàn)場離奇詭異,居然都是意外死亡帽撑,警方通過查閱死者的電腦和手機(jī)泼各,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亏拉,“玉大人扣蜻,你說我怎么就攤上這事〖疤粒” “怎么了莽使?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長笙僚。 經(jīng)常有香客問我芳肌,道長,這世上最難降的妖魔是什么味咳? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任庇勃,我火速辦了婚禮,結(jié)果婚禮上槽驶,老公的妹妹穿的比我還像新娘责嚷。我一直安慰自己,他們只是感情好掂铐,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布罕拂。 她就那樣靜靜地躺著,像睡著了一般全陨。 火紅的嫁衣襯著肌膚如雪爆班。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天辱姨,我揣著相機(jī)與錄音柿菩,去河邊找鬼。 笑死雨涛,一個胖子當(dāng)著我的面吹牛枢舶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播替久,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼凉泄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蚯根?” 一聲冷哼從身側(cè)響起后众,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蒂誉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體教藻,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年拗盒,在試婚紗的時候發(fā)現(xiàn)自己被綠了怖竭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡陡蝇,死狀恐怖痊臭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情登夫,我是刑警寧澤广匙,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站恼策,受9級特大地震影響鸦致,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涣楷,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一分唾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狮斗,春花似錦绽乔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至沙峻,卻和暖如春睦授,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摔寨。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工去枷, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人是复。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓沉填,卻偏偏與公主長得像,于是被迫代替她去往敵國和親佑笋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.先通過下面命令查詢Mac上有哪些設(shè)備 查詢結(jié)果如下圖所示斑鼻,視頻輸入設(shè)備有2個:索引號0表示內(nèi)置攝像頭蒋纬,1表示屏...
    一葉知秋0830閱讀 3,118評論 0 0
  • FFMPEG常用命令 前言 [FFMPEG]是特別強(qiáng)大的專門用于處理音視頻的開源庫。你既可以使用它的API對音視頻...
    JavaCodexPro閱讀 625評論 0 0
  • 簡要介紹 FFmpeg 介紹 音視頻多媒體處理開源框架关摇,采用LGPL或GPL許可證。 有音視頻采集碾阁、編碼输虱、解碼、轉(zhuǎn)...
    Coder_TanJX閱讀 1,226評論 0 1
  • FFMPEG是特別強(qiáng)大的專門用于處理音視頻的開源庫脂凶。你既可以使用它的API對音視頻進(jìn)行處理宪睹,也可以使用它提供的工具...
    小村醫(yī)閱讀 3,941評論 0 3
  • ffmpeg查詢命令 常用命令 視頻裁剪濾鏡(播放器大小裁剪): ffmpeg -i killer.mp4 -vf...
    無神閱讀 683評論 0 1