最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【FFmpeg】入門常用功能

2023-05-19 23:14 作者:冰藍(lán)砂糖  | 我要投稿

安裝

到ffmpeg.org下載full版,添加ffmpeg下的bin文件夾的文件路徑到環(huán)境變量

使用

在命令行中輸入:

ffmpeg -h ? ?

(查看幫助)

ffmpeg -i demo.mp4?

(輸入視頻,查看信息)

ffmpeg -i demo.mp4 demo.mkv ? ?

(最簡(jiǎn)單的視頻格式轉(zhuǎn)換)把mp4轉(zhuǎn)成mkv,同時(shí)這個(gè)方法可以直接把視頻轉(zhuǎn)成音頻

ffmpeg -i video_with_audio.mp4 -i newAudio.wav \
-map 0:0 \
-map 1:0 \
-c:v copy \
-c:a libmp3lame -q:a 0 \
-shortest \
video_with_newAudio.mp4

(給視頻替換音軌)(或者是給無(wú)音頻的視頻添加音頻)
代碼解釋:
代碼里的"\"表示換行,你可以不換,如果你想換,Windows里輸入^再回車,Linux里輸入\再回車。
兩個(gè)-i作用是:輸入視頻文件和音頻文件,若文件名有空格,可用單引號(hào)'將文件名括起來(lái)
-map0:0意思是:第一個(gè)0指第一個(gè)輸入的文件(.mp4),第二個(gè)0是指容器(.mp4)的第一條軌道(視頻)
-map1:0意思是:第二個(gè)輸入的文件(.wav)的第一條軌道(音頻)
-c:v copy意思是:c(codecs編解碼器) v(video視頻) copy(即復(fù)制原軌道)
-c:a 指定音頻編碼器為libmp3lame,這個(gè)是.mp4的音頻軌道所用的編碼器
-q:a表示質(zhì)量,質(zhì)量分布范圍為0~6,其中0表示高質(zhì)量音頻,6表示低質(zhì)量音頻。
-shortest 指合并視頻和音頻的時(shí)候,合并出來(lái)的視頻時(shí)間長(zhǎng)度取其中最短的那個(gè)。
video_with_newAudio.mp4 是你想生成的最終視頻的名字。

Fin

好了,最常用的到這里就可以結(jié)束了,下面的功能基本用不上。

剪輯視頻建議用格式工廠、PR;屏幕錄像建議用OBS。

覺(jué)得有用的話點(diǎn)個(gè)關(guān)注我想要粉絲謝謝



(linux用grep、windows用findstr)該命令可查看到h264的編碼器(compiler)是libx264,也可以看到nvdia顯卡加速的編碼器是h264_nvencffmpeg -i demo.mp4 -c:v libx265 demo.mkv ? ? ? ? ? ?
指定視頻video用h265的編碼器compilerffmpeg -i demo.mkv -c:v copy demo2.mp4 ? ? ? ? ? ?
指定視頻流不再重解碼編碼,節(jié)約時(shí)間,但前提是輸出的容器(mp4)要支持原容器(mkv)里的視頻流的格式ffmpeg -i demo.mp4 -c:v hevc_nvenc -c:a libmp3lame -c:s srt -b_ref_mode 0 demo.mkv
指定nvdia(nv)卡加速視頻編碼,指定音頻編碼器,指定字幕格式srt,如果電腦不支持b模式可以設(shè)為0,輸出為一個(gè)mkv文件ffmpeg -i demo.mp4 -c:v hevc_nvenc -c:a libmp3lame -c:s srt -b_refmode 0 ^(Windows換行繼續(xù)寫(xiě)代碼的符號(hào),linux用\)
More?(這是windows輸入^再按回車后出現(xiàn)的) -map 0:v:0 -map 0:a:0 -map 0:a:1 -map 0:s:0 -map 0:s:1 demo.mkv

一個(gè).mp4,.mkv等文件是一個(gè)容器,里面會(huì)包含若干個(gè)視頻、音頻、字幕、數(shù)據(jù)流。

demo.mp4包含一個(gè)視頻流,兩個(gè)音頻流,兩個(gè)字幕流,該代碼指定這五個(gè)流都轉(zhuǎn)換到demo.mkv中,而非默認(rèn)的只轉(zhuǎn)換三個(gè)流(視頻音頻字幕)

ffmpeg -i demo.mp4 -c:a copy demo.aac (提取出音頻流)

ffmpeg -i demo.mp4 demo.mp3 ?(提取出音頻流)

ffmpeg -i demo.mp4 -s 720x480 -r 20 -b:v 1M demo.mkv ?(指定分辨率,幀率fps,比特率bit/s)

