ffmpeg命令大全

前言

FFMPEG是特別強大的專門用于處理音視頻的開源庫。你既可以使用它的API對音視頻進行處理,也可以使用它提供的工具刀脏,如 ffmpeg, ffplay, ffprobe,來編輯你的音視頻文件。

本文將簡要介紹一下 FFMPEG 庫的基本目錄結(jié)構(gòu)及其功能,然后詳細(xì)介紹一下我們在日常工作中涧尿,如何使用 ffmpeg 提供的工具來處理音視頻文件。

FFMPEG 目錄及作用

  • · libavcodec: 提供了一系列編碼器的實現(xiàn)萌踱。
  • · libavformat: 實現(xiàn)在流協(xié)議,容器格式及其本IO訪問。
  • · libavutil: 包括了hash器粉铐,解碼器和各利工具函數(shù)。
  • · libavfilter: 提供了各種音視頻過濾器。
  • · libavdevice: 提供了訪問捕獲設(shè)備和回放設(shè)備的接口溪胶。
  • · libswresample: 實現(xiàn)了混音和重采樣扳还。
  • · libswscale: 實現(xiàn)了色彩轉(zhuǎn)換和縮放工能桑逝。

FFMPEG基本概念

在講解 FFMPEG 命令之前舆驶,我們先要介紹一些音視頻格式的基要概念臼节。

  • · 音/視頻流

    在音視頻領(lǐng)域蟋定,我們把一路音/視頻稱為一路 流 。如我們小時候經(jīng)常使用VCD看港片抄淑,在里邊可以選擇粵語或國語聲音郑原,其實就是CD視頻文件中存放了兩路音頻流女器,用戶可以選擇其中一路進行播放簇捍。

  • · 容器

    我們一般把 MP4? FLV事格、MOV等文件格式稱之為 容器 驹愚。也就是在這些常用格式文件中劫瞳,可以存放多路音視頻文件。以 MP4 為例养泡,就可以存放一路視頻流钥组,多路音頻流,多路字幕流。

  • · channel

    channel是音頻中的概念,稱之為聲道优训。在一路音頻流中早敬,可以有單聲道镰矿,雙聲道或立體聲。

FFMPEG 命令

我們按使用目的可以將 FFMPEG 命令分成以下幾類:

  • · 基本信息查詢命令
  • · 錄制
  • · 分解/復(fù)用
  • · 處理原始數(shù)據(jù)
  • · 濾鏡
  • · 切割與合并
  • · 圖/視互轉(zhuǎn)
  • · 直播相關(guān)

除了 FFMPEG 的基本信息查詢命令外,其它命令都按下圖所示的流程處理音視頻。

image

然后將編碼的數(shù)據(jù)包傳送給解碼器(除非為數(shù)據(jù)流選擇了流拷貝,請參閱進一步描述)。 解碼器產(chǎn)生未壓縮的幀(原始視頻/ PCM音頻/ ...),可以通過濾波進一步處理(見下一節(jié))涩禀。 在過濾之后屿岂,幀被傳遞到編碼器霉撵,編碼器并輸出編碼的數(shù)據(jù)包喇完。 最后刻诊,這些傳遞給復(fù)用器亿昏,將編碼的數(shù)據(jù)包寫入輸出文件彤断。

默認(rèn)情況下供炼,ffmpeg只包含輸入文件中每種類型(視頻,音頻弟翘,字幕)的一個流,并將其添加到每個輸出文件中。 它根據(jù)以下標(biāo)準(zhǔn)挑選每一個的“最佳”:對于視頻浩螺,它是具有最高分辨率的流或颊,對于音頻游添,它是具有最多channel的流,對于字幕,是第一個字幕流煞茫。 在相同類型的幾個流相等的情況下纫版,選擇具有最低索引的流。

您可以通過使用-vn / -an / -sn / -dn選項來禁用某些默認(rèn)設(shè)置。 要進行全面的手動控制,請使用-map選項败砂,該選項禁用剛描述的默認(rèn)設(shè)置路操。

