九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
如何用ffmpeg壓縮視頻

 壓縮視頻之前,我們要了解原視頻的詳細(xì)信息,利用MediaInfo可以查看視頻的詳細(xì)信息; 也可運(yùn)行 ffmpeg -i video.mp4 -hide_banner

視頻尺寸:指的就是視頻的分辨率,常見的分辨率有4096*2304,1920*1080,720*576等。

視頻編碼:視頻編碼方式就是指通過特定的壓縮技術(shù),將某個視頻格式的文件轉(zhuǎn)換成另一種視頻格式文件的方式。視頻編碼格式常見到的有:MPEG-2 TS、Divx、Xvid、H.264、WMV-HD和VC-1。

音頻編碼:音頻編碼方式指通過特定的壓縮技術(shù)對音頻數(shù)據(jù)進(jìn)行處理的方法。

幀率:幀率(即視頻更新率)是用于測量顯示幀數(shù)的量度。測量單位為“每秒顯示幀數(shù)”(Frame Per Second,F(xiàn)PS,幀率)或“赫茲”,單位用FPS用來描述視頻每秒播放多少幀,而單位用赫茲用來描述顯示器的畫面每秒更新多少次。 一般幀率越高,視頻畫面越流暢。

比特率:指每秒傳送的比特(bit)數(shù),即每秒傳輸?shù)奈募笮?。比特率?guī)定使用“比特每秒”(bit/s 或 bps)為單位。比特率越高,每秒傳送的數(shù)據(jù)越大。

采樣率:采樣率的單位是Hz,表示每秒采樣的次數(shù)。單位時間內(nèi)取樣率越大,精度就越高,處理過的視頻文件就越接近沒有處理過的視頻文件。

碼率:碼率就是數(shù)據(jù)傳輸時單位時間傳送的數(shù)據(jù)位數(shù),一般我們用的單位是kbps即千位每秒。碼率與體積成正比:碼率越大,體積越大;碼率越小,體積越小。由于文件體積與取樣率是成正比的,所以幾乎所有的編碼格式都想用最低的碼率達(dá)到最少的失真,“碼率”就是失真度,碼率越高越清晰,反之則畫面粗糙而且馬賽克多。

視頻部分的位深度:用于指定圖像中的每個像素可以使用的顏色信息數(shù)量,用“位即bit”為單位。

音頻部分的位深度:單個聲道的采樣數(shù)據(jù)大小

可選視頻編碼方案

1. MP4封裝:H264視頻編碼+AAC音頻編碼(最通用)

2. WebM封裝: VP8視頻編碼+Vorbis音頻編碼(Google為了避開專利開發(fā),無明顯優(yōu)勢)

3. OGG封裝: Theora視頻編碼 +Vorvis音頻編碼(完全開源的編碼方式,無專利,HTML5可用)

音頻轉(zhuǎn)碼

例子 flac轉(zhuǎn)mp3

ffmpeg -i input.flac -acodec libmp3lame -ar 44100 -ab 320k -ac 2 out.mp3

  • -acodec 輸入編碼器,不輸入也可以,ffmpeg會自動根據(jù)后綴名選擇編碼器
  • -ar rate 指定采樣頻率,不指定采樣頻率會根據(jù)輸入音視頻的采樣頻率
  • -ab audio byte rates 指定比特率,如果不輸入默認(rèn)是128K,這點(diǎn)就有點(diǎn)坑了。128K作為視頻的音軌比較合適,但是這個音質(zhì)作為單純的音頻來說還是基本上是最低音質(zhì),平時我們在手機(jī)里聽聽的水平。
  • -ac audio channel 指定聲道數(shù)

一般來說音頻影響不大,重點(diǎn)說視頻壓縮:

壓縮用到的參數(shù): -i 輸入文件的路徑或者url; -s 設(shè)置輸出文件的分辨率,wxh; -b:v 輸出文件的碼率,一般500k左右即可,人眼看不到明顯的閃爍,這個是與視頻大小最直接相關(guān)的;

ffmpeg -i target.m4v -b:v 400k -s 960x540 dst.mp4

將一個叫target.m4v的視頻轉(zhuǎn)換成mp4格式,設(shè)置輸出視頻的分辨率為960x540,碼率為400k。

這就是最基本的用法了,這個軟件是非常強(qiáng)大的,視頻頻也是可以轉(zhuǎn)換,剪切、截圖的,音頻也一樣,而且還可以分離音視頻。