ffmpeg -i demo.mp4 -ss 00:00:03 -t 00:00:02 demo.mkv (從-ss開(kāi)始,截取時(shí)間長(zhǎng)度-t(也可以直接寫(xiě)5,代表5秒)

ffmpeg -i demo.mp4 -ss 00:00:03 -to 00:00:05 demo.mkv ?(和上面一樣的功能,-to是終止時(shí)刻)

ffmpeg -i demo_cn.mp4 -i demo_en.mp4 -i demo_srt_cn.srt -i demo_srt_en.srt
-map 0:v -map 0:a -map 1:a -map 2:s -map 3:s -c:s mov_text demox.mp4

四個(gè)-i輸入,-map匹配:把第一個(gè)輸入的視頻流,第一個(gè)輸入的音頻流,第二個(gè)輸入的音頻流,第三個(gè)輸入的字幕流,第四個(gè)輸入的字幕流,合在一個(gè)mp4容器中輸出,因?yàn)閟rt格式字幕不能直接嵌入mp4,所以用了mov_text這個(gè)字幕編碼器

在(最簡(jiǎn)單的視頻格式轉(zhuǎn)換)的基礎(chǔ)上控制畫(huà)質(zhì):

ffmpeg -i test.avi -c:v libx264 -preset XXX output.mp4

(XXX可以是ultrafast superfast veryfast faster fast medium(默認(rèn)) slow slower veryslow)

越慢,越大,越無(wú)損。砂糖一般用slower

ffmpeg -i test.avi -c:v libx264 -crf 22 output.mp4

(-crf用于視頻壓制(讓視頻體積變?。瑪?shù)值0(無(wú)損)~51(最差質(zhì)量),常用范圍是19~28) 肉眼無(wú)法看出畫(huà)質(zhì)降低的數(shù)值是18,砂糖一般用18

Video Filter:

ffmpeg -i test.avi -c:v libx264 -vf "scale=1920:-1,transpose=2" output.mp4

縮放視頻分辨率到1K,-1是自適應(yīng)高度,transpose=2是逆時(shí)針轉(zhuǎn)90度

ffmpeg -i test.avi -c:v libx264 -vf "crop=400:400:100:100" output.mp4用于視頻裁剪,crop=w:h:x:y ? 代表寬高和位置(左上角為原點(diǎn),→x,↓y)
crop=iw/3:ih/3 ? ? ? ? 代表input width除以3,也就是縮小3倍

合并視頻

mylist.txt:

file 'clip1.mp4'
file 'clip2.mp4'
file 'clip3.mp4'

ffmpeg -f concat -i mylist.txt -c copy output.mp4

-f 指定接下來(lái)要輸入的文件是一個(gè)視頻列表,concat合并,-i輸入,-c copy表示不用重編碼視頻,因?yàn)槎际且粯拥木幋a,最后輸出合并的視頻。

Audio Filter:

ffmpeg -i test.mp4 -af "volume=1.5" output.mp4 ? (音量增大)

"loudnorm=I=-5:LRA=1" ? ?(統(tǒng)一視頻音量)

"equalizer=f=1000:width_type=h:width=200:g=-10" ? (高通低通濾波器均衡器)

ffmpeg -i test.mp4 -an output.mp4 (刪除音頻流)

-vn 刪除視頻流- sn 刪除字幕流 -dn 刪除數(shù)據(jù)流

創(chuàng)建視頻縮略圖

ffmpeg -i test.mp4 -vf "fps=1/10,scale=-2:720" thumbnail-%03d.jpg

(-2強(qiáng)制自適應(yīng)大小為偶數(shù),因?yàn)榉直媛时仨殲榕紨?shù);fps=1/10即是每十秒輸出一張圖;輸出圖片thumbnail加編號(hào))

(C語(yǔ)言中,% 是格式符的開(kāi)始。d 表示有符號(hào)整數(shù)。3 表示最小輸出3位數(shù)字。0 表示如果數(shù)字不足3位,在左邊用0補(bǔ)成3位。)

添加水印

ffmpeg -i test.mp4 -i cat.jpg -filter_complex "overlay=100:100" output.mp4

把貓圖水印添加到視頻x:y位置,原點(diǎn)左上角

gif制作

gif本身限制,不適合較長(zhǎng)視頻,因此需要先剪切出一個(gè)片段

ffmpet -i test.avi -ss 0 -t 3 -filter_complex [0:v]fps=15,scale=-1:256,split[a][b];[a]palettegen[p];[b][p]paletteuse output.gif

然后用過(guò)濾器縮放視頻并且降低視頻的幀率,

最后spilt...這部分純粹是因?yàn)間if自身256色的限制,需要單獨(dú)創(chuàng)建一個(gè)調(diào)色板。

屏幕錄像