下面我們就來詳細(xì)介紹一下這些命令敦第。

基本信息查詢命令

FFMPEG 可以使用下面的參數(shù)進行基本信息查詢芜果。例如,想查詢一下現(xiàn)在使用的 FFMPEG 都支持哪些 filter,就可以用 ffmpeg -filters 來查詢脆烟。詳細(xì)參數(shù)說明如下:

參數(shù) 說明
-version 顯示版本。
-formats 顯示可用的格式(包括設(shè)備)安岂。
-demuxers 顯示可用的demuxers淑蔚。
-muxers 顯示可用的muxers。
-devices 顯示可用的設(shè)備险毁。
-codecs 顯示libavcodec已知的所有編解碼器制圈。
-decoders 顯示可用的解碼器。
-encoders 顯示所有可用的編碼器畔况。
-bsfs 顯示可用的比特流filter鲸鹦。
-protocols 顯示可用的協(xié)議。
-filters 顯示可用的libavfilter過濾器跷跪。
-pix_fmts 顯示可用的像素格式馋嗜。
-sample_fmts 顯示可用的采樣格式。
-layouts 顯示channel名稱和標(biāo)準(zhǔn)channel布局吵瞻。
-colors 顯示識別的顏色名稱葛菇。

接下來介紹的是 FFMPEG 處理音視頻時使用的命令格式與參數(shù)。

命令基本格式及參數(shù)

下面是 FFMPEG 的基本命令格式:

ffmpeg [global_options] {[input_file_options] -i input_url} ...

             {[output_file_options] output_url} ...

