探索一下ffmpeg常用轉(zhuǎn)換視頻命令

前提:在瀏覽視頻網(wǎng)站的時(shí)候构拳,突然想看看他們是怎么傳輸視頻流的,想扣下來(lái)慢慢欣賞

首先通過(guò)查看請(qǐng)求霞赫,發(fā)現(xiàn)每家視頻網(wǎng)站用的方式都不一樣腮介,例如:

tencent追劇:
非會(huì)員瀏覽視頻試看5分鐘:請(qǐng)求的會(huì)員的.m3u8文件只包含5分鐘內(nèi)容的視頻內(nèi)容
免費(fèi)視頻:請(qǐng)求的.m3u8文件里面包含了整個(gè)視頻信息
國(guó)外X:
請(qǐng)求了三份m3u8文件绩脆,一份是完整的包含音頻視頻的萤厅,一份是有音頻無(wú)視頻的,一份是有視頻無(wú)音頻的靴迫。為什么要這么做呢惕味?

雖然.m3u8的鏈接可以直接拿來(lái)播放,但是我想下載下來(lái)玉锌,怎么下載視頻呢名挥?
使用ffmpeg就很方便,以下歸納常用命令

.m3u8轉(zhuǎn)視頻
簡(jiǎn)單一些的命令: ffmpeg -i url.m3u8 -c copy target.mp4

多些配置項(xiàng):ffmpeg -i url.m3u8 -bsf:a aac_adtstoasc -c copy out2.mp4 -http_persistent 0

-bsf:a: bsf 表示 binary stream filter主守,即二進(jìn)制流過(guò)濾器禀倔,a 表示 audio榄融,指定音頻比特流過(guò)濾器 
aac_adtstoasc: 這是一個(gè)特定的比特流過(guò)濾器
-http_persistent 0: 禁用 HTTP 持久連接。默認(rèn)情況下救湖,ffmpeg 可能會(huì)嘗試使用持久連接來(lái)減少重新建立連接的開銷愧杯。但在某些情況下,特別是當(dāng)服務(wù)器不支持或限制持久連接時(shí)鞋既,禁用它可能是有益的
合并音頻和視頻
簡(jiǎn)單一些: ffmpeg -i video_without_audio.mp4 -i audio_only.aac -c copy target.mp4

多些配置:ffmpeg -i video_without_audio.mp4 -i audio_only.aac -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 output_video_with_audio.mp4

-strict experimental在某些版本的ffmpeg中可能是必要的力九,用于啟用AAC編碼。
-map選項(xiàng)用來(lái)指定要包含到輸出文件中的流
0:v:0:選擇第一個(gè)輸入文件(由 -i video_without_audio.mp4 指定)中的第一個(gè)視頻流(索引為0)邑闺。這里的 0 表示輸入文件的索引(從0開始)跌前,v 表示視頻流,0 表示視頻流的索引陡舅。
1:a:0:選擇第二個(gè)輸入文件(由 -i audio_only.aac 指定)中的第一個(gè)音頻流(索引為0)抵乓。這里的 1 表示第二個(gè)輸入文件的索引,a 表示音頻流靶衍,0 表示音頻流的索引灾炭。
通過(guò)這兩個(gè) -map 選項(xiàng),你確保了在輸出文件 output_video_with_audio.mp4 中只包含了第一個(gè)輸入文件的視頻流和第二個(gè)輸入文件的音頻流摊灭。
添加水印
ffmpeg -i out2.mp4 -i out.jpg -filter_complex "overlay=main_w-overlay_w-10:main_h-overlay_h-10" output_with_watermark.mp4

-filter_complex: 用于指定復(fù)雜的濾鏡鏈咆贬。verlay=main_w-overlay_w-10:main_h-overlay_h-10 是 overlay 濾鏡的參數(shù),用于指定水印的位置帚呼。這里,水印被放置在距離視頻右邊和底部各 10 像素的位置