壓縮完成之后,視頻大小變?yōu)樵瓉淼?/4,而且還是很清楚!比市面上成品的壓縮軟件強(qiáng)太多?。?!

ffmpeg -i in.webm -s 1920*1080 -pix_format yuv420p -vcodec libx264 -preset medium -profile:v high -level:v -crf 23

  • -s size 指定視頻尺寸進(jìn)行縮放
  • -pix_format 指定視頻使用的顏色空間 ,輸入ffmpeg -pix_fmts可以打印出所有支持的選項(xiàng)。我就知道兩個YUV和RGB,YUV表示明亮度,色度和濃度,因?yàn)槿说纳X對亮度的敏感程度要高一些,所以網(wǎng)絡(luò)視頻通常會對色度層面進(jìn)行壓縮。也就是所謂的yuv420p。Y保留全部UV進(jìn)行壓縮
  • -vcodex 指定視頻編碼器,建議使用libx264
  • -preset 對編碼器的預(yù)設(shè),精度越高編碼速度越慢,占用cpu性能越高,默認(rèn)是medium 有以下幾個選項(xiàng) 1. ultrafast 2. superfast 3. veryfast 4. faster 5. fast 6. medium 7. slow 8. slower 9. veryslow 10. placebo 通常我們在網(wǎng)絡(luò)上發(fā)布視頻,會使用veryfast選項(xiàng)。較快,消耗性能少,對播放器的要求也低,缺點(diǎn)是生成的視頻會大一些 壓制視頻的時候,一般采用veryslow選項(xiàng)。
  • -profile:v 指定編碼器配置,主要和壓縮比有關(guān)。

如下圖所示,越往左支持的選項(xiàng)越少,質(zhì)量越低

實(shí)時通信領(lǐng)域采用baseline

流媒體領(lǐng)域 使用 main

超清視頻 使用high

-level:v 對編碼器配置的限制,如下表

一般情況下1080P及以下視頻選用4.1即可

-crf Constant Rate Factor 恒定速率因子模式,每一幀的畫面都按照要求的視頻質(zhì)量計(jì)算需要的比特?cái)?shù),畫質(zhì)均衡,但是無法控制碼率,也無法控制最終生成文件的大小。 適用于對于畫質(zhì)有要求,文件大小沒有要求的情況,范圍0-51,默認(rèn)值就是23,數(shù)字越小質(zhì)量越高

  • -r 設(shè)置視頻幀率
  • -b:a 同 -ab 設(shè)置音頻比特率,大多數(shù)視頻網(wǎng)站的音頻比特率都是128K或者192K

碼率控制模式

fmmpeg支持3種碼率控制模式

1. -qp 恒定量化器模式,量化器就是用算法將每一幀的質(zhì)量轉(zhuǎn)化為數(shù)字,可以設(shè)置,建議讓軟件自動設(shè)置。

體積最大

一般不使用這種模式,除非你想無損壓制視頻

無損壓制視頻的例子(快速編碼)

ffmpeg -i input -vcodec libx264 -preset ultrafast -qp 0 output.mkv

無損壓制視頻的例子(高壓縮比)

ffmpeg -i input -vcodec libx264 -preset veryslow -qp 0 output.mkv

嘗試了用這種無損壓縮方式壓縮dvd鏡像中提取的vob文件,發(fā)現(xiàn)這種方式壓制出來的文件體積竟然是原來的兩倍。所以說還是使用crf 18,這樣就比較接近無損了。

2. -crf 恒定速率因子模式,相當(dāng)于浮動值的qp模式,會給每個畫面不同的量化值,比如說把人眼不敏感的部分碼率調(diào)低。一般壓制視頻使用這個選項(xiàng)。但是不懂不推薦亂設(shè)置,讓軟件自動配置即可 值的范圍是0-51,默認(rèn)值是23,通常認(rèn)為crf值18壓制出來的視頻視覺上是無損的。18-23之間的變化不明顯。

3. -b 固定目標(biāo)碼率模式,當(dāng)上傳視頻網(wǎng)站有碼率限制時,可以使用這個選項(xiàng)。但是不推薦。crf也可以獲得合適的體積和畫質(zhì)。沒必要

