ffmpeg 常用命令示例及解釋

參考博文
https://c7sky.com/common-ffmpeg-commands.html
https://www.cnblogs.com/frost-yen/p/5848781.html
https://blog.csdn.net/doublefi123/article/details/24325159

FFMPEG 命令格式

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

1. 攝像頭採集視頻

ffmpeg -f video4linux2 -i /dev/video0 out.avi

 video4linux2 是linux系統下的視頻採集接口
/dev/video0 表示攝像頭設備
默認使用MPEG4進行視頻編碼

2. 聲卡採集音頻

ffmpeg -f alsa -ar 22050 -ac 1 -i hw:0 out.wav

-ar 16000 表示音頻採樣率爲22050Hz
-ac 1 表示默認單通道
hw:0 是默認的聲卡

3. 同時採集視頻和音頻,並制定編碼格式,封裝成flv, 推送至Nginx服務器

ffmpeg -f alsa -thread_queue_size 131072 -ar 22050 -ac 1 -i hw:0 -f video4linux2 -r 29.97 -s 640x360 -i /dev/video0 -vcodec libx264 -b:v 1000k -acodec aac -strict -2 -f flv rtmp://127.0.0.1:1935/myapp

4. 視頻格式轉換

ffmpeg -i out.avi out.mp4

5. 指定規格參數

ffmpeg -i out.avi -c:v libx264 -preset slow -crf 18 -c:a aac -b:a 128k -pix_fmt yuv420p out_para.mp4

-c:v 等價於 -vcodec 指明視頻編碼格式
-preset slow 慢速模式 耗時間 清晰度高
-crf 控制視頻輸出質量,取值範圍爲0-51,0爲無損,從主觀上講,18-28是一個合理的範圍
-c:a 等價於 -acodec 指明音頻編碼格式
-pix_fmt 指定像素的格式,yuv420p,yuv422

6. 視頻剪切

ffmpeg -ss 0:0 -t 0:10 -i input.mov output.mp4

從0:0開始,裁剪10秒鐘的視頻

7. 裁剪視頻尺寸

ffmpeg -i input.mov -vf scale=iw/2:-1,crop=ih output.mp4

 將原視頻縮小一半,並裁剪畫面正中的正方形區域
scale=width:height iw/ih 表示輸入寬度/高度 -1 表示按輸入尺寸等比自動計算
crop=width:height:x:y x:y 指定裁剪的左上角位置,默認值爲 (in_w-out_w)/2 和 (in_h-out_h)/2,即輸出視頻爲原視頻的中央區域
-vf 是video filter, 對視頻進行翻轉,旋轉,縮放,裁剪等

8. 加速/減速視頻

ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" -map "[v]" -map "[a]" output.mp4

setpts=0.5*PTS 中的 0.5 是視頻速度放慢一半
atempo=2 中的 2 是相對應的音頻速度(=1/視頻速度)

9. 提取視頻/提取音頻

ffmpeg -i input.mov -vcodec copy -an output.mp4

-vcodec copy 複製視頻編碼
-an 禁止音頻輸出

ffmpeg -i input.mov -vn -acodec copy output.mp3

-vn 禁止視頻輸出

10. 視頻截圖

每秒輸出一張圖:

ffmpeg -i input.mov -vf fps=1 -q:v 2 output%03d.png

-q:v 2 表示視頻質量

輸出第 10 秒的截圖

ffmpeg -i input.mov -ss 00:00:10 -vframes 1 output.jpg

每秒截圖,大小爲原視頻的一半,輸出一張 10x3 的網格圖:

ffmpeg -y -i input.mp4 -vf "fps=1,scale=iw/2:-1,tile=10x3" -an output.jpg

11. 輸出YUV420原始數據

ffmpeg -i input.mp4 output.yuv

要得到某一幀的YUV數據,可以先抽取JPEG圖片

ffmpeg -i input.mp4 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg

再將JPEG圖片轉爲YUV

ffmpeg -i pic-001.jpeg -s 1440x1440 -pix_fmt yuv420p xxx3.yuv 

-s w*h 表示視頻的大小
-pix_fmt 制定像素格式

轉載自
 

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