FFMPEG 視頻分割和合并

ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4
  • -ss 指定從什么時(shí)間開(kāi)始
  • -t 指定需要截取多長(zhǎng)時(shí)間
  • -i 指定輸入文件
    這個(gè)命令就是從00秒開(kāi)始裁剪到00+30=30秒結(jié)束橘忱,總共30秒的視頻馍佑。這個(gè)命令執(zhí)行很快玩裙,因?yàn)橹皇窃紨?shù)據(jù)的拷貝枪向,中間沒(méi)有什么編碼和解碼的過(guò)程忍宋。執(zhí)行這個(gè)命令后你能得到output.mp4這個(gè)輸出文件。你可以用視頻播放軟件播放這個(gè)視頻看看溜徙。
    可能有些視頻裁剪后的效果湃缎,如期望一致,00秒開(kāi)始蠢壹,30秒結(jié)束嗓违,總共30秒的視頻,但是有些視頻裁剪后你會(huì)發(fā)現(xiàn)可能開(kāi)始和結(jié)束都不是很準(zhǔn)確图贸,有可能是從00秒開(kāi)始蹂季,33秒結(jié)束。這是為什么呢疏日?
    因?yàn)檫@些視頻里30秒處地方剛好不是關(guān)鍵幀偿洁,而ffmpeg會(huì)在你輸入的時(shí)間點(diǎn)附近圓整到最接近的關(guān)鍵幀處,然后做接下來(lái)的事情沟优。如果你不懂什么是關(guān)鍵幀涕滋,沒(méi)關(guān)系,這也不影響你使用這個(gè)命令挠阁。

如果你的項(xiàng)目要求能夠接受幾秒的誤差宾肺,那么這個(gè)命令完全就可以滿(mǎn)足你的需要,接下來(lái)的內(nèi)容你也沒(méi)有必要往下看了鹃唯。
如果你的項(xiàng)目里要求很?chē)?yán)格爱榕,一定要到確定的時(shí)間。那么就要用另外一種方式坡慌。
上面的造成那樣的原因是所選的時(shí)間不是關(guān)鍵幀黔酥,那如果我們將輸入的視頻先轉(zhuǎn)換成所有的幀都為關(guān)鍵幀的視頻,其實(shí)就是將所有的幀的編碼方式轉(zhuǎn)為幀內(nèi)編碼(不理解幀內(nèi)編碼也沒(méi)關(guān)系洪橘,你就當(dāng)沒(méi)看見(jiàn)它跪者,接著往下看),這個(gè)問(wèn)題就有解了熄求。ffmpeg也可以幫我們完成這個(gè)事情渣玲。
ffmpeg -i INPUT -sameq -intra OUTPUT
-i 輸入,后面是空格弟晚,緊跟著就是輸入視頻文件忘衍;
INPUT 輸入文件逾苫;
-sameq 表示保持同樣的視頻質(zhì)量;
-intra枚钓, 幀內(nèi)編碼铅搓;
OUTPUT 輸出文件名。

如:
ffmpeg -i ./MyVideo.mpg -sameq -intra ./temp.mpg
這個(gè)命令的結(jié)果文件就是./temp.mpg.這個(gè)文件的視頻和./MyVideo.mpg是一樣的搀捷,但是你會(huì)發(fā)現(xiàn)這個(gè)文件會(huì)比./MyVideo.mpg大很多倍星掰,原因就是轉(zhuǎn)換前一般采用的幀間編碼,轉(zhuǎn)換后變成了幀內(nèi)編碼嫩舟。這里我們說(shuō)是一般氢烘,原因是有些視頻文件本身就采用了幀內(nèi)編碼。
經(jīng)過(guò)這樣的處理后家厌,我們就可以精確的剪切視頻了播玖。

注意
上面的命令在新版本中已經(jīng)廢棄,可以參考下面的命令

ffmpeg -i output.mp4 -strict -2  -qscale 0 -intra keyoutput.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文件中像街,對(duì)要合并的視頻片段進(jìn)行了描述黎棠。
內(nèi)容如下

file ./split.mp4
file ./split1.mp4

常用命令如下

// 去掉視頻中的音頻
ffmpeg -i input.mp4 -vcodec copy -an output.mp4
// -an: 去掉音頻晋渺;-vcodec:視頻選項(xiàng)镰绎,一般后面加copy表示拷貝

// 提取視頻中的音頻
ffmpeg -i input.mp4 -acodec copy -vn output.mp3
// -vn: 去掉視頻;-acodec: 音頻選項(xiàng)木西, 一般后面加copy表示拷貝

// 音視頻合成
ffmpeg -y –i input.mp4 –i input.mp3 –vcodec copy –acodec copy output.mp4
// -y 覆蓋輸出文件

//剪切視頻
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.mp4 -vcodec copy -acodec copy output.mp4
// -ss 開(kāi)始時(shí)間; -t 持續(xù)時(shí)間

// 視頻截圖
ffmpeg –i test.mp4 –f image2 -t 0.001 -s 320x240 image-%3d.jpg
// -s 設(shè)置分辨率; -f 強(qiáng)迫采用格式fmt;

// 視頻分解為圖片
ffmpeg –i test.mp4 –r 1 –f image2 image-%3d.jpg
// -r 指定截屏頻率

// 將圖片合成視頻
ffmpeg -f image2 -i image%d.jpg output.mp4

//視頻拼接
ffmpeg -f concat -i filelist.txt -c copy output.mp4