使用上面3個選項(xiàng)壓制,都是單遍編碼,最好加上-preset veryslow 選項(xiàng),這樣軟件對參數(shù)的控制會更精準(zhǔn)

比特率模式

VBR 動態(tài)比特率,ffmpeg默認(rèn)采用,簡單的內(nèi)容少給碼率,復(fù)雜內(nèi)容多給碼率。

ABR 平均比特率,網(wǎng)絡(luò)視頻會采用這一格式,因?yàn)閂BR碼率變化太大,不適用網(wǎng)絡(luò)傳輸

CBR 恒定比特率, 通常沒有人使用

輸入 ffmpeg -h encoder=libx264 查看最常用的x264編碼器的使用方式 -nal-hrd 可以指定VBR和CBR兩種,但是CBR在.mp4不支持?

其余還有-maxrate -minrate 選項(xiàng),設(shè)置這兩個選項(xiàng)就能達(dá)到ABR的效果

合并,提取視頻

提取視頻流,

假設(shè)我們提取mp4視頻中的視頻流

ffmpeg -i in.mp4 -vcodec copy -an v.mp4

-an選項(xiàng)是 audio no 也就是忽略音頻

提取音頻

ffmpeg -i in.mp4 -acodec copy -vn a.m4a

同理 -vn 即忽略音頻

如果提取多個音軌的視頻:

比如我們用ffprobe看到如下

提取第二條 只需加上-map 0:3

合并音視頻

ffmpeg -i a.m4a -i v.mp4 -c copy out.mp4

瞬間就能完成合并,因?yàn)橐纛l和視頻都是現(xiàn)成的,不用重新編碼

-c 就是 -codec的簡寫

截取、連接音視頻

截取音視頻

ffmpeg -i in.mp3 -ss 00:01:00 -to 00:01:10 -acodec copy out.mp3

-ss 設(shè)置起始時間位移

-to 設(shè)置結(jié)束時間位移

也可以使用下面的方式

ffmpeg -i in.mp3 -ss 00:01:00 -t 10 -acodec copy out.mp3

-t 設(shè)置截取時長

還有-sseof 選項(xiàng) 是以媒體末尾作為起點(diǎn),可以配合-t截取末尾多少秒

看下面2條命令

ffmpeg -i in.mp4 -ss 00:01:00 -to 00:01:10 -acodec copy out.mp4

ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -acodec copy out.mp4

調(diào)換-ss和-i的位置對結(jié)果的影響?

-ss在前面會調(diào)用關(guān)鍵幀技術(shù),可能導(dǎo)致截取的時間并不準(zhǔn)確

ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -acodec copy -copyts out.mp4

我們可以加上 -copyts選項(xiàng),作用是保留時間戳,這樣就能正確截取了。

合并音視頻

方法一

ffmpeg -i "concat:01.mp4|02.mp4|03.mp4" -c copy out.mp4

當(dāng)合并的幾個視頻參數(shù)一致時,很快就合并完成了。

合并不同參數(shù)的視頻,操作會比較麻煩。

方法二

上面的方法其實(shí)相當(dāng)于把兩個文件直接拼在一起,適用于mp2之類的視頻,如果是flv連接處會有卡頓現(xiàn)象 下面的方法,先在一個txt文本中把要拼接的文件列出來。 這條命令只要是相同格式的視頻均可以拼接 ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4 -safe 命令是讓ffmpeg無視安全問題報(bào)錯 在txt文件中的格式需要是這樣子

file 'file1.mp4' file 'file2.mp4'

可以使用開源軟件Avidemux,圖形化界面,操作方便

截圖、水印、動圖

截圖

ffmpeg -i in.mp4 -ss 5 -vframes 1 img.jpg

-vframe 指定截取的幀

加水印

ffmpeg -i in.mp4 -i logo.png -filter_complex "overlay=20:20"

-filter_complex 添加濾鏡 overlay20:20 指的是,離左邊20像素,離上邊20像素

制作GIF動圖

ffmpeg -i in.mp4 -ss 4.5 -to 8.5 -s 640*320 -r 15 out.gif

錄屏

ffmpeg -f gdigrab -i desktop rec.mp4

默認(rèn)錄屏參數(shù)是下面這樣的

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\rec.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.24.101 Duration: 00:00:04.11, start: 0.000000, bitrate: 676 kb/s Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 2560x1440, 672 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) Metadata: handler_name : VideoHandler

清晰度相當(dāng)不錯,字符都很清楚,但是沒有聲音

