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

常用命令.png

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

一、基本信息查詢命令:

  • ffmpeg -version顯示版本信息

    版本信息.png

  • ffmpeg devices支持的設(shè)備

    ![可用的demuxers.png](https://upload-images.jianshu.io/upload_images/1340588-586df158a79aa8d4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  • ffmpeg -demuxers顯示可用的demuxers(解封裝)
    ![所有的編解碼器.png](https://upload-images.jianshu.io/upload_images/1340588-338010c5e0070aa2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • 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就可以看到所有支持的庫了;

下載ffempeg的源碼.png
查看win上的采集庫.png

三、分解與復用命令

1.分解與復用:文件格式的轉(zhuǎn)換(Mp4-->mov/flv等)

復用解復用流程.png

【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.處理流程
濾鏡處理流程.png
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 : 保存的文件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 寫在前面: 今天往移動硬盤上拷電影的時候忽然遇見文件過大無法拷貝的問題。因為一個移動硬盤如果分區(qū)為NTFS格式,那...
    vincentgemini閱讀 14,398評論 0 9
  • 【 ffmpeg 官網(wǎng) 】 補充些有用的參數(shù):-write_empty_segments 1 視頻斷的-segm...
    _49_閱讀 3,028評論 0 0
  • 分離視頻音頻流ffmpeg -i input_file -vcodec copy -an output_file_...
    nenhall閱讀 6,392評論 2 6
  • 昨天一順身體不舒服,整宿沒有好好休息。早晨我早早起床,熬好小米粥,便叫她起床,詢問她今天感覺怎么樣,她說還...
    一帆風順平平安安閱讀 209評論 0 0
  • 月光如水 我是曝曬了一天的魚 等最后一縷晚霞燃盡 終于被夜幕捧入水中 得以貪婪的呼吸 夜空中那皎潔的倩影 是我悄悄...
    失憶的詩意的失閱讀 267評論 5 11