FFMpeg使用介紹

1. 介紹

FFmpeg是一個(gè)跨平臺(tái)的開源多媒體框架饵骨,可以用于處理和轉(zhuǎn)換各種音視頻格式回溺。它提供了必要的工具和庫來進(jìn)行音視頻的錄制、轉(zhuǎn)碼唯欣、播放嘹吨、流媒體傳輸?shù)炔僮鳎€可以抓取實(shí)時(shí)的音頻/視頻流境氢。

FFmpeg 主要包括三塊:FFmpeg蟀拷、FFplay、FFprobe萍聊。</br>

使用FFmpeg的常見應(yīng)用和產(chǎn)品

  1. 視頻轉(zhuǎn)碼器:通過 FFmpeg问芬,可以將視頻文件從一個(gè)格式轉(zhuǎn)換為另一個(gè)格式,例如將 AVI 轉(zhuǎn)換為 MP4寿桨、MKV 轉(zhuǎn)換為 MOV 等此衅。

  2. 音頻轉(zhuǎn)碼器:類似于視頻轉(zhuǎn)碼器,F(xiàn)Fmpeg可用于轉(zhuǎn)換音頻文件的格式亭螟,例如將 MP3 轉(zhuǎn)換為 WAV挡鞍、AAC 轉(zhuǎn)換為 FLAC 等。

  3. 視頻編輯軟件:一些視頻編輯軟件预烙,如Adobe Premiere Pro匕累、Final Cut Pro等,使用 FFmpeg 來處理視頻文件默伍,包括剪輯欢嘿、合并衰琐、添加字幕、調(diào)整畫質(zhì)等功能炼蹦。

  4. 媒體播放器:許多媒體播放器羡宙,包括VLC媒體播放器、MPlayer等掐隐,使用FFmpeg 解碼和渲染音視頻文件狗热。

  5. 流媒體服務(wù)器:FFmpeg 可以用來構(gòu)建流媒體服務(wù)器,將音視頻文件以流的方式傳輸給客戶端虑省,實(shí)現(xiàn)實(shí)時(shí)播放或直播功能匿刮。

  6. 視頻截圖工具:FFmpeg 提供了截取視頻縮略圖的功能,可以用來生成視頻預(yù)覽圖探颈、視頻封面等熟丸。

  7. 視頻壓縮工具:通過 FFmpeg,你可以調(diào)整視頻的分辨率伪节、比特率光羞、幀率等參數(shù),以減小文件大小怀大,實(shí)現(xiàn)視頻壓縮纱兑。

2. 安裝

下面是一些常用平臺(tái)的安裝指南

2.1 Linux

  1. 使用包管理器安裝FFmpeg
- Debian/Ubuntu: `sudo apt-get install ffmpeg`
- CentOS/Fedora: `sudo yum install ffmpeg`

  1. 編譯安裝FFmpeg
- 下載最新的源代碼:`wget https://ffmpeg.org/releases/ffmpeg-<version>.tar.gz`
- 解壓源代碼:`tar -zxvf ffmpeg-<version>.tar.gz`
- 進(jìn)入解壓后的目錄:`cd ffmpeg-<version>`
- 配置和編譯:`./configure && make && sudo make install`

2.2 macOS

使用Homebrew安裝FFmpeg:

brew install ffmpeg

3. 基本用法

命令介紹

ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
ffmpeg [全局選項(xiàng)] [輸入選項(xiàng)] -i 輸入文件 [輸出選項(xiàng)] 輸出文件...

  1. [全局選項(xiàng)]: 適用于整個(gè)轉(zhuǎn)碼過程,如設(shè)置日志級別化借、指定硬件加速器等潜慎。
  2. [輸入選項(xiàng)]: 用于指定輸入文件的參數(shù),如輸入文件的格式蓖康、分辨率勘纯、幀率等。
  3. [輸出選項(xiàng)]: 用于指定輸出文件的參數(shù)钓瞭,如輸出文件的格式、編碼器淫奔、比特率等山涡。

常用選項(xiàng)

  • -c:v: 指定視頻編碼器。
  • -c:a: 指定音頻編碼器唆迁。
  • -b:v: 設(shè)置視頻比特率鸭丛。
  • -b:a: 設(shè)置音頻比特率。
  • -s: 設(shè)置輸出分辨率唐责。
  • -r: 設(shè)置輸出幀率鳞溉。
  • -ss: 剪切輸入文件的起始時(shí)間。
  • -t: 設(shè)置輸出文件的持續(xù)時(shí)間鼠哥。
  • -vf: 應(yīng)用視頻濾鏡熟菲。
  • -af: 應(yīng)用音頻濾鏡看政。

