ffmpeg介紹,安裝
FFmpeg 是一款開源軟件,用于生成處理多媒體數(shù)據(jù)的各類庫和程序。
FFmpeg可以轉(zhuǎn)碼、處理視頻和圖片(調(diào)整視頻、圖片大小,去噪等)、打包、傳輸及播放視頻。

簡單來說,ffmpeg就是一個(gè)音視頻處理軟件,
跨平臺的音視頻處理方案,可以在Linux,Windows,mac系統(tǒng)下運(yùn)行
ffmpeg應(yīng)用場景
播放:迅雷看看、qq音影、暴風(fēng)影音
剪輯:剪映
轉(zhuǎn)換:格式工廠
都是基于ffmpeg進(jìn)行二次開發(fā)的。
ffmpeg框架
FFmpeg(Fastforword mpeg,音視頻轉(zhuǎn)換器)是一個(gè)開源免費(fèi)跨平臺的視頻和音頻流方案,它提供了錄制/音視頻編解碼、轉(zhuǎn)換以及流化音視頻的完整解決方案。ffmpeg源碼目錄結(jié)構(gòu)如下:


FFmpeg框架中還提供了幾個(gè)用于執(zhí)行命令行完成音視頻數(shù)據(jù)處理工具,包括fplay、ffprobe、ffserver,
具體解釋如下:
ffplay Fast forword play,用ffmpeg實(shí)現(xiàn)的播放器
ffserver Fast forword server,用ffmpeg實(shí)現(xiàn)的rtsp服務(wù)器
ffprobe Fast forword probe,用來輸入分析輸入流
總體來說,
FFmpeg框架主要的作用在于對多媒體數(shù)據(jù)進(jìn)行解協(xié)議、解封裝、解碼以及轉(zhuǎn)碼等操作。
FFmpeg中有很多比較重要的結(jié)構(gòu)體,比如與輸入輸出(1/O)有關(guān)的結(jié)構(gòu)體AVIOContext、URLContext、URLProtocol,
與封裝格式有關(guān)的結(jié)構(gòu)體AVFormatContext、AVInputFormat、AVOutputFormat,
與編解碼有關(guān)的結(jié)構(gòu)體AVCodec、AVCodecContext,
以及與音視頻數(shù)據(jù)有關(guān)的結(jié)構(gòu)體AVStream、AVPacket、AVFrame等等
ffmpeg有什么用途
FFmpeg在不停添加新的用例、工具和特性,這可以將FFmpeg擴(kuò)展出無數(shù)個(gè)用途,比如:
1、視頻處理
2、視頻壓縮
3、支持視頻打包
4、支持音頻、視頻容器格式(幾乎市面上的格式,全都支持)
5、ffprobe:
FFmpeg 還可用于了解視頻結(jié)構(gòu)并對其進(jìn)行分析。
FFmpeg庫構(gòu)建了一個(gè)名為 ffprobe 的命令行,可用于查看和分析視頻文件。
你可以使用 ffprobe 從視頻中提取各種元數(shù)據(jù)、計(jì)算幀數(shù)、査找 IDR 幀的位置等等。
6、ffplay:
FFmpeg中還有一個(gè)播放視頻的命令行工具fplay,無需任何花哨的視頻播放軟件,直接使用它就可以了。
ffmpeg安裝
首先去官網(wǎng):https://ffmpeg.org/
1,點(diǎn)擊download

2,點(diǎn)擊下方windows,選擇第二個(gè),如下圖

3,點(diǎn)擊后,會跳轉(zhuǎn)到git中,點(diǎn)擊下圖紅框中的zip進(jìn)行下載。

4,下載成功后,解壓到自己本地目錄;然后打開bin目錄,復(fù)制路徑,添加到環(huán)境變量中去。

5,環(huán)境變量配置
我的電腦-屬性-高級系統(tǒng)設(shè)置-環(huán)境變量-系統(tǒng)變量-path-新建-把bin目錄路徑添加進(jìn)去

6,然后win鍵+r鍵,打開cmd命令窗口,輸入:ffmpeg -version 查看是否安裝成功

至此,介紹和安裝完畢。
然后可以通過help命令查看使用命令:ffmpeg -help 或者 ffmpeg -h,會打印出所有的使用幫助。

常用的一些命令,可以在網(wǎng)上搜,有人整理過,比如下面我隨便找了幾個(gè):
https://developer.baidu.com/article/details/3304927
https://baijiahao.baidu.com/s?id=1816114967992754157&wfr=spider&for=pc
https://blog.csdn.net/weixin_61503529/article/details/141828622
如果覺得命令使用麻煩的話,可以看B站上這位小姐姐的視頻講解,比如把命令保存到txt文件中,然后把txt修改成bat文件類型,然后點(diǎn)擊即可。
其它更多關(guān)于ffmpeg相關(guān)知識,可自行網(wǎng)上學(xué)習(xí)。
ps更新:
踩到的第一個(gè)坑,通過命令或腳本,開始錄制視頻。錄制結(jié)束后生成mp4結(jié)尾文件,打開文件提示該文件使用中,然后發(fā)現(xiàn)該文件持續(xù)在寫入,內(nèi)存在變大。
問題原因
-
FFmpeg 進(jìn)程未正確終止
-
Python 腳本退出時(shí),子進(jìn)程可能仍在運(yùn)行
-
-
資源未釋放
-
文件句柄/管道未關(guān)閉導(dǎo)致系統(tǒng)認(rèn)為文件仍在使用
-
-
緩沖區(qū)未刷新
-
FFmpeg 的寫入緩沖區(qū)未完全寫入磁盤
-
原因是FFmpeg 進(jìn)程在腳本結(jié)束后仍在后臺運(yùn)行,導(dǎo)致視頻文件被鎖定且持續(xù)寫入。
可以通過命令結(jié)束掉這個(gè)進(jìn)程。
1. Windows 系統(tǒng)
方法1:通過任務(wù)管理器(cmd命令窗口):taskkill /f /im ffmpeg.exe
方法2:通過進(jìn)程PID(需提前記錄PID):taskkill /f /pid <進(jìn)程PID>
方法3:結(jié)束所有視頻相關(guān)進(jìn)程:taskkill /f /im ffmpeg.exe /im vlc.exe /im mpv.exe
2. Linux/macOS 系統(tǒng)
方法1:通過進(jìn)程名(bash):pkill -f ffmpeg
方法2:通過進(jìn)程PID:kill -9 <進(jìn)程PID>
方法3:結(jié)束所有相關(guān)進(jìn)程:killall ffmpeg vlc mpv
然后寫腳本的時(shí)候,可以在在代碼中添加進(jìn)程清理邏輯。

浙公網(wǎng)安備 33010602011771號