注:別用ffmpeg玩屏幕錄像了,被OBS吊起來(lái)打(指用法方便性上)

ffmpeg -hide_banner -loglevel error -stats -f gdigrab -framerate 60 -offset_x 0 -offset_y 0 -video_size 2560x1440 -draw_mouse 1 -i desktop -c:v libx264 -r 60 -preset ultrafast -pix_fmt yuv420p -y screen_record2.mp4

輸入q結(jié)束錄制。ctrl+c中斷也行。

占用大小,2K分辨率,一小時(shí)不到1G(個(gè)人估算)

但gdigrab在windows上無(wú)法錄制音頻,還需要安裝兩個(gè)dll:

audio_sniffer.dll和audio_sniffer-x64.dll

可以安裝Screen Capturer Recorder后從軟件目錄拷貝出來(lái)(在vendor/virtual-audio文件夾下)

這個(gè)軟件其實(shí)就是個(gè)內(nèi)置ffmpeg的錄屏軟件。安裝后可以直接打開(kāi)使用(但如果電腦沒(méi)裝java,需要去安裝個(gè)java才能運(yùn)行本軟件)。但這個(gè)軟件雖然用ruby寫(xiě)的但我沒(méi)搞懂怎么用,還是刪了。

找到兩個(gè)dll后,拷貝出來(lái)隨便存到一個(gè)地方,比如C:\ffmpeg-6.0-full_build\virtual-audio\(我自己建的文件夾),用管理員模式打開(kāi)CMD窗口(右鍵點(diǎn)擊win圖標(biāo)),執(zhí)行以下命令(cmd里按右鍵粘貼):

regsvr32 "C:\ffmpeg-6.0-full_build\virtual-audio\audio_sniffer.dll" regsvr32 "C:\ffmpeg-6.0-full_build\virtual-audio\audio_sniffer-x64.dll"

現(xiàn)在可以錄制聲音了。(我忘了到底可不可以了,反正我放棄用ffmpeg錄像,沒(méi)必要)

錄制屏幕+麥克風(fēng)+文字水印

查看設(shè)備名稱:

打開(kāi)CMD窗口,進(jìn)入ffmpeg.exe所在目錄(如果添加過(guò)環(huán)境變量就不用),執(zhí)行以下命令:

ffmpeg -list_devices true -f dshow -i dummy

如果出現(xiàn)中文亂碼,則首先執(zhí)行一下這個(gè)命令:chcp 65001,然后再查看可用設(shè)備。

拷貝水印字體文件:

打開(kāi)C:\Windows\Fonts\目錄,找到微軟雅黑(msyh.ttf),或者自己下載一個(gè)字體

將字體拷貝到ffmpeg所在目錄,例如C:\ffmpeg-6.0-full_build\Yumeko_ziti\msyh.ttf

ffmpeg -f dshow -i audio="麥克風(fēng) (Realtek High Definition Audio)" -rtbufsize 1000M -thread_queue_size 1024 -f gdigrab -i desktop -pix_fmt yuv420p -vf drawtext="fontcolor=red:fontsize=50:fontfile='msyh.ttf':text='冰藍(lán)砂糖':x=50:y=50" -y C:\Users\Yumeko\Videos\luping.mp4

六、錄制屏幕+聲卡+麥克風(fēng)+文字水印 打開(kāi)CMD窗口,執(zhí)行以下命令:

ffmpeg -rtbufsize 1000M -thread_queue_size 1024 -f dshow -i audio="麥克風(fēng) (Realtek High Definition Audio)" -rtbufsize 1000M -thread_queue_size 1024 -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -rtbufsize 1000M -thread_queue_size 1024 -f gdigrab -i desktop -pix_fmt yuv420p -vf drawtext="fontcolor=red:fontsize=50:fontfile='msyh.ttf':text='魚(yú)知凡工具箱':x=50:y=50" -y D:\tools\luping.mp4

結(jié)束錄制:

在CMD窗口中輸入q

七、錄制攝像頭+麥克風(fēng)+文字水印 打開(kāi)CMD窗口,執(zhí)行以下命令:

D:\tools\ffmpeg.exe -f dshow -i audio="麥克風(fēng) (Realtek High Definition Audio)" -rtbufsize 1000M -thread_queue_size 1024 -f dshow -i video="USB2.0 Camera" -pix_fmt yuv420p -vf drawtext="fontcolor=red:fontsize=50:fontfile='msyh.ttf':text='魚(yú)知凡工具箱':x=50:y=50" -y D:\tools\luping.mp4

結(jié)束錄制:

在CMD窗口中輸入q

八、錄制攝像頭+聲卡+麥克風(fēng)+文字水印 打開(kāi)CMD窗口,執(zhí)行以下命令:

