FFmpeg常用命令

前言#

FFmpeg一般使用官方打包好的命令行程序, 也可以使用源碼集成到自己的程序中,這種方式要求更高.這篇文章主要收錄命令行下的使用方法

使用方式#

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

ffmpeg -i [輸入文件名] [參數(shù)選項(xiàng)] -f [格式] [輸出文件]

參數(shù)選項(xiàng):#

先總結(jié)一下經(jīng)常使用的參數(shù)

-an: 去掉音頻 
-vn: 去掉視頻 
-acodec: 設(shè)定音頻的編碼器,未設(shè)定時(shí)則使用與輸入流相同的編解碼器。音頻解復(fù)用在一般后面加copy表示拷貝 
-vcodec: 設(shè)定視頻的編碼器,未設(shè)定時(shí)則使用與輸入流相同的編解碼器,視頻解復(fù)用一般后面加copy表示拷貝 
–f: 輸出格式(視頻轉(zhuǎn)碼)
-bf: B幀數(shù)目控制 
-g: 關(guān)鍵幀間隔控制(視頻跳轉(zhuǎn)需要關(guān)鍵幀)
-s: 設(shè)定畫(huà)面的寬和高,分辨率控制(352*278)
-i:  設(shè)定輸入流
-ss: 指定開(kāi)始時(shí)間(0:0:05)
-t: 指定持續(xù)時(shí)間(0:05)
-b: 設(shè)定視頻流量,默認(rèn)是200Kbit/s
-aspect: 設(shè)定畫(huà)面的比例
-ar: 設(shè)定音頻采樣率
-ac: 設(shè)定聲音的Channel數(shù)
-r: 提取圖像頻率(用于視頻截圖)
-c:v:  輸出視頻格式
-c:a:  輸出音頻格式
-y:  輸出時(shí)覆蓋輸出目錄已存在的同名文件

使用方式#

不精確裁剪視頻#

# -ss 指定從什么時(shí)間開(kāi)始
# -t 指定需要截取多長(zhǎng)時(shí)間
# -i 指定輸入文件
ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4

精確時(shí)間裁剪視頻#

  1. 全部幀都轉(zhuǎn)換為關(guān)鍵幀, 將所有的幀的編碼方式轉(zhuǎn)為幀內(nèi)編碼
#舊版本
ffmpeg -i output.mp4 -sameq -intra keyoutput.mp4

#新版本
ffmpeg -i output.mp4 -strict -2  -qscale 0 -intra keyoutput.mp4

  1. 再開(kāi)始裁剪視頻
ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4

合并視頻#

//截取從頭開(kāi)始的30s
ffmpeg -ss 00:00:00 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split.mp4
//截取從30s開(kāi)始的30s
ffmpeg -ss 00:00:30 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split1.mp4
//進(jìn)行視頻的合并
ffmpeg -f concat -i list.txt -c copy concat.mp4

#list.txt
file ./split.mp4
file ./split1.mp4

往流媒體服務(wù)器推流#

##有打印
ffmpeg -re -i 1.mp4 -vcodec libx264 -acodec aac -f flv rtmp://ip:port/rtmplive/home

ffmpeg -re -stream_loop -1 -loglevel quiet -i 1.flv -vcodec copy -f flv rtmp://ip:port/live/test

修改視頻幀率#

// 強(qiáng)制把輸出視頻文件幀率改為 24 fps:-r 幀率
ffmpeg -i input.avi -r 24 output.avi   

壓縮視頻#

// 改碼率. 這里的700k可以依照個(gè)人要求改. 越大,最后視頻就越清晰.
ffmpeg -i ./map.mp4 -b:v 700k map1.mp4 

MP4 轉(zhuǎn) m3u8 hls ts片段#

MP4 轉(zhuǎn) ts#

ffmpeg -i ./水車.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb ./水車.ts

ts 轉(zhuǎn) m3u8#

// -segment_time 設(shè)定 hls 片段時(shí)長(zhǎng),這里設(shè)定的3s
// sh-%d.ts 是輸出的ts片段的名稱

ffmpeg -i ./水車.ts -c copy -map 0 -f segment -segment_list ./水車.m3u8 -segment_time 3 sh-%d.ts

MP4 直接轉(zhuǎn) m3u8#

mp4 直接轉(zhuǎn) m3u8 比較慢,沒(méi)有把 mp4 先轉(zhuǎn)成 ts,然后再切割 ts效率高

// -hls_time 設(shè)定 hls 片段時(shí)長(zhǎng),這里設(shè)定的 6s
ffmpeg -i ./水車.mp4 -c:v libx264 -hls_time 6 -hls_list_size 0 -c:a aac -strict -2 -f hls ./index.m3u8

參考教程#

  1. ffmpeg工具參數(shù)中文詳細(xì)解釋
  2. 雷霄驊 - [總結(jié)]FFMPEG視音頻編解碼零基礎(chǔ)學(xué)習(xí)方法
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容