FFmpeg-主要命令梳理

一:FFmpeg命令分類:

在這裏插入圖片描述

二:ffmpeg處理音視頻的流程

在這裏插入圖片描述
demuxer:解封裝,將音視頻流進行分離,獲得音視頻編碼後的數據。
muxer:封裝,將音視頻流編碼後的數據合於一體。
decoder:解碼。web

三:基本信息查詢命令

在這裏插入圖片描述

四:命令

1:錄製視頻:

# -f:指定從使用mac的avfoundation採集數據。
# -i:就是input,輸入流,後面的1是設備編號,表示屏幕(錄屏)
i處理輸入流)。
# -r:指定幀率,通常來講25幀就比較流暢,15幀就勉強夠用了。
# out.yuv:採集後的數據保存成yuv格式,這是一種原始格式的數據,比較大。
ffmpeg -f avfoundation -i 1 -r 30 out.yuv

播放視頻:shell

# -s 指定分辨率
# -pix_fmt 指定原始視頻格式
ffplay -s 2560*1600 -pix_fmt uyvy422

採集音頻ide

# 冒號以前表明視頻設備,冒號以後就表明音頻設備
ffmpeg -f avfoundation -i :1 out.wav

播放音頻svg

# 這裏因爲是有格式的音頻數據,直接播放就能夠了。
ffplay out.wav

2:分解與複用

用於更換多媒體數據的格式(封裝格式)
解複用 - 本質是音視頻數據的分離。
複用 - 將音視頻數據從新封裝。
轉換音視頻格式編碼

# -vcodec 視頻解複用
# -acodec 音頻解複用 
# copy 表示不更改變解複用後的編碼格式,徹底copy 
ffmpeg -i test.mp4 -vcodec copy -acodec copy out.flv

提取視頻流spa

# -an 表示不要音頻流
ffmpeg -i test.mp4 -an -vcodec copy out.h264

提取音頻流3d

ffmpeg -i test.mp4 -acodec copy -vn out.h264

3:處理原始數據

提取視頻原數據code

# -c:v 對視頻進行解碼,使用的編解碼器是 rawvideo
# -pix_fmt 每一幀圖像編碼爲 yuv 4:2:0
ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv

播放視頻原數據
上面有提到,略:視頻

提取音頻原數據server

# -ar 即 audio read,音頻採樣率爲44100
# -ac 即 audio channel,聲道,ac2表示雙聲道
# -f 抽取出的音頻pcm數據的格式,s16le s表示有符號,16位,le-little end 表示小頭。
ffmpeg -i out.mp4 -vn -ar 44100 ac 2 -f s16le out.pcm

播放音頻原數據

ffplay -ar 44100 -ac 2 -f s16le out.pcm

4:濾鏡命令

# -vf 指定濾鏡
# crop,一個濾鏡的名字,=後面是參數,in_w 表示寬度減小200,in_h表示高度減小200
# -c:v 指定使用的編解碼器,前面有說過
# -c:a copy 不對音頻作處理
ffmpeg -i test.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4

5:ffmpeg 裁剪與合併命令

裁剪:

# -ss 裁剪的時間點
# -t 裁剪的時長,以秒爲單位 
ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts

合併:

# -f concat 表示要對後面的文件進行拼接
# -i 指定輸入文件,inputs.txt 中是一個文件列表,指定了要拼接的視頻
# out.flv 輸出
ffmpeg -f concat -i inputs.txt out.flv

其中,inputs.txt中文件的格式爲

file '1.mp4'
file '2.mp4'

加上copy,會使用當前的編碼方式,不會執行解碼的流程,速度更快:

ffmpeg -f concat -i files.txt -c copy output.mp4

6:圖片與視頻互轉命令

視頻轉圖片

# -r 1 表示一秒鐘轉一張圖片
# -f 指定轉出文件格式,這裏爲image2
# image-%3d.jpeg 表示圖片名,%3d表示圖片編號由3個數字組成。
ffmpeg -i in.flv -r 1 -f image2 image-%3.jpeg

圖片轉視頻

ffmpeg -i image-%3d.jpeg out.mp4

7:直播推/拉流

直播推流

#-c 音視頻編解碼,-a是音頻編解碼 -v是視頻編解碼
#-f 指定格式 
#-re 表示幀率和真正的幀率保持同步
ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName

直播拉流

ffmpeg -i rtmp://server/live.streamName -c copy dump.flv
相關文章
相關標籤/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。