D:\tools\ffmpeg.exe -rtbufsize 1000M -thread_queue_size 1024 -f dshow -i audio="麥克風(fēng) (Realtek High Definition Audio)" -rtbufsize 1000M -thread_queue_size 1024 -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -rtbufsize 1000M -thread_queue_size 1024 -f dshow -i video="USB2.0 Camera" -pix_fmt yuv420p -vf drawtext="fontcolor=red:fontsize=50:fontfile='msyh.ttf':text='魚(yú)知凡工具箱':x=50:y=50" -y D:\tools\luping.mp4

結(jié)束錄制:

在CMD窗口中輸入q

屏幕錄制

先查看設(shè)備

ffmpeg -list_devices true -f dshow -i dummy

會(huì)出現(xiàn)一堆設(shè)備,它們分別是(以我的為例):

HD Webcam(筆記本攝像頭)

screen-capture-recorder(顯示屏錄像)

麥克風(fēng)(CM383-80864)(USB耳機(jī)) / ? 麥克風(fēng)(Realtek(R) Audio) (3.5mm耳機(jī))

virtual-audio-capturer (系統(tǒng)聲音)

...

錄制視頻(默認(rèn)參數(shù))

桌面:ffmpeg -f dshow -i video="screen-capture-recorder" v-out.mp4

攝像頭:ffmpeg -f dshow -i video="HD Webcam" v-out2.flv (要根據(jù)自己攝像頭名稱)

錄制聲音(默認(rèn)參數(shù))

系統(tǒng)聲音:ffmpeg -f dshow -i audio="virtual-audio-capturer" a-out.aac

系統(tǒng)+麥克風(fēng)聲音:ffmpeg -f dshow -i audio="麥克風(fēng) (Realtek(R) Audio)" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 a-out2.aac

同時(shí)錄制聲音和視頻(默認(rèn)參數(shù))

ffmpeg -f dshow -i audio="麥克風(fēng) (Realtek(R) Audio)" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f dshow -i video="screen-capture-recorder" av-out.flv

確認(rèn)覆蓋

-y

查看視頻錄制的可選參數(shù)

ffmpeg -f dshow -list_options true -i video="screen-capture-recorder"

播放視頻

ffplay


/**

  • ffmpeg將視頻分割

  • ffmpeg命令eg:


    1. ffmpeg -ss 00:00:00 -i test.mp4 -c copy -t ?600 ?output.mp4

  • 此處是將視頻test.mp4從00:00:00處分割600s,分割出的視頻名字是output.mp4


    1. ffmpeg -ss 00:00:00 -t 00:01:30 -i test.mp4 -vcodec copy -acodec copy output.mp4

  • 此處是將視頻test.mp4從00:00:00處分割到01:30處,分割出的視頻名字是output.mp4 *

  • 備注:

  • 有些視頻裁剪后你會(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)的事情。 *




  • 注釋:

  • -ss ?指定從什么時(shí)間開(kāi)始分割

  • -i ? 要分割的視頻文件

  • -t ? 指定需要截取多長(zhǎng)時(shí)間:

  • 格式如下


    1. -t ?xx ? ? ? ?// 單位 秒,指截取30s


    1. -t ?00:01:30 ?// 時(shí):分:秒,指截取到播放時(shí)間為01:30處

  • 注意 :-ss 要放在 -i 之前




———————————————— 版權(quán)聲明:本文為CSDN博主「Amarao」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/jinmie0193/article/details/94554932



我們可以使用以下的命令格式來(lái)輸出一個(gè)視覺(jué)無(wú)損的視頻:

ffmpeg -i 輸入文件名 -c:v libx265 -x265-params crf=18 output/輸出文件名.mp4

給視頻替換(添加)音軌使用FFmpeg添加、刪除、替換和提取視頻中的音頻 - 知乎 (zhihu.com)

ffmpeg -i video_with_audio.mp4 -i newAudio.wav \

-map 0:0 \

-map 1:0 \

-c:v copy \

-c:a libmp3lame -q:a 1 \

-shortest \
video_with_newAudio.mp4


【FFmpeg】入門常用功能的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
神农架林区| 土默特左旗| 海安县| 清苑县| 昌平区| 大同县| 将乐县| 比如县| 南通市| 昆山市| 隆子县| 桐乡市| 滁州市| 漳州市| 郓城县| 农安县| 鹿泉市| 察雅县| 汨罗市| 溧阳市| 房产| 兴安县| 登封市| 定远县| 喀喇沁旗| 屏边| 鄂托克前旗| 厦门市| 南开区| 耒阳市| 靖远县| 西青区| 大关县| 张北县| 颍上县| 托克逊县| 浦县| 白朗县| 饶阳县| 莱芜市| 张家口市|