ffmpeg 通過 -i 選項讀取輸任意數(shù)量的輸入“文件”(可以是常規(guī)文件橡羞,管道眯停,網(wǎng)絡(luò)流,抓取設(shè)備等卿泽,并寫入任意數(shù)量的輸出“文件”莺债。

原則上,每個輸入/輸出“文件”都可以包含任意數(shù)量的不同類型的視頻流(視頻/音頻/字幕/附件/數(shù)據(jù))又厉。 流的數(shù)量和/或類型是由容器格式來限制九府。 選擇從哪個輸入進入到哪個輸出將自動完成或使用 -map 選項。

要引用選項中的輸入文件覆致,您必須使用它們的索引(從0開始)侄旬。 例如。 第一個輸入文件是0煌妈,第二個輸入文件是1儡羔,等等宣羊。類似地,文件內(nèi)的流被它們的索引引用汰蜘。 例如仇冯。 2:3是指第三個輸入文件中的第四個流。

上面就是 FFMPEG 處理音視頻的常用命令族操,下面是一些常用參數(shù):

主要參數(shù)

參數(shù) 說明
-f fmt(輸入/輸出) 強制輸入或輸出文件格式苛坚。 格式通常是自動檢測輸入文件,并從輸出文件的文件擴展名中猜測出來色难,所以在大多數(shù)情況下這個選項是不需要的泼舱。
-i url(輸入) 輸入文件的網(wǎng)址
-y(全局參數(shù)) 覆蓋輸出文件而不詢問。
-n(全局參數(shù)) 不要覆蓋輸出文件枷莉,如果指定的輸出文件已經(jīng)存在娇昙,請立即退出。
-c [:stream_specifier] codec(輸入/輸出笤妙,每個流) 選擇一個編碼器(當(dāng)在輸出文件之前使用)或解碼器(當(dāng)在輸入文件之前使用時)用于一個或多個流冒掌。codec 是解碼器/編碼器的名稱或 copy(僅輸出)以指示該流不被重新編碼。如:ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
-codec [:stream_specifier]編解碼器(輸入/輸出蹲盘,每個流) 同 -c
-t duration(輸入/輸出) 當(dāng)用作輸入選項(在-i之前)時股毫,限制從輸入文件讀取的數(shù)據(jù)的持續(xù)時間。當(dāng)用作輸出選項時(在輸出url之前)辜限,在持續(xù)時間到達持續(xù)時間之后停止輸出皇拣。
-ss位置(輸入/輸出) 當(dāng)用作輸入選項時(在-i之前)严蓖,在這個輸入文件中尋找位置薄嫡。 請注意,在大多數(shù)格式中颗胡,不可能精確搜索毫深,因此ffmpeg將在位置之前尋找最近的搜索點。 當(dāng)轉(zhuǎn)碼和-accurate_seek被啟用時(默認(rèn))毒姨,搜索點和位置之間的這個額外的分段將被解碼和丟棄哑蔫。 當(dāng)進行流式復(fù)制或使用-noaccurate_seek時,它將被保留弧呐。當(dāng)用作輸出選項(在輸出url之前)時闸迷,解碼但丟棄輸入,直到時間戳到達位置俘枫。
-frames [:stream_specifier] framecount(output腥沽,per-stream) 停止在幀計數(shù)幀之后寫入流。
-filter [:stream_specifier] filtergraph(output鸠蚪,per-stream) 創(chuàng)建由filtergraph指定的過濾器圖今阳,并使用它來過濾流师溅。filtergraph是應(yīng)用于流的filtergraph的描述,并且必須具有相同類型的流的單個輸入和單個輸出盾舌。在過濾器圖形中墓臭,輸入與標(biāo)簽中的標(biāo)簽相關(guān)聯(lián),標(biāo)簽中的輸出與標(biāo)簽相關(guān)聯(lián)妖谴。有關(guān)filtergraph語法的更多信息窿锉,請參閱ffmpeg-filters手冊。

視頻參數(shù)

參數(shù) 說明
-vframes num(輸出) 設(shè)置要輸出的視頻幀的數(shù)量膝舅。對于-frames:v榆综,這是一個過時的別名,您應(yīng)該使用它铸史。
-r [:stream_specifier] fps(輸入/輸出鼻疮,每個流) 設(shè)置幀率(Hz值,分?jǐn)?shù)或縮寫)琳轿。作為輸入選項判沟,忽略存儲在文件中的任何時間戳,根據(jù)速率生成新的時間戳崭篡。這與用于-framerate選項不同(它在FFmpeg的舊版本中使用的是相同的)挪哄。如果有疑問,請使用-framerate而不是輸入選項-r琉闪。作為輸出選項迹炼,復(fù)制或丟棄輸入幀以實現(xiàn)恒定輸出幀頻fps。
-s [:stream_specifier]大械弑小(輸入/輸出斯入,每個流) 設(shè)置窗口大小。作為輸入選項蛀蜜,這是video_size專用選項的快捷方式刻两,由某些分幀器識別,其幀尺寸未被存儲在文件中滴某。作為輸出選項磅摹,這會將縮放視頻過濾器插入到相應(yīng)過濾器圖形的末尾。請直接使用比例過濾器將其插入到開頭或其他地方霎奢。格式是'wxh'(默認(rèn) - 與源相同)户誓。
-aspect [:stream_specifier] 寬高比(輸出,每個流) 設(shè)置方面指定的視頻顯示寬高比幕侠。aspect可以是浮點數(shù)字符串帝美,也可以是num:den形式的字符串,其中num和den是寬高比的分子和分母橙依。例如“4:3”证舟,“16:9”硕旗,“1.3333”和“1.7777”是有效的參數(shù)值。如果與-vcodec副本一起使用女责,則會影響存儲在容器級別的寬高比漆枚,但不會影響存儲在編碼幀中的寬高比(如果存在)。
-vn(輸出) 禁用視頻錄制抵知。
-vcodec編解碼器(輸出) 設(shè)置視頻編解碼器墙基。這是-codec:v的別名。
-vf filtergraph(輸出) 創(chuàng)建由filtergraph指定的過濾器圖刷喜,并使用它來過濾流残制。

音頻參數(shù)