// 將視頻轉(zhuǎn)為gif
ffmpeg -i input.mp4 -ss 0:0:30 -t 10 -s 320x240 -pix_fmt rgb24 output.gif
// -pix_fmt 指定編碼

// 將視頻前30幀轉(zhuǎn)為gif
ffmpeg -i input.mp4 -vframes 30 -f gif output.gif

// 旋轉(zhuǎn)視頻
ffmpeg -i input.mp4 -vf rotate=PI/2 output.mp4

// 縮放視頻
ffmpeg -i input.mp4 -vf scale=iw/2:-1 output.mp4
// iw 是輸入的寬度畴栖, iw/2就是一半;-1 為保持寬高比

//視頻變速
ffmpeg -i input.mp4 -filter:v setpts=0.5*PTS output.mp4

//音頻變速
ffmpeg -i input.mp3 -filter:a atempo=2.0 output.mp3

//音視頻同時(shí)變速,但是音視頻為互倒關(guān)系
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4


// 視頻添加水印
ffmpeg -i input.mp4 -i logo.jpg -filter_complex [0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] -map [out] -map 0:a -codec:a copy output.mp4
// main_w-overlay_w-10 視頻的寬度-水印的寬度-水印邊距八千;
// 截取視頻局部
ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4
// 截取部分視頻吗讶,從[80,60]的位置開(kāi)始,截取寬200恋捆,高100的視頻
ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
// 截取右下角的四分之一
ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4
// 截去底部40像素高度
ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4

參數(shù)說(shuō)明:

-vcodec xvid 使用xvid壓縮
-s 320x240 指定分辨率
-r fps 設(shè)置幀頻 缺省25
-b <比特率> 指定壓縮比特

-acodec aac 設(shè)定聲音編碼
-ac <數(shù)值> 設(shè)定聲道數(shù)照皆,1就是單聲道,2就是立體聲
-ar <采樣率> 設(shè)定聲音采樣率沸停,PSP只認(rèn)24000
-ab <比特率> 設(shè)定聲音比特率
-vol <百分比> 設(shè)定音量

-y(覆蓋輸出文件

-t duration 設(shè)置紀(jì)錄時(shí)間 hh:mm:ss[.xxx]格式的記錄時(shí)間也支持
-ss position 搜索到指定的時(shí)間 [-]hh:mm:ss[.xxx]的格式也支持
-title string 設(shè)置標(biāo)題
-author string 設(shè)置作者
-copyright string 設(shè)置版權(quán)
-hq 激活高質(zhì)量設(shè)置

-aspect aspect 設(shè)置橫縱比 4:3 16:9 或 1.3333 1.7777
-croptop size 設(shè)置頂部切除帶大小 像素單位
-cropbottom size -cropleft size -cropright size
-padtop size 設(shè)置頂部補(bǔ)齊的大小 像素單位
-padbottom size -padleft size -padright size -padcolor color 設(shè)置補(bǔ)齊條顏色(hex,6個(gè)16進(jìn)制的數(shù)膜毁,紅:綠:蘭排列,比如 000000代表黑色)
-bt tolerance 設(shè)置視頻碼率容忍度kbit/s
-maxrate bitrate設(shè)置最大視頻碼率容忍度
-minrate bitreate 設(shè)置最小視頻碼率容忍度
-bufsize size 設(shè)置碼率控制緩沖區(qū)大小
-vcodec codec 強(qiáng)制使用codec編解碼方式愤钾。 如果用copy表示原始編解碼數(shù)據(jù)必須被拷貝瘟滨。
-sameq 使用同樣視頻質(zhì)量作為源(VBR)
-pass n 選擇處理遍數(shù)(1或者2)。兩遍編碼非常有用能颁。第一遍生成統(tǒng)計(jì)信息杂瘸,第二遍生成精確的請(qǐng)求的碼率
-passlogfile file 選擇兩遍的紀(jì)錄文件名為file

-map file:stream 設(shè)置輸入流映射
-debug 打印特定調(diào)試信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市伙菊,隨后出現(xiàn)的幾起案子败玉,更是在濱河造成了極大的恐慌敌土,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件运翼,死亡現(xiàn)場(chǎng)離奇詭異纯赎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)南蹂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)犬金,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人六剥,你說(shuō)我怎么就攤上這事晚顷。” “怎么了疗疟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵该默,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我策彤,道長(zhǎng)栓袖,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任店诗,我火速辦了婚禮裹刮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘庞瘸。我一直安慰自己捧弃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布擦囊。 她就那樣靜靜地躺著违霞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞬场。 梳的紋絲不亂的頭發(fā)上买鸽,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音贯被,去河邊找鬼眼五。 笑死,一個(gè)胖子當(dāng)著我的面吹牛刃榨,可吹牛的內(nèi)容都是我干的弹砚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼枢希,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼桌吃!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起苞轿,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤茅诱,失蹤者是張志新(化名)和其女友劉穎逗物,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瑟俭,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翎卓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摆寄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片失暴。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖微饥,靈堂內(nèi)的尸體忽然破棺而出逗扒,到底是詐尸還是另有隱情,我是刑警寧澤欠橘,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布矩肩,位于F島的核電站,受9級(jí)特大地震影響肃续,放射性物質(zhì)發(fā)生泄漏黍檩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一始锚、第九天 我趴在偏房一處隱蔽的房頂上張望刽酱。 院中可真熱鬧,春花似錦疼蛾、人聲如沸肛跌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至转唉,卻和暖如春皮钠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赠法。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工麦轰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砖织。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓款侵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親侧纯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子新锈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344