-
小結(jié)
音視頻流的分離開(kāi)與合并
多媒體文件的裁剪與拼接
多媒體格式互轉(zhuǎn)
FFmpeg filter
-------------------------------
avfilter
視頻畫(huà)中畫(huà)
音頻混音/視頻混屏
視頻轉(zhuǎn)場(chǎng)
增加/刪除水印
音視頻倍速播放
學(xué)習(xí)音視頻的難點(diǎn)
基礎(chǔ)不牢地動(dòng)山搖
I/P/B幀,GOP
采樣率,采樣大小,通道數(shù)
以上這些是學(xué)習(xí)音視頻的必由之路
音視頻重要的庫(kù)
FFmpeg 音視頻必須的庫(kù)
WebRTC 網(wǎng)絡(luò)傳輸
音視頻的未來(lái)
音視頻開(kāi)發(fā)特別有意思
具有廣闊的未來(lái)
與人工智能會(huì)緊密結(jié)合
查看全部 -
ffmpeg -i new_5.mp4 -i new_5.mp4 -filter_complex "[0:a][1:a]amix=inputs=2:duration=shortest:weights='0.1 0.9'" amixer.aac
查看全部 -
?視頻速度加倍
ffplay -i h.mp4 -an -vf "setpts=PTS*0.5"
音頻速度加倍
ffplay -i h.mp4 -vn -af "atempo=2.0"
音頻速度減半
ffplay -i h.mp4 -vn -af "atempo=0.5"
音視頻同步增速
ffmpeg -i h.mp4 -filter_complex "[0:v]setpts=PTS*0.5[vo];[0:a]atempo=2.0[ao]" -map "[vo]" -map "[ao]" speed2.mp4
查看全部 -
前提條件:把各個(gè)視頻的分辨率搞成一樣的
ffmpeg -i new_5.mp4 -i new_5.mp4 -i new_5.mp4 -filter_complex "[0:v]fade=t=out:st=18:d=3[v0];[1:v]fade=t=in:st=0:d=3[tmp];[tmp]fade=t=out:st=18:d=3[v1];[2:v]fade=t=in:st=0:d=3[v2];[v0][v1][v2]concat=n=3:v=1:a=0[vo];[0:a][1:a][2:a]concat=n=3:v=0:a=1[ao]" -map "[vo]" -map "[ao]" ? r.mp4
? ?三個(gè)多媒體文件的漸進(jìn)漸出
查看全部 -
四個(gè)視頻合在一起的命令
ffmpeg -i new_5.mp4 -i ?new_5.mp4 -i new_5.mp4 -i new_5.mp4 -filter_complex "nullsrc=size=640*480[base];[0:v]setpts=PTS-STARTPTS,scale=320:240[a];[1:v]setpts=PTS-STARTPTS,scale=320:240[b];[2:v]setpts=PTS-STARTPTS,scale=320:240[c];[3:v]setpts=PTS-STARTPTS,scale=320:240[d];[base][a]overlay=shortest=1[tmp1];[tmp1][b]overlay=shortest=1:x=320[tmp2];[tmp2][c]overlay=shortest=1:y=240[tmp3];[tmp3][d]overlay=shortest=1:x=320:y=240" new.mp4
?
查看全部 -
實(shí)現(xiàn)畫(huà)中畫(huà)
ffmpeg -i killer_d.mp4 -i video.mpt -fliter_complex "[1:v]scale=160:90[out];[0:v][out]overlay=W-w-30:10" new.mp4
1代表第2個(gè)輸入,v代表視頻部分
查看全部 -
FFmpeg濾鏡種類(lèi)
簡(jiǎn)單濾鏡 -vf
復(fù)雜濾鏡 -filter_complex
Overlay濾鏡
最常使用的濾鏡
以第一個(gè)輸入為背景,后面的疊加到背景上
濾鏡描述符規(guī)則
逗號(hào)表示前一個(gè)輸出是后一個(gè)輸入
分號(hào)表示兩個(gè)濾鏡是并列關(guān)系?
冒號(hào)用于區(qū)分不同的參數(shù)
例子
直接播放
ffplay -i new_5.mp4 -vf "movie=1.jpeg,scale=64:48[water];[in][water]overlay=30:10"
movie是一個(gè)關(guān)鍵字, water代表水印,in代表背景,離左邊30像素,離上面10個(gè)像素。
先轉(zhuǎn)換成文件,再播放文件
ffmpeg -i new_5.mp4 -vf "movie=1.jpeg,scale=64:48[water];[in][water]overlay=30:10" video_w.mp4
ffplay video_w.mp4
查看全部 -
ffmpeg -f image2? -r 1 -i i-%03d.jpg -r 1 video.mp4
-f:指圖片格式,一般為image2或image1
ffprobe output-003.jpg
轉(zhuǎn)換圖片為相同大小,再把圖片轉(zhuǎn)換為視頻
l
ffmpeg -f image2 -r 2? -i i-%03d.jpg -r 24 video3.mp4
ffprobe video3.mp4
如果每秒輸入兩張,如果已存在20張圖片,那么就會(huì)變?yōu)?0s的視頻。24fps, 每秒采用12張圖片。
查看全部 -
視頻生成圖片
ffmpeg -i new_5.mp4 -r 1 -f image2 output-%03d.jpg
生成縮略圖
ffmpeg -i new_5.mp4 -r 1 -s 160*90 -f image2 output-%03d.jpg
查看圖片
open output-001.jpg
每秒生成0.5幀,即兩秒生成一幀
ffmpeg -i new_5.mp4 -r 0.5 -s 160*90 -f image2 output-%03d.jpg
查看全部 -
音視頻裁剪
理論基礎(chǔ)
I幀
P幀
相對(duì)于前一幀的增量,依賴(lài)I幀
B幀
相對(duì)于前面的I幀和后面的P幀,。。。依賴(lài)I幀和P幀
裁剪方式:
第一種:
重新解碼編碼來(lái)進(jìn)行裁剪
第二種:
在原有的data上直接定位到某一點(diǎn),然后把數(shù)據(jù)拿出來(lái)
裁剪時(shí)如果不幸定位到B幀上了,就找前一個(gè)I幀和后一個(gè)I幀開(kāi)始
裁剪命令
ffmpeg -ss 00:00:00 -t 10 10 -i test.mp4 new_3.mp4 修飾輸入文件在沒(méi)有處理的時(shí)候怎么做
一般從第一秒開(kāi)始都沒(méi)有問(wèn)題,因?yàn)橐话愣际菑腎幀開(kāi)始的
ffmpeg -i test.mp4? -ss 00:00:00 -t 10 10 new_5.mp4 修飾的是輸出文件
想裁剪得更準(zhǔn)確,一般先解碼再重新編碼會(huì)好點(diǎn)
GOP
GOP即Group of picture(圖像組)
查看全部 -
媒體格式互轉(zhuǎn)
MP4轉(zhuǎn)FLV
ffmpeg -i test.mp4 testflv.flv
ffplay testflv.flv? 會(huì)比原視頻更模糊,如果不加copy,它采用的策略是向比較小的碼率去轉(zhuǎn)化
ffmpeg -i test.mp4 -c copy testflv2.flv
ffplay testflv2.flv 相當(dāng)于復(fù)制一次源文件?
FLV轉(zhuǎn)TS
? ? ? ?ffmpeg -i test.mp4 -c copy testflv2.ts
MP4轉(zhuǎn)MOV
ffmpeg -i test.mp4 -c copy testflv2.mov
ffmpeg 一般把高清的轉(zhuǎn)化為低清的,一般不能把低清的轉(zhuǎn)變?yōu)楦咔宓模?dāng)然通過(guò)一些算法來(lái)實(shí)現(xiàn)的方式就另說(shuō)了
查看全部 -
抽取視頻流
ffmpeg -i? out.mp4 -an -c:v copy new.mp4
ffplay new.mp4
抽取音頻流
ffmpeg -i out.mp4 -vn -c:a copy out.aac
ffplay out.aac
查看一個(gè)音視頻屬性
ffprobe out.mp4
查看全部 -
抽取音視頻流
多媒體文件
音視頻軌
查看全部 -
安裝Ffmpeg的方式
命令安裝
mac:? brew install ffmpeg
unbuntu: apt install ffmpeg
源碼安裝
方法詳見(jiàn):http://avdancedu.com
查看全部 -
ffmpeg
音視頻編輯?
播放器
音視頻轉(zhuǎn)碼
-------------------------------------------
WebRTC
音視頻實(shí)時(shí)通信
3A處理
網(wǎng)絡(luò)傳輸質(zhì)量
--------------------------------------------
Ffmpeg與WebRTC比較
Ffmpeg是基礎(chǔ),webRTC也使用它
Ffmpeg更多的用于音視頻編輯與播放器
WebRTC更多的用于音視頻實(shí)時(shí)通信
查看全部 -
破熱熱給查看全部
-
命令安裝
查看全部 -
重新編解碼裁剪
時(shí)間參數(shù)放在前面,是對(duì)沒(méi)有編解碼的文件設(shè)定的。
ffmpeg -ss 00:00:00 -t 10 -i output.mp4 new_3.mp4
時(shí)間參數(shù)放在后面是對(duì)解碼后的數(shù)據(jù)按時(shí)間剪裁,更為準(zhǔn)確
ffmpeg -i output.mp4 -ss 00:00:05 -t 10 new_4.mp4
不重新編解碼裁剪
ffmpeg -i output.mp4 -ss 00:00:05 -t 10 -c copy new_4.mp4
查看全部 -
裁剪音視頻
I幀:表示關(guān)鍵幀,你可以理解為這一幀畫(huà)面的完整保留;解碼時(shí)只需要本幀數(shù)據(jù)就可以完成(因?yàn)榘暾?huà)面)。又稱(chēng)為內(nèi)部畫(huà)面 (intra picture),I 幀通常是每個(gè) GOP(MPEG 所使用的一種視頻壓縮技術(shù))的第一個(gè)幀,經(jīng)過(guò)適度地壓縮,做為隨機(jī)訪問(wèn)的參考點(diǎn),可以當(dāng)成圖象
P幀:即Predictive-coded Picture(前向預(yù)測(cè)編碼圖像幀)。P幀表示的是這一幀跟之前的一個(gè)關(guān)鍵幀(或P幀)的差別,解碼時(shí)需要用之前緩存的畫(huà)面疊加上本幀定義的差別,生成最終畫(huà)面。(也就是差別幀,P幀沒(méi)有完整畫(huà)面數(shù)據(jù),只有與前一幀的畫(huà)面差別的數(shù)據(jù))
B幀:即Bidirectionally predicted picture(雙向預(yù)測(cè)編碼圖像幀)。B幀是雙向差別幀,也就是B幀記錄的是本幀與前后幀的差別,換言之,要解碼B幀,不僅要取得之前的緩存畫(huà)面,還要解碼之后的畫(huà)面,通過(guò)前后畫(huà)面的與本幀數(shù)據(jù)的疊加取得最終的畫(huà)面。B幀壓縮率高,但是解碼時(shí)CPU會(huì)比較累。
查看全部 -
多媒體格式轉(zhuǎn)換
MP4--->FLV
ffmpeg -i output.mp4 output.flv
不對(duì)文件里面的視頻和音頻內(nèi)容更改,直接拷貝,速度快,只是將文件的外衣mp4改為flv而已
ffmpeg -i output.mp4 -c copy output.flv
查看全部 -
音頻與視頻合流:
ffmpeg -i new.mp4 -i happy.aac new_1.mp4
此時(shí)如果音頻和視頻的時(shí)長(zhǎng)不一致,比如視頻時(shí)長(zhǎng)短,則視頻停留最后一幀,音頻繼續(xù)播放,反之亦然。
為了視頻和音頻同時(shí)同時(shí)停止,需要加入shortest參數(shù)
ffmpeg -i new.mp4 -i happy.aac -shortest new_1.mp4
即合并后的時(shí)長(zhǎng)等于音頻與視頻中時(shí)長(zhǎng)較短的保持一致。
查看全部 -
提取音頻命令:
ffmpeg -i output.mp4 -vn -c:a copy output.aac
-i 表示input輸入
-vn v表示video n表示no 不要視頻
-ca 對(duì)音頻編碼
copy 不對(duì)編碼器處理,直接拷貝
命令完整的含義:對(duì)輸入的output.mp4 文件進(jìn)行操作,不要視頻,對(duì)音頻的數(shù)據(jù)不做修改,直接拷貝輸出到output.aac文件中。
查看文件信息:
ffprobe output.mp4
播放文件:
ffplay output.aac
同理提取視頻命令:
ffmpeg -i output.mp4 -an -c:v copy new.mp4
ffplay new.mp4
查看全部 -
ffmpeg與WebRTC的比較
查看全部 -
WebRTC的主要用途:
音視頻實(shí)時(shí)通信
3A處理(混音消除、降噪、自動(dòng)增益)
網(wǎng)絡(luò)傳輸質(zhì)量(一系列解決方案)
查看全部 -
ffmpeg的主要用途
查看全部
舉報(bào)