參數(shù) 說明
-aframes(輸出) 設(shè)置要輸出的音頻幀的數(shù)量。這是-frames:a的一個過時的別名掖疮。
-ar [:stream_specifier] freq(輸入/輸出初茶,每個流) 設(shè)置音頻采樣頻率。對于輸出流浊闪,它默認(rèn)設(shè)置為相應(yīng)輸入流的頻率恼布。對于輸入流,此選項僅適用于音頻捕獲設(shè)備和原始分路器搁宾,并映射到相應(yīng)的分路器選件折汞。
-ac [:stream_specifier]通道(輸入/輸出,每個流) 設(shè)置音頻通道的數(shù)量盖腿。對于輸出流爽待,它默認(rèn)設(shè)置為輸入音頻通道的數(shù)量。對于輸入流翩腐,此選項僅適用于音頻捕獲設(shè)備和原始分路器鸟款,并映射到相應(yīng)的分路器選件。
-an(輸出) 禁用錄音栗菜。
-acodec編解碼器(輸入/輸出) 設(shè)置音頻編解碼器欠雌。這是-codec的別名:a。
-sample_fmt [:stream_specifier] sample_fmt(輸出疙筹,每個流) 設(shè)置音頻采樣格式。使用-sample_fmts獲取支持的樣本格式列表禁炒。
-af filtergraph(輸出) 創(chuàng)建由filtergraph指定的過濾器圖而咆,并使用它來過濾流。

了解了這些基本信息后幕袱,接下來我們看看 FFMPEG 具體都能干些什么吧暴备。

錄制

首先通過下面的命令查看一下 mac 上都有哪些設(shè)備。

ffmpeg -f avfoundation -list_devices true -i ""

錄屏

ffmpeg -f avfoundation -i 1 -r 30 out.yuv
  • · -f 指定使用 avfoundation 采集數(shù)據(jù)们豌。
  • · -i 指定從哪兒采集數(shù)據(jù)涯捻,它是一個文件索引號浅妆。在我的MAC上,1代表桌面(可以通過上面的命令查詢設(shè)備索引號)障癌。
  • · -r 指定幀率凌外。按ffmpeg官方文檔說-r與-framerate作用相同,但實際測試時發(fā)現(xiàn)不同涛浙。-framerate 用于限制輸入康辑,而-r用于限制輸出。

注意轿亮,桌面的輸入對幀率沒有要求疮薇,所以不用限制桌面的幀率。其實限制了也沒用我注。

錄屏+聲音

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 out.flv
  • · -i 1:0 冒號前面的 "1" 代表的屏幕索引號按咒。冒號后面的"0"代表的聲音索相號。
  • · -c:v 與參數(shù) -vcodec 一樣但骨,表示視頻編碼器胖齐。c 是 codec 的縮寫,v 是video的縮寫嗽冒。
  • · -crf 是 x264 的參數(shù)呀伙。 0 表式無損壓縮。
  • · -c:a 與參數(shù) -acodec 一樣添坊,表示音頻編碼器剿另。
  • · -profile 是 fdk_aac 的參數(shù)。 aac_he_v2 表式使用 AAC_HE v2 壓縮數(shù)據(jù)贬蛙。
  • · -b:a 指定音頻碼率雨女。 b 是 bitrate的縮寫, a是 audio的縮與。

錄視頻

ffmpeg -framerate 30 -f avfoundation -i 0 out.mp4 
  • · -framerate 限制視頻的采集幀率阳准。這個必須要根據(jù)提示要求進行設(shè)置氛堕,如果不設(shè)置就會報錯。
  • · -f 指定使用 avfoundation 采集數(shù)據(jù)野蝇。
  • · -i 指定視頻設(shè)備的索引號讼稚。

視頻+音頻

ffmpeg -framerate 30 -f avfoundation -i 0:0 out.mp4 

錄音

ffmpeg -f avfoundation -i :0 out.wav

錄制音頻裸數(shù)據(jù)

ffmpeg -f avfoundation -i :0 -ar 44100 -f s16le out.pcm

分解與復(fù)用

