ffmpeg那些事
ffmpeg說明
- ffmpeg簡介:
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化爲流的開源計算機程序。採用LGPL或GPL許可證。它提供了錄製、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec,爲了保證高可移植性和編解碼質量,libavcodec裏很多code都是從頭開發的。 - ffmpeg模塊組成:
libavformat: 一個包含多媒體容器格式的解複用器和複用器的庫;
libavcodec: 一個包含音頻/視頻編解碼器和編碼器的庫;
libavutil: 一個包含簡化編程功能的庫,包括隨機數生成器、數據結構、數學例程、核心多媒體實用程序等。;
libavdevice: 一個包含輸入和輸出設備的庫,用於從許多常見的多媒體輸入/輸出軟件框架(包括Video4Linux、Video4Linux2、VfW和ALSA)獲取和呈現;
libavfilter: 一個包含媒體過濾器的庫;
libswscale: 一個執行高度優化的圖像縮放和顏色空間/像素格式轉換操作的庫;
libswresample 一個執行高度優化的音頻重採樣、重矩陣和採樣格式轉換操作的庫;
libpostproc: 用於後期效果處理;
ffmpeg: 可用於格式轉換、解碼或電視卡即時編碼等;
ffsever: 一個 HTTP 多媒體即時廣播串流服務器;
ffplay: 一個簡單的播放器,使用ffmpeg 庫解析和解碼,通過SDL顯示;
ffprobe: 一個媒體參數分析工具; - ffmpeg 官網
- 參考ffmpeg4.2.1
- 系統window10
ffmpeg命令
基本信息查詢命令
命令 | 說明 |
---|---|
-version | 顯示版本 |
-demuxers | 顯示可用的demuxers |
-muxers | 顯示可用的muxers |
-devices | 顯示可用的設備 |
-codecs | 顯示所有編解碼器 |
-decodecs | 顯示可用的解碼器 |
-encoders | 顯示可用的編碼器 |
-bsfs | 顯示顯示比特流filter |
-formats | 顯示可用的格式 |
-protocols | 顯示可用的協議 |
-filters | 顯示可用的過濾器 |
-pix_fmts | 顯示可用的像素格式 |
-sample_fmts | 顯示可用的採樣格式 |
-layouts | 顯示channel名稱 |
-colors | 顯示識別的顏色名稱 |
錄製命令
//查詢設備信息
ffmpeg -list_devices true -f dshow -i dummy
//根據查詢的信息,設置參數並錄製
ffmpeg -f dshow -video_size 1536x960 -framerate 30 -pixel_format yuv420p -i video="screen-capture-recorder":audio="virtual-audio-capturer" av-out.mp4
分解/複用命令
處理原始數據命令
裁剪與合併命令
圖片/視頻轉換命令
直播相關命令
各種濾鏡命令
- 將輸出文件的視頻比特率設置爲64 kbit/s
ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
- 將輸出文件的幀速率強制爲24 fps
ffmpeg -i input.avi -r 24 output.avi
- 將輸入文件的幀速率(僅對原始格式有效)強制爲1fps,將輸出文件的幀速率強制爲24fps
ffmpeg -r 1 -i input.m2v -r 24 output.avi
- 轉碼
ffmpeg -i input.flac -acodec libmp3lame -ar 44100 -ab 320k -ac 2 output.mp3
- 提取視頻流(剔除音頻流)
ffmpeg -i input.mp4 -vcodec copy -an v.mp4
- 提取音頻流(剔除視頻流)
ffmpeg -i input.mp4 -acodec copy -av a.m4a
- 合併音視頻流
ffmpeg -i a.m4a -i v.mp4 -c copy -av output.mp4
- 截取音視頻
//-ss:起始時間 && -to:終止時間 ffmpeg -i input.mp3 -ss 00:01:00 -to 00:01:10 -acodec copy output.mp3 //-t:持續時長 ffmpeg -i input.mp3 -ss 00:01:00 -t 10 -acodec copy output.mp3
- 拼接音視頻
ffmpeg -i “concat:input01.mp4|input02.mp4|input03.mp4” -c copy output.mp4
- 截圖
ffmpeg -i input.mp4 -ss 5 -vframes 1 img.jpg
- 添加水印
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=20:20" output.mp4
- 動圖gif
ffmpeg -i input.mp4 -ss 7.5 -to 8.5 -s 640x320 -r 15 output.git
- 錄屏(OBS Studio:強大的免費開源錄屏軟件)
//只能錄屏,不支持錄音 ffmpeg -f gdigrab -i desktop rec.mp4
- 推流
ffmpeg -re -i rec.mp4 按照網站要求編碼 -f flv "你的rtmp地址/你的直播碼"
- 無損壓縮(快速編碼)
ffmpeg -i input -vcodec libx264 -preset ultrafast -qp 0 output.mkv
- 無損壓縮(高壓縮比)
ffmpeg -i input -vcodec libx264 -preset veryslow -qp 0 output.mkv
ffmpeg開發
下載ffmpeg
Shared:包含所需dll
Dev:包含所需include及lib
ffmpeg開發代碼
- 使用vs2017 與 ffmpeg4.2.1
請參閱 ffmpeg開發代碼
UE4音視頻功能插件
請參閱 UE4音視頻功能插件