處理過程

  • 讀取輸入源
  • 進(jìn)行音視頻的解封裝
  • 解碼每一幀音視頻數(shù)據(jù)
  • 編碼每一幀音視頻數(shù)據(jù)
  • 進(jìn)行音視頻的重新封裝
  • 輸出到目標(biāo)
ffmpeg-process.jpg

轉(zhuǎn)碼

轉(zhuǎn)換一個(gè)音視頻文件的格式或編碼:

ffmpeg -i input.mp4 output.avi

剪切

剪切一個(gè)音視頻文件的時(shí)間段:

ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:30 -c copy output.mp4

修改分辨率

修改一個(gè)視頻文件的分辨率:

ffmpeg -i input.mp4 -vf scale=640:480 output.mp4

提取音頻

從一個(gè)視頻文件中提取音頻:

ffmpeg -i input.mp4 -vn -acodec copy output.aac

添加水印

在一個(gè)視頻文件上添加水印:

ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4

圖片合成視頻

將一系列圖片合成為視頻:

ffmpeg -framerate 25 -pattern_type glob -i 'input*.png' -c:v libx264 output.mp4

4. 高級用法

視頻編解碼——視頻編碼

使用不同的視頻編碼器對視頻進(jìn)行編碼:

ffmpeg -i input.mp4 -c:v libx264 output.mp4  # 使用H.264編碼
ffmpeg -i input.mp4 -c:v libvpx output.webm  # 使用VP8編碼

視頻編解碼——視頻解碼

使用不同的視頻解碼器對視頻進(jìn)行解碼:

ffmpeg -i input.mp4 -c:v rawvideo output.avi  # 將視頻解碼為無壓縮的原始視頻
ffmpeg -i input.mp4 -c:v mjpeg output.avi  # 使用MJPEG解碼器將視頻轉(zhuǎn)換為MJPG格式

編解碼——音頻編碼

使用不同的音頻編碼器對音頻進(jìn)行編碼:

ffmpeg -i input.wav -c:a aac output.m4a  # 使用AAC編碼器將音頻編碼為M4A格式
ffmpeg -i input.wav -c:a libopus output.opus  # 使用Opus編碼器將音頻編碼為Opus格式

編解碼——音頻解碼

使用不同的音頻解碼器對音頻進(jìn)行解碼:

ffmpeg -i input.mp3 -c:a pcm_s16le output.wav  # 將MP3音頻解碼為無壓縮的PCM音頻
ffmpeg -i input.aac -c:a pcm_s16le output.wav  # 將AAC音頻解碼為無壓縮的PCM音頻

常用濾鏡

  • crop:裁剪視頻抄罕,可以指定裁剪的起始和結(jié)束時(shí)間允蚣,以及裁剪的寬度和高度。
  • scale:縮放視頻呆贿,可以指定縮放的寬度和高度嚷兔,以及是否保持縱橫比。
  • rotate:旋轉(zhuǎn)視頻做入,可以指定旋轉(zhuǎn)的角度冒晰。
  • flip:翻轉(zhuǎn)視頻,可以指定是否水平翻轉(zhuǎn)或垂直翻轉(zhuǎn)竟块。
  • contrast:調(diào)整視頻的對比度壶运。
  • brightness:調(diào)整視頻的亮度。
  • saturation:調(diào)整視頻的飽和度彩郊。
  • hue:調(diào)整視頻的色調(diào)前弯。
  • sharpness銳化:銳化視頻,提高圖像的清晰度秫逝。
  • noisereduction降噪:降低視頻中的噪聲恕出,提高圖像的質(zhì)量。
  • deinterlace去隔行:去除視頻中的隔行掃描违帆,使圖像更加流暢浙巫。
  • Watermark水印:在視頻中添加水印刷后,可以指定水印的位置的畴、大小和透明度。

濾鏡-基本濾鏡

使用濾鏡效果來改善視頻或音頻:

# 調(diào)整亮度
ffmpeg -i input.mp4 -vf "scale=640:480, eq=brightness=0.2" output.mp4

# 調(diào)整音量
ffmpeg -i input.mp4 -af "volume=2.0" output.mp4

濾鏡-復(fù)雜濾鏡

使用復(fù)雜的濾鏡圖形鏈來實(shí)現(xiàn)更高級的效果:

# 分割尝胆、調(diào)整對比度和添加暗角效果
ffmpeg -i input.mp4 -vf "split=2[a][b];[a]eq=contrast=1.2[b];[b]vignette" output.mp4