流拷貝是通過將 copy 參數(shù)提供給-codec選項來選擇流的模式。它使得ffmpeg省略了指定流的解碼和編碼步驟绕沈,所以它只能進行多路分解和多路復(fù)用锐想。 這對于更改容器格式或修改容器級元數(shù)據(jù)很有用。 在這種情況下乍狐,上圖將簡化為:

image

由于沒有解碼或編碼赠摇,速度非常快,沒有質(zhì)量損失藕帜。 但是烫罩,由于許多因素,在某些情況下可能無法正常工作洽故。 應(yīng)用過濾器顯然也是不可能的贝攒,因為過濾器處理未壓縮的數(shù)據(jù)。

抽取音頻流

ffmpeg -i input.mp4 -acodec copy -vn out.aac
  • · acodec: 指定音頻編碼器收津,copy 指明只拷貝饿这,不做編解碼。
  • · vn: v 代表視頻撞秋,n 代表 no 也就是無視頻的意思长捧。

抽取視頻流

ffmpeg -i input.mp4 -vcodec copy -an out.h264
  • · vcodec: 指定視頻編碼器,copy 指明只拷貝吻贿,不做編解碼串结。
  • · an: a 代表視頻,n 代表 no 也就是無音頻的意思舅列。

轉(zhuǎn)格式

ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv

上面的命令表式的是音頻肌割、視頻都直接 copy,只是將 mp4 的封裝格式轉(zhuǎn)成了flv帐要。

音視頻合并

ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy out.mp4

處理原始數(shù)據(jù)

提取YUV數(shù)據(jù)

ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv

ffplay -s wxh out.yuv
  • · -c:v rawvideo 指定將視頻轉(zhuǎn)成原始數(shù)據(jù)
  • · -pixel_format yuv420p 指定轉(zhuǎn)換格式為yuv420p

YUV轉(zhuǎn)H264

ffmpeg -f rawvideo -pix_fmt yuv420p -s 320x240 -r 30 -i out.yuv -c:v libx264 -f rawvideo out.h264

提取PCM數(shù)據(jù)

ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm

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

PCM轉(zhuǎn)WAV

ffmpeg -f s16be -ar 8000 -ac 2 -acodec pcm_s16be -i input.raw output.wav

濾鏡

在編碼之前把敞,ffmpeg可以使用libavfilter庫中的過濾器處理原始音頻和視頻幀。 幾個鏈?zhǔn)竭^濾器形成一個過濾器圖形榨惠。 ffmpeg區(qū)分兩種類型的過濾器圖形:簡單和復(fù)雜奋早。

簡單濾鏡

簡單的過濾器圖是那些只有一個輸入和輸出,都是相同的類型赠橙。 在上面的圖中耽装,它們可以通過在解碼和編碼之間插入一個額外的步驟來表示:

image-20201214135220305

簡單的filtergraphs配置了per-stream-filter選項(分別為視頻和音頻使用-vf和-af別名)。 一個簡單的視頻filtergraph可以看起來像這樣的例子:

image-20201214135247734

請注意期揪,某些濾鏡會更改幀屬性掉奄,但不會改變幀內(nèi)容。 例如凤薛。 上例中的fps過濾器會改變幀數(shù)姓建,但不會觸及幀內(nèi)容。 另一個例子是setpts過濾器枉侧,它只設(shè)置時間戳引瀑,否則不改變幀。

復(fù)雜濾鏡

復(fù)雜的過濾器圖是那些不能簡單描述為應(yīng)用于一個流的線性處理鏈的過濾器圖榨馁。 例如,當(dāng)圖形有多個輸入和/或輸出帜矾,或者當(dāng)輸出流類型與輸入不同時翼虫,就是這種情況屑柔。 他們可以用下圖來表示:

復(fù)雜濾鏡

復(fù)雜的過濾器圖使用-filter_complex選項進行配置。 請注意珍剑,此選項是全局性的掸宛,因為復(fù)雜的過濾器圖形本質(zhì)上不能與單個流或文件明確關(guān)聯(lián)。

-lavfi選項等同于-filter_complex招拙。