-f 格式化 gdigrab 是ffmpeg的一個組件,用來捕獲視頻。 在windows系統(tǒng)中,ffmpeg自帶的就是和默認(rèn)使用的gdigrab,只能錄制屏幕,不能錄制聲音

直播推薦使用OBS Studio,開源免費(fèi),功能強(qiáng)大

直播推流

ffmpeg -re -i rec.mp4 按網(wǎng)站要求輸入想要的編碼 -f flv rtmp地址

作者:泥之天空 鏈接:https://www.jianshu.com/p/fa857f004409 來源:簡書 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

詳細(xì)參數(shù):

Print help / information / capabilities:

-h -- print basic options

-h long -- print more options

-h full -- print all options (including all format and codec specific options, very long)

-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter

See man ffmpeg for detailed description of the options.

-L show license

-h topic show help

-? topic show help

-help topic show help

--help topic show help

-version show version

-buildconf show build configuration

-formats show available formats

-muxers show available muxers

-demuxers show available demuxers

-devices show available devices

-codecs show available codecs

-decoders show available decoders

-encoders show available encoders

-bsfs show available bit stream filters

-protocols show available protocols

-filters show available filters

-pix_fmts show available pixel formats

-layouts show standard channel layouts

-sample_fmts show available audio sample formats

-colors show available color names

-sources device list sources of the input device

-sinks device list sinks of the output device

-hwaccels show available HW acceleration methods

Global options (affect whole program instead of just one file:

-loglevel loglevel set logging level

-v loglevel set logging level

-report generate a report

-max_alloc bytes set maximum size of a single allocated block

-y overwrite output files

-n never overwrite output files

-ignore_unknown Ignore unknown stream types

-filter_threads number of non-complex filter threads

-filter_complex_threads number of threads for -filter_complex

-stats print progress report during encoding

-max_error_rate maximum error rate ratio of errors (0.0: no errors, 1.0: 100% e rrors) above which ffmpeg returns an error instead of success.

-bits_per_raw_sample number set the number of bits per raw sample

-vol volume change audio volume (256=normal)

Per-file main options:

-f fmt force format

-c codec codec name

-codec codec codec name

-pre preset preset name

-map_metadata outfile[,metadata]:infile[,metadata] set metadata information of outfile from infile

-t duration record or transcode "duration" seconds of audio/video

-to time_stop record or transcode stop time

-fs limit_size set the limit file size in bytes

-ss time_off set the start time offset

-sseof time_off set the start time offset relative to EOF

-seek_timestamp enable/disable seeking by timestamp with -ss

-timestamp time set the recording timestamp ('now' to set the current time)

-metadata string=string add metadata

-program title=string:st=number... add program with specified streams

-target type specify target file type ("vcd", "svcd", "dvd", "dv" or "dv5 0" with optional prefixes "pal-", "ntsc-" or "film-")

-apad audio pad

-frames number set the number of frames to output

-filter filter_graph set stream filtergraph

-filter_script filename read stream filtergraph description from a file

-reinit_filter reinit filtergraph on input parameter changes

-discard discard

-disposition disposition

Video options:

-vframes number set the number of video frames to output

-r rate set frame rate (Hz value, fraction or abbreviation)

-s size set frame size (WxH or abbreviation)

-aspect aspect set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)

-bits_per_raw_sample number set the number of bits per raw sample

-vn disable video

-vcodec codec force video codec ('copy' to copy stream)

-timecode hh:mm:ss[:;.]ff set initial TimeCode value.

-pass n select the pass number (1 to 3)

-vf filter_graph set video filters

-ab bitrate audio bitrate (please use -b:a)

-b bitrate video bitrate (please use -b:v)

-dn disable data

Audio options:

-aframes number set the number of audio frames to output

-aq quality set audio quality (codec-specific)

-ar rate set audio sampling rate (in Hz)

-ac channels set number of audio channels

-an disable audio

-acodec codec force audio codec ('copy' to copy stream)

-vol volume change audio volume (256=normal)

-af filter_graph set audio filters

Subtitle options:

-s size set frame size (WxH or abbreviation)

-sn disable subtitle

-scodec codec force subtitle codec ('copy' to copy stream)

-stag fourcc/tag force subtitle tag/fourcc

-fix_sub_duration fix subtitles duration