ffmpeg -i out2.mp4 -i out.jpg -filter_complex "overlay=10:10" output_with_watermark.mp4

overlay=10:10 會(huì)將水印放置在視頻的左上角

水印進(jìn)階:設(shè)置水印圖片大小先

ffmpeg -i out2.mp4 -i out.jpg -filter_complex "[1:v]scale=64:48[watermark];[0:v][watermark]overlay=30:10[out]" -map "[out]" output.mp4

[1:v]選擇第二個(gè)文件流皱蹦,也就是out.jpg煤杀,
scale=64:48[watermark],scale濾鏡將上述的圖片設(shè)置比例沪哺,然后取名為watermark沈自,方便后面用。
[0:v]選擇第一個(gè)視頻流辜妓,
[watermark]overlay=30:10選擇上述設(shè)置尺寸的watermark枯途,使用overlay 濾鏡放在主視頻的左邊30,上邊10的位置
[out] 給輸出流取個(gè)名字為out籍滴。 -map "[out]" 是在有多個(gè)輸出進(jìn)行選擇時(shí)有用酪夷,上面使用比較多余

新版都是使用filter_complex濾鏡, 舊版是movie濾鏡

ffmpeg -i input.mp4 -vf "movie=logo.png,scale=64:48[watermask];[in][watermask] overlay=30:10 [out]" output.mp4
刪除水印
ffmpeg -i output.mp4 -vf "delogo=x=30:y=10:w=64:h=48" output_without_logo.mp4 

-vf 用于指定一個(gè)或多個(gè)視頻濾鏡,并通過(guò)一個(gè)冒號(hào)分隔的列表來(lái)組織它們孽惰;delogo濾鏡晚岭,xy是水印位置, wh是水印尺寸

想知道視頻水印在哪里勋功,可以先截取一幀坦报,再到圖片上量一量库说?

截取視頻中的一幀圖
ffmpeg -i url.mp4 -ss 00:00:50 -frames:v 1 out.jpg

-frames:v 是 FFmpeg 命令中用于設(shè)置輸出視頻幀數(shù)的參數(shù)的簡(jiǎn)寫。它與 -vframes 功能相同片择,都是設(shè)置輸出的視頻幀數(shù)
合并多段視頻
ffmpeg -f concat -i inputs.txt -c copy out.mp4  // txt文件里就是多段視頻潜的,格式為:file '1.mp4'
我們知道.m3u8文件里面是多段.ts或者.m4s文件url,那怎么將一段.ts切割成含有多段.ts.m3u8文件呢
ffmpeg -i input.ts -codec copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts

-map 0:選擇所有輸入流字管,
-f segment:指定輸出格式為segment夏块,這將生成多個(gè)片段文件。
-segment_list playlist.m3u8: 指定文件名纤掸, 
-segment_time 10:設(shè)置每個(gè)片段的時(shí)長(zhǎng)為10秒
output%03d.ts:輸出片段文件的模板脐供。%03d是一個(gè)占位符,用于自動(dòng)插入從000開始的遞增數(shù)字
也可以直接將mp4 轉(zhuǎn)為m3u8
ffmpeg -i input.mp4 -codec:copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts
當(dāng)然也可以先將mp4 轉(zhuǎn)為ts 文件
ffmpeg -i input.mp4 -c copy -bsf:v h264_mp4toannexb output.ts
匯總-codec

看了以上的這么多命令借跪,重復(fù)率最高的-c copy, -c:a copy 等等相似的命令有必要總結(jié)一下

-acodec copy = -c:a copy 表示復(fù)制音頻流而不重新編碼政己。還可以這樣寫-acodec:copy  
-c:a aac表示將音頻流編碼為AAC格式
-c:s copy 來(lái)復(fù)制字幕流
-vcodec copy = -c:v copy表示復(fù)制視頻流而不重新編碼  -vcodec:copy
-codec copy  = -c copy 表示復(fù)制所有信息不重新編碼 -codec:copy
抽取音頻
ffmpeg -i url.m3u8 -vn -acodec copy audio_only.aac
ffmpeg -i url.mp4 -vn -c:a copy audio_only.aac
-vn選項(xiàng)表示“無(wú)視頻”,
抽取視頻流
ffmpeg -i url.mp4 -an -c:v copy video_only.mp4 // 或者是video_only.h264格式
-an選項(xiàng)表示“無(wú)音頻”