# 提高音量和應(yīng)用高通濾波
ffmpeg -i input.mp4 -af "volume=1.5,highpass=f=200" output.mp4

流媒體傳輸-推送到RTMP服務(wù)器

將音視頻流推送到RTMP服務(wù)器進(jìn)行直播:

# 推送到RTMP服務(wù)器
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f flv rtmp://server/live/stream

流媒體傳輸-拉取RTMP流

從RTMP服務(wù)器拉取音視頻流進(jìn)行播放或處理:

# 拉取流并保存為文件
ffmpeg -i rtmp://server/live/stream -c:v copy -c:a copy output.mp4

# 拉取流并在SDL窗口中顯示視頻
ffmpeg -i rtmp://server/live/stream -vf "scale=640:480" -f sdl "Video Output"

高級選項(xiàng)——編碼參數(shù)調(diào)優(yōu)

調(diào)整編碼器的參數(shù)以獲得更好的音視頻質(zhì)量或壓縮率:

# 使用CRF調(diào)整視頻質(zhì)量和使用慢速預(yù)設(shè)以獲取更好的壓縮
ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow output.mp4

# 使用固定比特率設(shè)置音頻的碼率為128kbps
ffmpeg -i input.mp3 -c:a aac -b:a 128k output.m4a  

高級選項(xiàng)——處理字幕和元數(shù)據(jù)

提取丧裁、添加或修改視頻的字幕和元數(shù)據(jù):

# 提取視頻中的字幕為MOV Text字幕文件
ffmpeg -i input.mp4 -c:s mov_text output.mp4

# 添加英文字幕并設(shè)置語言標(biāo)簽
ffmpeg -i input.mp4 -c:s mov_text -metadata:s:s:0 language=eng output.mp4

# 修改視頻的標(biāo)題和藝術(shù)家元數(shù)據(jù)
ffmpeg -i input.mp4 -metadata title="My Title" -metadata artist="Artist Name" output.mp4

5. 文檔查找

ffmpeg -h
ffmpeg -muxers #查看支持的音視頻復(fù)用器
ffmpeg -h muxer=flv
ffmpeg -codecs #查看支持的編解碼器、格式和協(xié)議
-version         show version
-buildconf       show build configuration
-formats         show available formats
-muxers          show available muxers
-demuxers        show available demuxers
-devices         show available devices
-codecs          show available codecs
-decoders        show available decoders
-encoders        show available encoders
-bsfs            show available bit stream filters
-protocols       show available protocols
-filters         show available filters
-pix_fmts        show available pixel formats
-layouts         show standard channel layouts
-sample_fmts     show available audio sample formats
-dispositions    show available stream dispositions
-colors          show available color names
-sources device  list sources of the input device
-sinks device    list sinks of the output device
-hwaccels        show available HW acceleration methods

視頻信息分析神器——FFprobe

  • -show_format 格式相關(guān)信息
  • -show_streams 音視頻流分析
  • -show_packets 音視頻包分析
  • -show_frames 音視頻幀分析

6. 資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末含衔,一起剝皮案震驚了整個(gè)濱河市煎娇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贪染,老刑警劉巖缓呛,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杭隙,居然都是意外死亡哟绊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門痰憎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來票髓,“玉大人攀涵,你說我怎么就攤上這事【娉疲” “怎么了汁果?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長玲躯。 經(jīng)常有香客問我据德,道長,這世上最難降的妖魔是什么跷车? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任棘利,我火速辦了婚禮,結(jié)果婚禮上朽缴,老公的妹妹穿的比我還像新娘善玫。我一直安慰自己,他們只是感情好密强,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布茅郎。 她就那樣靜靜地躺著,像睡著了一般或渤。 火紅的嫁衣襯著肌膚如雪系冗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天薪鹦,我揣著相機(jī)與錄音掌敬,去河邊找鬼。 笑死池磁,一個(gè)胖子當(dāng)著我的面吹牛奔害,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播地熄,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼华临,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了端考?” 一聲冷哼從身側(cè)響起雅潭,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎跛梗,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棋弥,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡核偿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顽染。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漾岳。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轰绵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尼荆,到底是詐尸還是另有隱情左腔,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布捅儒,位于F島的核電站液样,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏巧还。R本人自食惡果不足惜鞭莽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望麸祷。 院中可真熱鬧澎怒,春花似錦、人聲如沸阶牍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽走孽。三九已至惧辈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間融求,已是汗流浹背咬像。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留生宛,地道東北人县昂。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像陷舅,于是被迫代替她去往敵國和親倒彰。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

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