1.基本信息查詢命令
ffmpeg -version //顯示版本
ffmpeg -demuxers //顯示可用的demuxers
ffmpeg --muxers //顯示可用的muxers
ffmpeg --devices //顯示可用的設(shè)備
ffmpeg --codecs //顯示可用的編解碼器
ffmpeg --decoders //顯示可用的解碼器
ffmpeg -encoders //顯示可用的編碼器
ffmpeg -bsfs //顯示比特流filter
ffmpeg -formates //顯示可用的格式
ffmpeg -protocols //顯示可用的協(xié)議
ffmpeg -filters //顯示可用的過濾器
ffmpeg -pix_fmts //顯示可用的像素格式
ffmpeg -sample_fmts //顯示可用的采樣格式
ffmpeg -layouts //顯示channnel名稱
ffmpeg --colors //顯示識別的顏色名稱
2.錄制命令
2.1 查看當(dāng)前mac 設(shè)備支持avfoundataion音視頻輸入源
ffmpeg -f avfoundation -list_devices true -i ""
2.2 錄當(dāng)前屏幕的視頻
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f:指定使用avfoundation采集數(shù)據(jù)
-i:制定從哪采集茵瀑,它是一個文件索引號
-r: 指定幀率
2.3 ffplay播放 yuv數(shù)據(jù)
ffplay out.yuv //此命令播放會失敗
ffplay -s 1920x1080 -pix_fmt uyvy422 out.yuv //指定畫面像素 和圖像編碼格式
-s: 查看采集的流的視頻畫面寬高
-pix_fmt:查看采集的流的圖像的編碼格式
2.4 用ffmpeg 在mac 下錄制聲音
ffmpeg -f avfoundation -i :0 out.wav
:0 代表音頻設(shè)備
2.5 用ffplay 播放 錄音文件
ffplay out.wav
3.分解/復(fù)用命令
3.1 將mp4 的封裝格式更改為flv(可轉(zhuǎn)其它格式)
ffmpeg -i input.mp4 -vcodec copy -acodec copy out.flv
-i :輸入文件
-vcodec copy :視頻編碼處理方式
-acodec copy :音頻編碼處理方式
3.2 抽取輸入文件mp4封裝格式的視頻流
ffmpeg -i input.mp4 -an -vcodec copy out.h264
-an : audio not 音頻不要的意思
3.3 抽取輸入文件mp4封裝格式的音頻流
ffmpeg -i input.mp4 -vn -acodec copy out.aac
-vn: video not 不要視頻
4.處理原始數(shù)據(jù)命令
4.1 ffmpeg 提取YUV 數(shù)據(jù)
ffmpeg -i input.mp4 - an -c:v rawvideo -pix_fmt yuv420p out.yuv
-an 輸出文件不開啟音頻
-c:v 使用編碼格式, rawvideo 表示原始視頻格式
-pix_fmt 像素格式編碼格式y(tǒng)uv420p
4.2 ffmpeg 提取PCM 數(shù)據(jù)
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
-vn 輸出文件不開啟視頻
-ar 設(shè)置音頻的采樣率
-ac 2 a代表audio抬探、c代表channel 猿诸、2 代表雙聲道
-f 數(shù)據(jù)存儲格式
4.3 ffplay 播放 pcm
ffplay -ar 44100 -ac 2 -f s16le out.pcm
5.裁剪與合并命令
5.1 裁剪一個視頻大小
ffmpeg -i input.mp4 -vf crop= in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
-vf v代表視頻 茫孔、f代表濾鏡
in_w 本身的視頻寬 (in_w-200 本身視頻的寬度減去200)
-c:v 編碼器 視頻的 用libx264
-c:a 編碼器 音頻的用copy (不對音頻做特殊處理)
5.2 裁剪一個視頻中的某個片段
ffmpeg -i input.mp4 -ss 0:0:0 -t 10 out.ts
-i 指定輸入源
-ss 指定開始時間 (00:00:00 時/分/秒)
-t 指定截取時間(以秒為單位)
5.3 合并多個視頻片段
ffmpeg -f concat -i input.txt out.flv
input.txt 內(nèi)容為"file filename"格式
例如:
file '1.ts'
file '2.ts'
6.圖片/視頻互轉(zhuǎn)命令
6.1 視頻轉(zhuǎn)圖片
ffmpeg -i input.mp4 -r 1 -f image2 image-%3d.jepg
-r 指定轉(zhuǎn)換圖片的幀率(1秒鐘轉(zhuǎn)出1張圖)
-f 輸出文件轉(zhuǎn)成image2 格式
6.2 圖片轉(zhuǎn)視頻
ffmpeg -i image-%3d.jpeg newout.mp4
7.直播相關(guān)命令
7.1 直播推流
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://server/live/streamName
-i 需要推出去的多媒體文件
-c copy 音頻與視頻的參數(shù)不變
-f flv 推出的文件格式 flv 格式
7.2 直播拉流
ffmpeg -i rtmp://server/live/streamName -c copy output.flv
7.3 合并視頻 /音頻文件 封裝
ffmpeg -i “video.h264" -i "audio.aac" -vcodec copy -acodec copy -absf aac_adtstoasc "res.mp4"
ffmpeg -y -i input.mp4 -hls_time 6 -hls_playlist_type vod -hls_segment_filename "list%3d.ts" list.m3u8
7.4 ffmpeg 分割成m3u8 ts
7.6 ffmpeg 提取h264 中關(guān)鍵幀
ffmpeg -i /Users/pengchao/Desktop/Caches/video_4 -r 10 -f image2 /Users/pengchao/Desktop/Caches/%05d.png
-i 表示如輸入
-r 表示 指定1秒內(nèi)抽取幾幀
-vf 表示 scale=640:480 (-vf scale=640:480)
-ss 00:00:00 表示起始時間
-t 00:03:00 表示截取視頻長度(-ss 00:00:00 -t 00:03:00)
-q 2 表示 (編碼質(zhì)量)
指定 轉(zhuǎn)碼后文件質(zhì)量
8.各種命令集合
9.ffplay 旋轉(zhuǎn)播放
ffplay還可以進行圖片和視頻的旋轉(zhuǎn)和翻轉(zhuǎn)锦聊。-vf 表示畫面旋轉(zhuǎn)和翻轉(zhuǎn)。
ffplay還可以進行圖片和視頻的旋轉(zhuǎn)和翻轉(zhuǎn)旋奢。-vf 表示畫面旋轉(zhuǎn)和翻轉(zhuǎn)迄薄。
旋轉(zhuǎn)參數(shù) 說明
“transpose=0” 逆時針旋轉(zhuǎn)90°后再水平翻轉(zhuǎn)
“transpose=1” 順時針旋轉(zhuǎn)90°
“transpose=2” 逆時針旋轉(zhuǎn)90°
“transpose=3” 順時針旋轉(zhuǎn)90°后再水平翻轉(zhuǎn)
ffplay -vf "transpose=0" -i image.jpg
- 獲取媒體文件的視頻總幀數(shù)
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 xxx.mp4
- 獲取媒體文件的視頻總包數(shù)
ffprobe -v error -count_packets -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 xxx.mp4
- 顯示媒體文件的PTS
ffprobe -show_entries packet=pts_time -select_streams v:0 -i /Users/pengchao/Downloads/513_sd_direct_access_to_media_encoding_and_decoding.mov