學習筆記|(三)FFMPEG常用命令

參考資料:https://ffmpeg.org/ffmpeg-all.html#Synopsis

一、基本信息查詢命令:

  • 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 : 保存的文件

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