ffmpeg介紹及其常用指令說明

      網友投稿 1310 2022-05-30

      FFmpeg是一套視頻處理和存儲等的技術方案,關鍵詞——“開源”、“免費”,“最主流的視頻處理技術方案”,“各大廠商基本上都用”,“支持大部分系統(tǒng)”,“支持大部分的視頻格式(插件方式)”。下面將分幾部分介紹各方面都很強大的ffmpeg。

      1.ffmpeg系列框架

      1)官網:https://ffmpeg.org

      2)定義(來自官網的權威解釋)

      3)工具

      主要包含ffmpeg命令行工具(支持多種操作系統(tǒng))

      主要下載鏈接:https://ffmpeg.org/download.html

      Windows鏈接:https://ffmpeg.zeranoe.com/builds/

      macOS鏈接:https://evermeet.cx/ffmpeg/

      ffmpeg介紹及其常用指令說明

      Linux鏈接:wget http://ffmpeg.org/releases/ffmpeg***.tar.bz2(其他版本另說)

      播放器:ffplay,這款也是相當神奇,后面將和另外一款強大的播放器vlc統(tǒng)一介紹。

      視頻分析:ffprobe,這款之前用得不多,但是一開始用,感覺好用到不行,也是強烈推薦。

      4)各種庫,libavutil?、libavcodec?等等。官網都有詳細說明...

      5)源碼,那更不用說了吧...

      2.ffmpeg命令行基本概念

      官網指令詳述鏈接:https://ffmpeg.org/ffmpeg.html

      1)每個轉碼都可以描述為如下的過程:

      視頻源經過分流器,解碼器,編碼器,混流器,最終輸出為處理后的視頻文件。(下圖為官網的流程圖介紹)

      當然不是每個視頻處理都嚴格按照上述流程,有些可以略過。這里就要知道一些概念:

      視頻中的流信息:一般包括音頻流、視頻流,它們各有自己的編解碼器,但是分流和混流器,在視頻中有多個流時,就需要用到。

      流復制處理:假設音頻流或視頻流直接采用copy的方式,則不需要進行編解碼過程。常見的比如,acodec copy等。

      2)指令行語法

      ffmpeg [gl-opt] {[input-file-opt] -i input-url} ... {[output-file-opt] output-url} ...

      3)指令行主要參數(shù)

      下圖是官網的,在ffmpeg的命令行工具中,輸入-help 也能找到相似的說明。

      4)ffmpeg其他參數(shù)和指令說明

      萬能ffmpeg -help,或者搜索引擎

      3.ffmpeg命令行實操(針對Linux環(huán)境)

      1)分析視頻

      這是我比較常用的方法了,簡單粗暴,可以看有沒有數(shù)據,還能解析出視頻中的一些信息。

      ffmpeg -i '文件or url',比如 ffmpeg -i a.mp4

      針對某個文件,輸出入下信息,從下圖中可以得到:

      這個視頻是m3u8文件,解析的第一個ts文件

      視頻ts的url并不是它的真實存儲位置,中間經過了跳轉,是不是抓包的時候很懵逼,明白為啥了吧

      duration為N/A,猜測直播,點播一般能將視頻時長弄出來。不過現(xiàn)在沒有m3u8的點播,不然也可以對比下。

      bitrate,這個一般能夠將碼率解析出來,直播m3u8貌似也是無能為力

      接下來看Stream*,一般可以看到有多個,包括視頻和音頻,但是這里只有Video,說明整個文件只有視頻流,沒有音頻流。

      這個視頻流中,yuv是按4:2:0,分辨率是1920*1080。

      2)常用的指令

      涵蓋了各方面,而且功能無比強大,基本上只有你沒有想到的,沒有它做不到的。而且你猜cdn or 存儲廠商開放出來的視頻處理的指令接口,他們是不是通過ffmpeg指令集進行操作。如果是的話,這些指令你也知道,是不是覺得自己很牛,哈哈。這里就舉一些常用&有重大用途的

      視頻錄制

      ffmpeg –i rtsp://192.168.3.2:5256/src –vcodec copy out.mp4

      上述是將直播源的數(shù)據,輸出為out.mp4進行存儲,如果不退出,則一直存。

      視頻轉碼(內容巨多)

      視頻封裝

      流復制

      ffmpeg –i input.mp4 –vcodec copy -f ouput.mkv

      當封裝格式中可以音視頻流部分通用的,則可以進行流復制。如果這里都是h264的格式,但是-vcodec copy改為 -vcodec libx264,則不是流復制,而是強制轉碼了。

      非流復制

      ffmpeg –i input.rmvb –vcodec libx264 -f ouput.m3u8

      這里主要是因為兩者之間的視頻流兼容格式不相同。這里改封裝的時候,其實也轉碼了。

      這里只簡單寫了m3u8,但是由于m3u8是分片類型的格式,也有很多控制參數(shù),比如設置分片的時間間隔。

      視頻碼率轉換

      ffmpeg –i input.mp4 –vcodec libx264 -acodec libfaac –s 352*278 ?-b 2000k ?-r 30 output.mp4

      -vcodec?指定視頻編碼;-acodec?指定音頻編碼;-s?指定分辨率;-b?指定比特率;-r?指定幀率;封裝格式按最后的來算。

      還可以包含其他的參數(shù),類型非常多,比如設置VBR,CBR的編碼模式;設置B幀個數(shù);設置GOP等

      轉碼時,可以將多種因素都統(tǒng)一一起考慮和設置,也可以單獨設置某項

      視頻水印

      添加文字水印

      ffmpeg –i input.mp4 -vf "drawtext=fontfile=simhei.ttf: text=‘川大爺’:x=12:y=12:fontsize=12:fontcolor=white:shadowy=5" output.mp4

      -vf和-filter_complex其實都可以

      注意,上面的操作可能執(zhí)行不成功,報“No such filter: 'drawtext'”,因為編譯時filter沒有被編譯進去,重新編譯ffmpeg加上“--enable-libfreetype”后即可。

      這里fontfile:字體類型

      text:要添加的文字內容

      x和y是需要展示的位置

      fontsize:字體大小

      fontcolor:字體color

      圖片水印

      ffmpeg -i input.ts -i logo.png ?-filter_complex ?"overlay=20:20" output.mp4

      將logo.png圖片加到視頻中形成水印,水印位置為

      可以設置的類型很多,比如設置多個圖片水印

      可以設置水印出現(xiàn)的時間,比如只在前60s出現(xiàn),或者每10s出現(xiàn)一次

      可以設置圖片水印的移動等。

      以上可以通過文檔進一步去了解。

      去除水印

      ffmpeg -i input.mp4 -vf delogo=x=0:y=0:w=120:h=120 output.mp4

      輸入如上指令后,出現(xiàn)了如下錯誤,是因為ffmpeg在編譯過程中缺少了--delogo相關參數(shù),重新configure下就好了,

      ./configure --prefix=/usr/local/ffmpeg --enable-gpl ?--enable-nonfree ? ?--enable-filter=delogo --enable-debug --disable-optimizations --enable-shared ?--enable-pthreads,

      之后再make clean&& make install 就可以了

      視頻截取

      ffmpeg -i input.mp4 -ss 00:05:00 -t 00:22:00 output.mp4

      -ss:開始截取的視頻的位置(開始時間)

      -t:需要截取的時長

      裁剪視頻(只需要視頻的某塊區(qū)域)

      ffmpeg -i input.mp4 -strict -2 -vf crop=720:720:0:360 out.mp4

      crop=width:height:x:y,其中 width 和 height 表示裁剪后的尺寸(輸出大小),x:y 表示裁剪區(qū)域的左上角坐標

      -strict -2 代表aac音頻編碼

      視頻截圖

      ffmpeg -i input.mp4 -ss 0.01 -t 0.001 -y -s 352x240 ? output.png

      -ss 15.683 :將視頻指向 0.01 秒開始

      -y:強制覆蓋文件(防止因為重名出錯)

      -t 0.001 :持續(xù)時間

      -s:截取視頻的圖片的分辨率

      注意-ss和-t最好一起,否則會概率性出錯。同時需要根據視頻的時長,再去設置-ss的位置,如果-ss設置超過,也會導致截圖失敗。

      生成gif

      ffmpeg -i input.mp4 -ss 0:0:30 -t 10 -s 320x320 -pix_fmt rgb24 output.gif

      -ss:開始時間

      -t:時長

      -s:輸出分辨率

      -pix_fmt:指定編碼,這里用的是rgb24,想想看yuv呢,比如yuv420p

      視頻合并

      音視頻合并

      ffmpeg -i input.mp4 -i input.aac -vcodec copy -acodec copy output.mp4

      音頻流處理

      提取音頻

      ffmpeg -i input.mp4 -vn -y -acodec copy output.aac

      -y 覆蓋輸出文件

      -vn從視頻中提取音頻部分

      剔除音頻(靜音)

      ffmpeg -i input.mp4 -an output.mp4

      視頻流處理

      提取視頻

      ffmpeg -i input.mp4 -vcodec copy -an ?output.mp4

      -an從視頻中提取視頻部分

      字幕處理

      添加字幕

      ffmpeg -i input.mp4 -i input.srt -vcodec copy output3.mkv

      字幕格式可以有.srt , .ass 文件等

      視頻倍速

      音頻倍速減半

      ffmpeg -i input.mp3 -af atempo=0.5 output.mp3

      音頻兩倍速

      ffmpeg -i input.mp3 -af atempo=2 output.mp3

      視頻加速

      ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4

      視頻倍速

      ffmpeg -i input.mp4 -filter:v "setpts=2.0*PTS" output.mp4

      當然,上面的指令還可以根據實際情況進行組合輸出,ffmpeg很強大,想象力到應該大部分都能實現(xiàn)。

      視頻直播 視頻

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:分布式事務解決方案:Spring Cloud + Nacos + Seata整合
      下一篇:想要學好一門編程語言,到底該讀什么書?
      相關文章
      亚洲理论片在线中文字幕| 五月天婷亚洲天综合网精品偷| 亚洲一级免费毛片| 亚洲av日韩av激情亚洲| 无码国产亚洲日韩国精品视频一区二区三区| 亚洲中字慕日产2020| 亚洲国产情侣一区二区三区| 亚洲视频在线一区二区三区| 中文字幕亚洲第一在线| 亚洲精品福利网泷泽萝拉| 亚洲最大成人网色| 67pao强力打造67194在线午夜亚洲| 亚洲电影中文字幕| 亚洲高清日韩精品第一区| 亚洲最新中文字幕| 亚洲av成人综合网| 自拍偷区亚洲国内自拍| 亚洲人成欧美中文字幕| 亚洲日韩一区二区一无码| 亚洲AV无码精品国产成人| 色婷婷亚洲一区二区三区| 亚洲第一成人影院| 亚洲中文字幕在线第六区| 亚洲精品国产品国语在线| 亚洲va久久久久| 日本亚洲精品色婷婷在线影院| 亚洲啪啪免费视频| 国产精品亚洲午夜一区二区三区| 亚洲AV日韩综合一区尤物| 亚洲成a∨人片在无码2023| 婷婷国产偷v国产偷v亚洲| 亚洲男人av香蕉爽爽爽爽| 亚洲一区无码中文字幕 | 久久精品熟女亚洲av麻豆| 国产亚洲综合一区二区三区| 亚洲综合色成在线播放| 亚洲va无码专区国产乱码| 亚洲精品国产免费| 亚洲欧美日韩中文字幕在线一区| 天堂亚洲免费视频| 精品国产综合成人亚洲区|