-canvas_size size set canvas size (WxH or abbreviation)

-spre preset set the subtitle options to the indicated preset

————————————————

版權(quán)聲明:本文為CSDN博主「SHUIPING_YANG」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/zhezhebie/java/article/details/79263492

https://segmentfault.com/a/1190000002502526

ffmpeg -i MVI_7274.MOV -vcodec libx264 -preset fast -crf 20 -y -vf "scale=1920:-1" -acodec libmp3lame -ab 128k a.mp4

-preset:指定編碼的配置。x264編碼算法有很多可供配置的參數(shù),不同的參數(shù)值會導(dǎo)致編碼的速度大相徑庭,甚至可能影響質(zhì)量。為了免去用戶了解算法,然后手工配置參數(shù)的麻煩。x264提供了一些預(yù)設(shè)值,而這些預(yù)設(shè)值可以通過preset指定。這些預(yù)設(shè)值有包括:ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow和placebo。ultrafast編碼速度最快,但壓縮率低,生成的文件更大,placebo則正好相反。x264所取的默認(rèn)值為medium。需要說明的是,preset主要是影響編碼的速度,并不會很大的影響編碼出來的結(jié)果的質(zhì)量。壓縮高清電影時,我一般用slow或者slower,當(dāng)你的機(jī)器性能很好時也可以使用veryslow,不過一般并不會帶來很大的好處。

-crf:這是最重要的一個選項(xiàng),用于指定輸出視頻的質(zhì)量,取值范圍是0-51,默認(rèn)值為23,數(shù)字越小輸出視頻的質(zhì)量越高。這個選項(xiàng)會直接影響到輸出視頻的碼率。一般來說,壓制480p我會用20左右,壓制720p我會用16-18,1080p我沒嘗試過。個人覺得,一般情況下沒有必要低于16。最好的辦法是大家可以多嘗試幾個值,每個都壓幾分鐘,看看最后的輸出質(zhì)量和文件大小,自己再按需選擇。

其實(shí)還有-b 1024k這樣的參數(shù),但是我發(fā)現(xiàn)-crf設(shè)置上后-b就不管用了。根據(jù)我自己的簡單嘗試,壓制5D2拍攝的一段18秒1920x1080的視頻(下午自然光、圖像簡單、大面積白墻、只有一扇黑門)crf和壓出來的文件大小關(guān)系如下:

crf 文件大小

16 54M

18 39M

20 25M

22 17M

24 11M

26 7.3M

28 5.0M

30 3.6M

32 2.7M

默認(rèn) 14M(crf為23)

又比較了一下crf在20、28、32時的視頻質(zhì)量,發(fā)現(xiàn)32還是能看出質(zhì)量下降的,20的確非常精細(xì),但28跟20之間的差別并不是那么大,crf值設(shè)置在26-28之間比較好。如果對尺寸有要求,什么都不設(shè),用默認(rèn)的也行(可能是31)。

另外,關(guān)于preset,slow和fast只跟運(yùn)行時間有關(guān),slow跑的時間比fast長不少,slow出來的mp4文件會小一些(12M),fast出來的文件會大一些(14M),但視頻質(zhì)量的差距并不明顯。

如果把原視頻尺寸從1920x1080縮小到960x540,則視頻尺寸變?yōu)榱耍?/p>

crf 文件大小

16 11M

18 6.7M

20 4.4M

22 3.0M

24 2.1M

26 1.6M

28 1.3M

30 1.1M

32 893K

默認(rèn) 2.5M(crf為23)

綜上,對質(zhì)量要求較高時,選22以下;對尺寸要求非常高時,選26(但質(zhì)量確實(shí)是會稍差一些),否則選24的性價比比較高(或者默認(rèn)的23也行),如果對尺寸實(shí)在要求非常非常高,那就28以上吧。

后記補(bǔ)充(來自@gghyoo) 可以用-threads n 來實(shí)施多線程的運(yùn)算,充分利用多核cpu 例子如下: ffmpeg -threads 2 -crf 20 -y -i ML-02.avi -strict experimental ML-02.mp4

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
視頻高清低損壓縮命令行實(shí)現(xiàn)方案推薦
ffmpeg常用命令
FFmpeg視頻轉(zhuǎn)碼技巧之
ffmpeg與x264編碼指南
DASH簡介及使用方法(FFmpeg, MP4Box)
ffmpeg視頻分割
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服