FFmpeg經常使用命令總結

ffmpeg命令分爲8大類架構

  1. 查詢命令ide

    ffmpeg -devices編碼

    查看當前電腦的錄製設備架構spa

    ffmpeg -f avfoundation -list_devices true -i ""3d

    查看當前電腦的錄製設備列表code

    ffmpeg f視頻

    查看當前ffmpeg的各種詳細信息server

    ffmpeg -help索引

    查看ffmpeg的幫助文檔圖片

  2. 錄製命令

    ffmpeg -f avfoundation -i 1 -r 30 out.yuv

    使用1圖像設備(0:攝像頭;1:錄屏)錄製文件名爲out.yuv的30fps的視頻

    ffmpeg -f avfoundation -i :0 out.aac

    使用0音頻設備(0:電腦自帶的麥克風)錄製名爲out.aac的音頻

  3. 解複用命令

    ffmpeg -i demo.mp4 -vcodec copy -acodec copy demo.flv

    將demo.mp4文件的音頻和視頻原封不動的拷貝成demo.flv文件,不改變其分辨率,格式,濾鏡等

    ffmpeg -i demo.mp4 -vcodec copy -an demo.h264

    將demo.mp4文件的視頻原封不動的拷貝成demo.flv文件,可是不含音頻

    ffmpeg -i demo.mp4 -vn -acodec copy demo.aac

    將demo.mp4文件中的音頻原封不動的拷貝成demo.aac文件,可是不含視頻

  4. 處理原始數據命令

    ffmpeg -i demo.mp4 -an -c:v rawvideo -pix_fmt yuv420p demo.yuv

    將demo.mp4文件轉成demo.yuv這樣的原始視頻數據文件,其中不包含音頻。而且編碼爲rawvideo原始視頻文件像素格式是yuv420p。yuv經常使用像素格式444p,422p,420p

    ffmpeg -i demo.mp4 -vn -ar 44100 -ac 2 -f s16le demo.pcm

    將demo.mp4文件中的音頻抽取出來轉成demo.pcm這樣的音頻原始文件,其中不包含視頻。其中音頻採樣率(audio rate)爲44100,音頻聲道爲2聲道(audio channel)音頻編碼格式是s16le(s表明有符號的,即正負;16表明16進制;le表明小的little end)

  5. 音視頻裁剪命令

    ffmpeg -i demo.mp4 -ss 00:02:00 -t 20 demo.ts

    將demo,mp4從2分鐘進行裁剪,裁剪成10秒的一個視頻;

    -ss表明從什麼時間點開始裁剪;

    -t表明裁剪的時長;

    .ts格式是一種日本高清攝像機錄製以後封裝的視頻格式

  6. 視頻圖片互轉命令

    ffmpeg -i demo.mp4 -r 1 -f image2 image_%3d.jpeg

    將demo.mp4視頻按照1秒鐘1張圖片的方式截成image2格式的圖片,若是視頻有22秒,那麼最終就是22張;

    -r表明按照多少秒的間隔截取圖片;

    image2是一種圖片格式;

    image_%3d表明一種動態的命名規範,好比:image_001.jpeg;

    ffmpeg -i image_%3d.jpeg demoImage.mp4

    將符合image_%3.jpeg文件格式的全部文件轉成mp4文件

  7. 直播流命令

    推流命令

    ffmpeg -re -i demo.mp4 -c copy -f flv rtmp://server/live/streamName

    將demo.mp4文件推送到直播流地址中

    -re表明減慢推流速度,讓當前錄製的視頻和推流視頻保持一致

    -c表明音視頻同時編碼,若是隻對視頻編碼-vcodec,音頻就是-acodec

    -f表明格式

    拉流命令

    ffmpeg rtmp://server/live/steamName -c copy demo.flv

    將rtmp地址上的視頻拉到本地,同時對音視頻編碼保存到本地

  8. 濾鏡命令
    濾鏡原理:

    1. 拿到解碼後的原始視頻數據幀

    2. 對原始視頻數據幀進行加濾鏡

    3. 再進行編碼獲得濾鏡後的編碼數據包

    ffmpeg -i demo.mp4 -vf crop=demo_w-200:demo_h-200 -c:v libx264 -c:a copy demo.mp4

    將demo.mp4進行寬高各裁剪200像素的濾鏡操做

    -vf是對視頻進行操做,crop是裁剪的意思後面跟着參數

    -c:v 是對視頻進行編碼,後面跟着視頻編碼器,這裏用的是lib264x

    -c:a 是對音頻進行編碼,後面跟着音頻編碼器,這裏用copy就是不變更音頻

  9. 其餘命令

    ffplay demo.mp4

    播放demo.mp4文件

    ffplay -s 1280x800 -pix_fmt uyvy422 demo.yuv

    播放分辨率是1280x800的像素格式是uyvy422的demo.yuv視頻原始文件

附錄:

-i:後面接文件名,「i」是「index」索引的簡稱,用於找到文件
-s:後面接一個分辨率或者大小,「s」是「size」大小的簡稱,用於指定原始視頻文件(如:yuv格式)的分辨率,若是不指定的話,視頻沒法正常播放
-c:後面接編碼命令,-c表明對音視頻同時編碼,若是單獨對音頻或者視頻編碼使用-acodec或者-vcodec
-pix_fmt:後面接一個視頻格式,如:yuv420p,uyvy422等。「pix」是「pixel」像素的簡稱,「fmt」是「fomat」格式的簡稱。一樣,若是不指定的話,原始視頻文件沒法正常播放
-f:後面接一個格式,好比:flv,MP4等
-vn:不對視頻編輯或者屏蔽視頻的命令,「v」表明「video」視頻,「n」表明「no」
-an:不對音頻編輯或者屏蔽音頻的命令,「a」表明「audio」音頻,「n」表明「no」
-vcodec:對視頻進行編碼
-avodec:對音頻進行編碼
copy:拷貝命令,通常用於更改視頻或者音頻格式
-ac:表明音頻聲道,「a」表明「audio」,「c」表明「channel」
-ar:表明音頻採樣率,「a」表明「audio」,「r」表明「rate」複製代碼
相關文章
相關標籤/搜索