一個復(fù)雜的過濾器圖的一個簡單的例子是覆蓋過濾器唧瘾,它有兩個視頻輸入和一個視頻輸出,包含一個視頻疊加在另一個上面别凤。 它的音頻對應(yīng)是amix濾波器饰序。

添加水印

ffmpeg -i out.mp4  -vf "movie=logo.png,scale=64:48[watermask];[in][watermask] overlay=30:10 [out]" water.mp4
  • · -vf中的 movie 指定logo位置。scale 指定 logo 大小规哪。overlay 指定 logo 擺放的位置求豫。

刪除水印

先通過 ffplay 找到要刪除 LOGO 的位置

ffplay -i test.flv -vf delogo=x=806:y=20:w=70:h=80:show=1

使用 delogo 濾鏡刪除 LOGO

ffmpeg -i test.flv -vf delogo=x=806:y=20:w=70:h=80 output.flv

視頻縮小一倍

ffmpeg -i out.mp4 -vf scale=iw/2:-1 scale.mp4
  • · -vf scale 指定使用簡單過濾器 scale,iw/2:-1 中的 iw 指定按整型取視頻的寬度诉稍。 -1 表示高度隨寬度一起變化蝠嘉。

視頻裁剪

ffmpeg -i VR.mov  -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy -video_size 1280x720 vr_new.mp4

crop 格式:crop=out_w:out_h:x :y

  • · out_w: 輸出的寬度”蓿可以使用 in_w 表式輸入視頻的寬度蚤告。
  • · out_h: 輸出的高度》可以使用 in_h 表式輸入視頻的高度杜恰。
  • · x : X坐標(biāo)
  • · y : Y坐標(biāo)

如果 x和y 設(shè)置為 0,說明從左上角開始裁剪。如果不寫是從中心點裁剪层扶。

倍速播放

ffmpeg -i out.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" speed2.0.mp4
  • · -filter_complex 復(fù)雜濾鏡箫章,[0:v]表示第一個(文件索引號是0)文件的視頻作為輸入。setpts=0.5*PTS表示每幀視頻的pts時間戳都乘0.5 镜会,也就是差少一半檬寂。[v]表示輸出的別名。音頻同理就不詳述了戳表。
  • · map 可用于處理復(fù)雜輸出桶至,如可以將指定的多路流輸出到一個輸出文件,也可以指定輸出到多個文件匾旭。"[v]" 復(fù)雜濾鏡輸出的別名作為輸出文件的一路流镣屹。上面 map的用法是將復(fù)雜濾鏡輸出的視頻和音頻輸出到指定文件中。

對稱視頻

ffmpeg  -i out.mp4 -filter_complex "[0:v]pad=w=2*iw[a];[0:v]hflip[b];[a][b]overlay=x=w" duicheng.mp4
  • · hflip 水平翻轉(zhuǎn)

如果要修改為垂直翻轉(zhuǎn)可以用vflip价涝。

畫中畫*

ffmpeg -i out.mp4 -i out1.mp4 -filter_complex "[1:v]scale=w=176:h=144:force_original_aspect_ratio=decrease[ckout];[0:v][ckout]overlay=x=W-w-10:y=0[out]" -map "[out]" -movflags faststart new.mp4

錄制畫中畫

ffmpeg  -f avfoundation -i "1" -framerate 30 -f avfoundation -i "0:0" 

-r 30 -c:v libx264 -preset ultrafast 

-c:a libfdk_aac -profile:a aac_he_v2 -ar 44100 -ac 2 

-filter_complex "[1:v]scale=w=176:h=144:force_original_aspect_ratio=decrease[a];[0:v][a]overlay=x=W-w-10:y=0[out]" 

-map "[out]" -movflags faststart -map 1:a b.mp4

多路視頻拼接

