一、基本信息查詢命令:
-
ffmpeg -version
顯示版本信息
-
ffmpeg devices
支持的設備
-
ffmpeg -demuxers
顯示可用的demuxers(解封裝)
-
ffmpeg -muxers
顯示可用的muxers(封裝)
-
ffmpeg -codecs
顯示所有的編解碼器
-
ffmpeg -decoders
顯示可用的解碼器
-
ffmpeg -encoders
顯示可用的編碼器
-
ffmpeg -bsfs
顯示比特流filter
-
ffmpeg -formats
顯示可用的格式
![
-
ffmpeg protocols
顯示可用的協議
-
ffmpeg -filters
顯示可用的過濾器
-
ffmpeg -pix_fmts
顯示可用的像素格式
-
ffmpeg -sample_fmts
顯示可用的採樣格式
-
ffmpeg -layout
顯示可用的chanel名稱(聲道)
-
ffmpeg -color
顯示可識別的顏色名稱
二、錄製命令:
- 錄製桌面視頻
【MAC】ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f:使用什麼庫採集數據,ios中使用的是
avfoundation
-i:從哪採集數據(是一個文件索引)
-r:幀率
out.yuv:表示原始格式數據,採集到的是什麼樣,存儲的就是什麼樣
- 錄製聲音
【MAC】ffmpeg -f avfoundation -i :0 out.wav
-f : 使用什麼庫採集數據,ios中使用的是
avfoundation
-i : 採集誰的數據::xx 表示音頻設備,xx : 表示視頻設備
查看windows上的採集庫:
下載ffempeg的源碼http://ffmpeg.org/download.html,通過cygwin進入到源碼的根目錄下,執行命令
./configure --list-indevs
就可以看到所有支持的庫了;
三、分解與複用命令
1.分解與複用:文件格式的轉換(Mp4-->mov/flv等)
【MAC】
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
-i : 輸入文件(要對哪個文件做處理)
-vcodec copy : 視頻編碼處理方式
-acodec copy :音頻編碼處理方式
out.flv : 輸出格式
2.處理原始數據:
原始數據:就是ffmpeg解碼後的數據,音頻就是pcm數據,對於視頻就是yuv數據,
2.1. 從視頻中提取yuv數據
【MAC】ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
-i:輸入數據,要對哪個文件做處理
-an:a指音頻,n指no,即輸出結果中不包括音頻
-c:v:指對視頻進行編碼,用rawvideo方式(原始視頻)
-pix_fmt : 既然是用原始數據編碼,所以就要有像素格式,即yuv420p(yuv 4:2:0)
out.yuv : 輸出文件
在播放yuv格式的視頻的時候,要設置一個分辨率,否則會報錯,Picture size 0x0 is invalid out.yuv,這裏的分辨率可以在解碼的過程中獲取到
【MAC】播放視頻 : ffplay -s 638x358 out.yuv
2.2.從音頻中提取pcm數據
【MAC】ffmpeg -i out.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm
-i :輸入數據,也就是要對哪個文件做處理
-vn : video no,即輸出結果中不包括視頻
-ar : audio read,即音頻的採樣率,這裏的44100表示44.1k
-ac : audio chennel,即聲道,這裏的ac2表示雙聲道
-f : format,即抽取出來的音頻的存儲格式是什麼,s16le
中s表示有符號的,有正有負,16表示每一個數值都是用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
爲濾鏡參數,表示寬高爲原始寬高-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內容爲:file filename
格式
out.flv :輸出文件的名字,這裏的flv只是事例
【MAC】播放:ffplay out.flv
六、圖片/視頻互轉命令
- 視頻轉圖片:
【MAC】ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
-i : 要處理的文件
-r : 要轉換圖片的幀率,1表示每秒轉一張圖片
-f : 轉換後的格式,image的第二版
image-%3d.jpeg :輸出文件,%3d表示是以image開頭,後面是三個數字
【MAC】查看第一張圖片:open image-001.jpeg
- 圖片轉視頻:
【MAC】ffmpeg -i image-%3d.jpeg out.mp4
【MAC】播放:ffplay out.mp4
,這時候會一下子放完,是因爲
Ffmpeg 會從多媒體文件中讀取幀率,一般情況下多媒體文件都是有幀率的。但對於流是不知道其幀率的,所以對於流相關的要主動給他一個幀率
七、直播
參考的直播鏈接:https://blog.csdn.net/u014162133/article/details/81188410
1,RTMP協議直播源
香港衛視:rtmp://live.hkstv.hk.lxdns.com/live/hks
2,RTSP協議直播源
珠海過澳門大廳攝像頭監控:rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp
大熊兔(點播):rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
3,HTTP協議直播源 香港衛視: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表示音視頻的參數不變
-f : 推出的文件格式,這裏是flv
rtmp : 表示推送到這個地址上面去
- 直播拉流
【MAC】ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
-i : 表示從哪拉流
-c : 拉到的流是否重新編碼,copy 表示不重新編碼
dump.flv : 保存的文件