一、基本信息查詢命令:
-
ffmpeg -version
顯示版本信息
版本信息.png -
ffmpeg devices
支持的設(shè)備

-
ffmpeg -demuxers
顯示可用的demuxers(解封裝)

-
ffmpeg -muxers
顯示可用的muxers(封裝)
可用的muxers.png
-
ffmpeg -codecs
顯示所有的編解碼器
所有的編解碼器.png
-
ffmpeg -decoders
顯示可用的解碼器
所有的解碼器.png
-
ffmpeg -encoders
顯示可用的編碼器
所有的編碼器.png -
ffmpeg -bsfs
顯示比特流filter
顯示所有的比特流filter.png
-
ffmpeg -formats
顯示可用的格式
![顯示可用的協(xié)議.png
-
ffmpeg protocols
顯示可用的協(xié)議
顯示可用的協(xié)議.png
-
ffmpeg -filters
顯示可用的過濾器
可用的過濾器.png -
ffmpeg -pix_fmts
顯示可用的像素格式
可用的像素格式.png
-
ffmpeg -sample_fmts
顯示可用的采樣格式
可用的采樣格式.png -
ffmpeg -layout
顯示可用的chanel名稱(聲道)
可用的聲道.png -
ffmpeg -color
顯示可識別的顏色名稱
可用的顏色名稱.png
二、錄制命令:
- 錄制桌面視頻
【MAC】ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f:使用什么庫采集數(shù)據(jù),ios中使用的是
avfoundation
-i:從哪采集數(shù)據(jù)(是一個文件索引)
-r:幀率
out.yuv:表示原始格式數(shù)據(jù),采集到的是什么樣,存儲的就是什么樣
- 錄制聲音
【MAC】ffmpeg -f avfoundation -i :0 out.wav
-f : 使用什么庫采集數(shù)據(jù),ios中使用的是
avfoundation
-i : 采集誰的數(shù)據(jù)::xx 表示音頻設(shè)備,xx : 表示視頻設(shè)備
查看windows上的采集庫:
下載ffempeg的源碼http://ffmpeg.org/download.html,通過cygwin進入到源碼的根目錄下,執(zhí)行命令
./configure --list-indevs
就可以看到所有支持的庫了;
三、分解與復用命令
1.分解與復用:文件格式的轉(zhuǎn)換(Mp4-->mov/flv等)
【MAC】
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
-i : 輸入文件(要對哪個文件做處理)
-vcodec copy : 視頻編碼處理方式
-acodec copy :音頻編碼處理方式
out.flv : 輸出格式
2.處理原始數(shù)據(jù):
原始數(shù)據(jù):就是ffmpeg解碼后的數(shù)據(jù),音頻就是pcm數(shù)據(jù),對于視頻就是yuv數(shù)據(jù),
2.1. 從視頻中提取yuv數(shù)據(jù)
【MAC】ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
-i:輸入數(shù)據(jù),要對哪個文件做處理
-an:a指音頻,n指no,即輸出結(jié)果中不包括音頻
-c:v:指對視頻進行編碼,用rawvideo方式(原始視頻)
-pix_fmt : 既然是用原始數(shù)據(jù)編碼,所以就要有像素格式,即yuv420p(yuv 4:2:0)
out.yuv : 輸出文件
在播放yuv格式的視頻的時候,要設(shè)置一個分辨率,否則會報錯,Picture size 0x0 is invalid out.yuv,這里的分辨率可以在解碼的過程中獲取到
【MAC】播放視頻 : ffplay -s 638x358 out.yuv
2.2.從音頻中提取pcm數(shù)據(jù)
【MAC】ffmpeg -i out.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm
-i :輸入數(shù)據(jù),也就是要對哪個文件做處理
-vn : video no,即輸出結(jié)果中不包括視頻
-ar : audio read,即音頻的采樣率,這里的44100表示44.1k
-ac : audio chennel,即聲道,這里的ac2表示雙聲道
-f : format,即抽取出來的音頻的存儲格式是什么,s16le
中s表示有符號的,有正有負,16表示每一個數(shù)值都是用16位表示,le : little end即小頭,是一種存儲方式;
out.pcm :輸出的文件名字
【MAC】播放音頻: ffplay -ar 44100 -ac 2 -f s16le out.pcm
四、濾鏡命令
1.處理流程
2.命令(有很多,比如加水印,去水印等)
- 視頻裁剪
【MAC】ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
-i : 要處理的文件
-vf : vedio filter視頻濾鏡,這里用的是crop濾鏡,后面的in_w-200:in_h-200
為濾鏡參數(shù),表示寬高為原始寬高-200
-c:v :視頻的編碼器,這里為libx264
-c:a : 音頻編碼器,copy表示不對音頻做特殊處理
out.mp4 : 輸出文件
五.裁剪合并編輯命令
- 裁剪視頻:
【MAC】ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts
-i : 要處理的文件,指定多媒體文件是什么
-ss : 開始裁剪的時間(時分秒)
-t : 要裁剪的時長(單位:s)
out.ts : 輸出文件
【MAC】播放:
ffplay out.ts`
- 音視頻合并
【MAC】ffmpeg -f concat -i inputs.txt out.flv
-f concat : 要對后面的文件進行拼接
-i : 要拼接的文件,inputs.txt中是一個列表,是要合并的視頻名字
inputs.txt內(nèi)容為:file filename
格式
out.flv :輸出文件的名字,這里的flv只是事例
【MAC】播放:ffplay out.flv
六、圖片/視頻互轉(zhuǎn)命令
- 視頻轉(zhuǎn)圖片:
【MAC】ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
-i : 要處理的文件
-r : 要轉(zhuǎn)換圖片的幀率,1表示每秒轉(zhuǎn)一張圖片
-f : 轉(zhuǎn)換后的格式,image的第二版
image-%3d.jpeg :輸出文件,%3d表示是以image開頭,后面是三個數(shù)字
【MAC】查看第一張圖片:open image-001.jpeg
- 圖片轉(zhuǎn)視頻:
【MAC】ffmpeg -i image-%3d.jpeg out.mp4
【MAC】播放:ffplay out.mp4
,這時候會一下子放完,是因為
Ffmpeg 會從多媒體文件中讀取幀率,一般情況下多媒體文件都是有幀率的。但對于流是不知道其幀率的,所以對于流相關(guān)的要主動給他一個幀率
七、直播
參考的直播鏈接:https://blog.csdn.net/u014162133/article/details/81188410
1,RTMP協(xié)議直播源
香港衛(wèi)視:rtmp://live.hkstv.hk.lxdns.com/live/hks
2,RTSP協(xié)議直播源
珠海過澳門大廳攝像頭監(jiān)控:rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp
大熊兔(點播):rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
3,HTTP協(xié)議直播源 香港衛(wèi)視:http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8
CCTV1高清:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
CCTV3高清:http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8
CCTV5高清:http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8
CCTV5+高清:http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8
CCTV6高清:http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8
蘋果提供的測試源(點播):http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear2/prog_index.m3u8
- 直播推流
【MAC】ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
-re : 表示減慢幀率速度
-i :要推的流
-c : 音視頻編解碼,具體的音頻編碼是-acodec,視頻編碼是-vcodec,copy表示音視頻的參數(shù)不變
-f : 推出的文件格式,這里是flv
rtmp : 表示推送到這個地址上面去
- 直播拉流
【MAC】ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
-i : 表示從哪拉流
-c : 拉到的流是否重新編碼,copy 表示不重新編碼
dump.flv : 保存的文件