FFMpeg的基本介绍
文章目錄
- 1 FFMpeg的基本概念
- 1.1 FFMpeg是什么
- 1.2 FFmpeg 的組成
- 1.3 FFmpeg 主要功能
1 FFMpeg的基本概念
1.1 FFMpeg是什么
FFmpeg 是一套可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的開源計算機程序。
采用 LGPL 或 GPL 許可證。它提供了錄制、轉換以及流化音視頻的完整解決方案。
FFmpeg 在 Linux 平臺下開發,但它同樣也可以在其它操作系統環境中編譯運行,包括Windows、Mac OS X 等。
這個項目最早由 Fabrice Bellard 發起,2004 年至 2015 年間由 Michael Niedermayer 主要負責維護。許多 FFmpeg 的開發人員都來自 MPlayer 項目,而且當前 FFmpeg 也是放在MPlayer 項目組的服務器上。項目的名稱來自 MPEG 視頻編碼標準,前面的"FF"代表"Fast Forward"。
1.2 FFmpeg 的組成
構成 FFmpeg 主要有三個部分:
第一部分:工具
第一部分是四個作用不同的工具軟件,分別是:ffmpeg.exe,ffplay.exe,ffserver.exe
和 ffprobe.exe。
- ffmpeg.exe:音視頻轉碼、轉換器
- ffplay.exe:簡單的音視頻播放器
- ffserver.exe:流媒體服務器
- ffprobe.exe:簡單的多媒體碼流分析器
第二部分:SDK
第二部分是可以供開發者使用的 SDK,為各個不同平臺編譯完成的庫。
如果說上面的四個工具軟件都是完整成品形式的玩具,那么這些庫就相當于樂高積木一樣,我們可以根據自己的需求使用這些庫開發自己的應用程序。這些庫有:
- libavcodec:包含音視頻編碼器和解碼器。編解碼庫,封裝了 Codec 層,但是有一些 codec 是具備自己的 License 的,FFmpe 不會默認添加像 libx264、FDK-AAC、Lame 等庫,但是 FFmpeg 是一個平臺,可以將其他的第三方 codec 以插件的方式添加進來,為開發者提供統一接口。
- libavutil:包含多媒體應用常用的簡化編程的工具,如隨機數生成器、數據結構、數學函數等功能。核心工具庫,最基礎模塊之一,其他模塊都會依賴該庫做一些基本的音視頻處理操作。
- libavformat:包含多種多媒體容器格式的封裝、解封裝工具。文件格式和協議庫,封裝了 Protocol 層和 Demuxer、Muxer 層,使得協議和格式對于開者來說是透明的。
- libavfilter:包含多媒體處理常用的濾鏡功能。音視頻濾鏡庫,該模塊包含了音頻特效和視頻特效的處理,在使用 FFmpeg 的 API 進行編解碼的過程中,可以使用該模塊高效的為音視頻數據做特效處理。
- libavdevice:用于音視頻數據采集和渲染等功能的設備相關。輸入輸出設備庫,比如需要編譯出播放聲音或者視頻的工具 ffplay,就需要確保該模塊是打開的,同事也需要 libsdl 的預先編譯,該設備模塊播放聲音和視頻都又是使用 libsdl 庫。
- libswscale:用于圖像縮放和色彩空間和像素格式轉換功能。該模塊用于圖像格式轉換,可以將 YUV 的數據轉換為 RGB 的數據。
- libswresample:用于音頻重采樣和格式轉換等功能。用于音頻重采樣,可以對數字音頻進行聲道數、數據格式、采樣率等多種基本信息的轉換。
- libpostproc:該模塊用于進行后期處理,當我們使用 filter 的時候,需要打開這個模塊,filter 會用到這個模塊的一些基礎函數。
比較老的 ffmpeg 還會編譯出 avresamle 模塊,也是用于對音頻原始出具進行重采樣的,但是已經被廢棄,推薦使用 libswresample 替代。另外,庫里還可以包含對 H.264/MPEG-4 AVC 視頻編碼的 X264 庫,是最常用的有損視頻編碼器,支持 CBR、VBR 模式,可以在編碼的過程中直接改變碼率的設置,在直播的場景中非常適用!可以做碼率自適應的功能。
第三部分:源碼
第三部分是整個工程的源代碼,無論是編譯出來的可執行程序還是 SDK,都是由這些源代碼編譯出來的。
FFmpeg 的源代碼由 C 語言實現,主要在 Linux 平臺上進行開發。
FFmpeg 不是一個孤立的工程,它還存在多個依賴的第三方工程來增強它自身的功能。
1.3 FFmpeg 主要功能
多媒體視頻處理工具 FFmpeg 有非常強大的功能包括視頻采集功能、視頻格式轉換、視頻抓圖、給視頻加水印等。
視頻采集功能:
- ffmpeg 視頻采集功能非常強大,不僅可以采集視頻采集卡或 USB 攝像頭的圖像,還可以進行屏幕錄制,同時還支持以 RTP 方式將視頻流傳送給支持 RTSP 的流媒體服務器,支持直播應用。
視頻格式轉換功能:
- ffmpeg 視頻轉換功能。視頻格式轉換,比如可以將多種視頻格式轉換為 flv 格式,可不是視頻信號轉換 。ffmpeg 可以輕易地實現多種視頻格式之間的相互轉換(wma,rm,avi,mod 等),例如可以將攝錄下的視頻 avi 等轉成視頻網站所采用的 flv 格式。
視頻截圖功能:
- 對于選定的視頻,截取指定時間的縮略圖。視頻抓圖,獲取靜態圖和動態圖,不提倡抓 gif 文件;因為抓出的 gif 文件大而播放不流暢。
給視頻加水印功能:
- 使用 ffmpeg 視頻添加水印(logo)。
參考資料:
總結
以上是生活随笔為你收集整理的FFMpeg的基本介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新股中签缴费,需要保证资金账户中有充足的
- 下一篇: 驱动设计的思想:面向对象/分层/分离