ffmpeg  -f avfoundation -i "1" -framerate 30 -f avfoundation  -i "0:0" -r 30 -c:v libx264 -preset ultrafast -c:a libfdk_aac -profile:a aac_he_v2 -ar 44100 -ac 2 -filter_complex "[0:v]scale=320:240[a];[a]pad=640:240[b];[b][1:v]overlay=320:0[out]" -map "[out]" -movflags faststart  -map 1:a  c.mp4

音視頻的拼接與裁剪

裁剪

ffmpeg -i out.mp4 -ss 00:00:00 -t 10 out1.mp4
  • · -ss 指定裁剪的開始時間女蜈,精確到秒
  • · -t 被裁剪后的時長。

合并

首先創(chuàng)建一個 inputs.txt 文件,文件內(nèi)容如下:

file '1.flv'

file '2.flv'

file '3.flv'

然后執(zhí)行下面的命令:

ffmpeg -f concat -i inputs.txt -c copy output.flv

hls切片

ffmpeg -i out.mp4 -c:v libx264 -c:a libfdk_aac -strict -2 -f hls out.m3u8
  • · -strict -2 指明音頻使有AAC伪窖。
  • · -f hls 轉(zhuǎn)成 m3u8 格式逸寓。

視頻圖片互轉(zhuǎn)

視頻轉(zhuǎn)JPEG

ffmpeg -i test.flv -r 1 -f image2 image-%3d.jpeg

視頻轉(zhuǎn)gif

ffmpeg -i out.mp4 -ss 00:00:00 -t 10 out.gif

圖片轉(zhuǎn)視頻

ffmpeg -f image2 -i image-%3d.jpeg images.mp4

直播相關(guān)

推流

ffmpeg -re -i out.mp4 -c copy -f flv rtmp:**//server/live/streamName**

拉流保存

ffmpeg -i rtmp:**//server/live/streamName -c copy dump.flv**

轉(zhuǎn)流

ffmpeg -i rtmp:**//server/live/originalStream -c:a copy -c:v copy -f flv rtmp://server/live/h264Stream**

實時推流

ffmpeg -framerate 15 -f avfoundation -i "1" -s 1280x720 -c:v libx264  -f  flv rtmp:**//localhost:1935/live/room**

ffplay

播放YUV 數(shù)據(jù)

ffplay -pix_fmt nv12 -s 192x144 1.yuv

播放YUV中的 Y平面

ffplay -pix_fmt nv21 -s 640x480 -vf extractplanes='y' 1.yuv
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市覆山,隨后出現(xiàn)的幾起案子竹伸,更是在濱河造成了極大的恐慌,老刑警劉巖簇宽,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勋篓,死亡現(xiàn)場離奇詭異,居然都是意外死亡魏割,警方通過查閱死者的電腦和手機譬嚣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來见妒,“玉大人孤荣,你說我怎么就攤上這事⌒氪В” “怎么了盐股?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長耻卡。 經(jīng)常有香客問我疯汁,道長,這世上最難降的妖魔是什么卵酪? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任幌蚊,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己夯缺,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布漩仙。 她就那樣靜靜地躺著,像睡著了一般犹赖。 火紅的嫁衣襯著肌膚如雪队他。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天峻村,我揣著相機與錄音麸折,去河邊找鬼。 笑死粘昨,一個胖子當(dāng)著我的面吹牛垢啼,可吹牛的內(nèi)容都是我干的窜锯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼膊夹,長吁一口氣:“原來是場噩夢啊……” “哼衬浑!你這毒婦竟也來了捌浩?” 一聲冷哼從身側(cè)響起放刨,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尸饺,沒想到半個月后进统,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡浪听,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年螟碎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迹栓。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡掉分,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出克伊,到底是詐尸還是另有隱情酥郭,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布愿吹,位于F島的核電站不从,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏犁跪。R本人自食惡果不足惜椿息,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坷衍。 院中可真熱鬧寝优,春花似錦、人聲如沸枫耳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘉涌。三九已至妻熊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仑最,已是汗流浹背扔役。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留警医,地道東北人亿胸。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓坯钦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親侈玄。 傳聞我的和親對象是個殘疾皇子婉刀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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