通過(guò)以上的命令掏愁,可以很明顯發(fā)現(xiàn)一些簡(jiǎn)單命令的通用性歇由,只要ffmpeg -i選中資源,直接抵達(dá)目標(biāo)就可以了
例如各種資源格式互轉(zhuǎn):直接-c針對(duì)所有流:ffmpeg -i url.mp4 -c copy video.flv
當(dāng)然你想針對(duì)音頻視頻單獨(dú)處理成什么其他格式果港,也是可以的:ffmpeg -i url.mp4 -c:v copy -c:a copy video.flv

以上就是實(shí)踐ffmpeg的一些常用命令沦泌,目前到網(wǎng)上轉(zhuǎn)個(gè)視頻用到這些命令也就足夠了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市辛掠,隨后出現(xiàn)的幾起案子谢谦,更是在濱河造成了極大的恐慌,老刑警劉巖萝衩,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件回挽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡猩谊,警方通過(guò)查閱死者的電腦和手機(jī)千劈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)牌捷,“玉大人墙牌,你說(shuō)我怎么就攤上這事“瞪” “怎么了喜滨?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)淋袖。 經(jīng)常有香客問(wèn)我鸿市,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任焰情,我火速辦了婚禮陌凳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘内舟。我一直安慰自己合敦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布验游。 她就那樣靜靜地躺著充岛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耕蝉。 梳的紋絲不亂的頭發(fā)上崔梗,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音垒在,去河邊找鬼蒜魄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛场躯,可吹牛的內(nèi)容都是我干的谈为。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼踢关,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼伞鲫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起签舞,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤秕脓,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后瘪菌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撒会,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年师妙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屹培。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡默穴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出褪秀,到底是詐尸還是另有隱情蓄诽,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布媒吗,位于F島的核電站仑氛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锯岖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一介袜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧出吹,春花似錦遇伞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至秋麸,卻和暖如春渐排,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灸蟆。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工驯耻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人次乓。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓吓歇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親票腰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子城看,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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

  • FFmpeg常用命令分類: 基本信息查詢 錄制 分解/復(fù)用 裁剪與合并 圖片/視頻互轉(zhuǎn) 直播 處理原始數(shù)據(jù) 濾鏡 ...
    沈楓_ShenF閱讀 1,122評(píng)論 0 5
  • ffmpeg介紹 ffmpeg 是一個(gè)非常流行且好用的圖像、音視頻處理工具杏慰〔饽可以實(shí)現(xiàn)視頻分割,截圖缘滥,轉(zhuǎn)碼轰胁,合并,水...
    西5d閱讀 6,704評(píng)論 0 2
  • 這里通過(guò)軟件MediaInfo來(lái)查看視頻信息朝扼。其中黃色為幀數(shù)赃阀,紅色為比特率 基本用法: 1除來(lái)上面我們通過(guò)軟件來(lái)查...
    夏廣成閱讀 7,956評(píng)論 1 7
  • 目錄 help命令使用 流選擇選項(xiàng) 視頻封裝解封裝 3.1 視頻格式轉(zhuǎn)換 3.2 分離/合并視頻音頻流 3.3 截...
    smallest_one閱讀 14,320評(píng)論 3 16
  • 前言 如此強(qiáng)大的FFmpeg,能夠?qū)崿F(xiàn)視頻采集擎颖、視頻格式轉(zhuǎn)化榛斯、視頻截圖、視頻添加水印搂捧、視頻切片驮俗、視頻錄制、視頻推流...
    RichyLeo閱讀 17,369評(píng)論 1 22