ffmpeg那些事

ffmpeg說明

  1. ffmpeg簡介:
    FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化爲流的開源計算機程序。採用LGPL或GPL許可證。它提供了錄製、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec,爲了保證高可移植性和編解碼質量,libavcodec裏很多code都是從頭開發的。
  2. ffmpeg模塊組成:
    libavformat: 一個包含多媒體容器格式的解複用器和複用器的庫;
    libavcodec: 一個包含音頻/視頻編解碼器和編碼器的庫;
    libavutil: 一個包含簡化編程功能的庫,包括隨機數生成器、數據結構、數學例程、核心多媒體實用程序等。;
    libavdevice: 一個包含輸入和輸出設備的庫,用於從許多常見的多媒體輸入/輸出軟件框架(包括Video4Linux、Video4Linux2、VfW和ALSA)獲取和呈現;
    libavfilter: 一個包含媒體過濾器的庫;
    libswscale: 一個執行高度優化的圖像縮放和顏色空間/像素格式轉換操作的庫;
    libswresample 一個執行高度優化的音頻重採樣、重矩陣和採樣格式轉換操作的庫;
    libpostproc: 用於後期效果處理;
    ffmpeg: 可用於格式轉換、解碼或電視卡即時編碼等;
    ffsever: 一個 HTTP 多媒體即時廣播串流服務器;
    ffplay: 一個簡單的播放器,使用ffmpeg 庫解析和解碼,通過SDL顯示;
    ffprobe: 一個媒體參數分析工具;
  3. ffmpeg 官網
  4. 參考ffmpeg4.2.1
  5. 系統window10

ffmpeg命令

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開發代碼

UE4音視頻功能插件

請參閱 UE4音視頻功能插件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章