|
一 、前言: 大家周末好,今天继续开始更新音视频系列文章;今天主要给大家分享ffmpeg和ffplay相关命令的使用!废话不多说,直接肝! 二、ffmpeg命令汇总:1、ffmpeg工具:ffmpeg工具主要分三个,从官网我们可以看到:
在上面官网图片里面中,如果大家要详细了解ffmpeg、ffplay、ffprobe三个工具的使用,可以点击进去,里面有非常详细的介绍!这里接下来我给大家总结一下这段时间我学习里面的一些常用命令,再加上一些视频播放演示,这样学习起来就不会太枯燥了. 2、ffmpeg命令使用总结(1)ffmpeg命令查看帮助文档
-L show license -h topic show help -? topic show help7 S2 v4 H3 u' |6 t% [0 I7 o -help topic show help --help topic show help* n9 W4 A! Q& f5 Z -version show version# a+ L; o& e# b# e -buildconf show build configuration7 n) F4 g, k+ l) Z+ x% G -formats show available formats -muxers show available muxers -demuxers show available demuxers -devices show available devices -codecs show available codecs; M2 I# O6 @' M4 B -decoders show available decoders -encoders show available encoders$ y9 i- g! x/ v, b0 n -bsfs show available bit stream filters. ^! O& y- S H# a0 d1 N -protocols show available protocols' f1 o C9 H/ O) O) L) y -filters show available filters# l/ e$ P, v! R( v/ T( H -pix_fmts show available pixel formats -layouts show standard channel layouts( w5 r" i# W0 O1 X# P% Y( V8 }& J
-loglevel loglevel set logging level -v loglevel set logging level9 \1 _3 {1 z; C8 q -report generate a report) T+ d. b& n* s* t -max_alloc bytes set maximum size of a single allocated block8 F9 j2 b* x) a _3 \1 W -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_complex6 S5 c! |% b) I: u -stats print progress report during encoding -max_error_rate maximum error rate ratio of errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success. -bits_per_raw_sample number set the number of bits per raw sample- P. s L2 {$ _7 m! [# c, c4 U -vol volume change audio volume (256=normal)
-pred <int> E..V..... Prediction method (from 1 to 3) (default left) left E..V..... gradient E..V..... median E..V.....9 z/ L. T& I0 V7 l7 c6 Y7 A 还有很多信息没有截取出来,这里只是一部分信息, M* _) V5 n+ D7 ~1 y% r8 s: U8 { 注意:我们可以看到上面的命令查询帮助信息打印出来太多了,不方便阅读,所以我们把它们都放在单独的一个日志文件里面,这样就方便查看阅读: E:\音视频\test-av>ffmpeg -h > ffmpeg_h.logE:\音视频\test-av>ffmpeg -h long > ffmpeg_h_long.log! x2 _4 i! Q+ i& s; x, y9 G9 o ) G. ? b, y: b1 h9 l% ]& H E:\音视频\test-av>ffmpeg -h full > ffmpeg_h_full.log 最终就会在当前目录下生成三个日志文件:
同时我们要注意,在ffplay和ffprobe里面,下面这两条命令就表示查看所有信息,这和ffmpeg有点差异: ffplay -hffprobe -h$ ^# J. p; \2 ~! k5 C, M (2)ffmpeg命令分类查询:
ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 9.1.1 (GCC) 201908071 t' _+ u r7 a! M1 B5 P. `& E5 u/ M configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt% T4 o) {& t9 F( O libavutil 56. 31.100 / 56. 31.100" v4 Y- w1 g& E8 }8 i+ T2 ] libavcodec 58. 54.100 / 58. 54.100 libavformat 58. 29.100 / 58. 29.100# z/ X- k% ^! M# N; @, V6 l! r! [ libavdevice 58. 8.100 / 58. 8.1000 ?/ d! H1 i) m0 Q; u: B4 U" H libavfilter 7. 57.100 / 7. 57.100 libswscale 5. 5.100 / 5. 5.100 libswresample 3. 5.100 / 3. 5.100 libpostproc 55. 5.100 / 55. 5.100) V; L( w- o# |
--disable-static --enable-shared --enable-gpl: @8 O- J( Y f7 e3 ]1 Q --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls" D- H; b, s1 ^- D- Q1 Q --enable-iconv --enable-libass9 t5 E L. [2 Q% c- l* g --enable-libdav1d& H( v @& f7 d --enable-libbluray --enable-libfreetype- e' c2 X+ T6 b --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg& A& ^2 d; ^# a. V' r" t+ {) f --enable-libopus --enable-libshine --enable-libsnappy0 F6 }9 } P; [5 q: A --enable-libsoxr7 R7 A3 w1 V% n --enable-libtheora4 T9 \* s7 N# a --enable-libtwolame F; L. d( h2 p* D; ^$ D g$ D --enable-libvpx; B- Y+ y! }# L7 l7 } --enable-libwavpack9 U" [6 A. k) d! P9 H --enable-libwebp --enable-libx2649 W) e3 N* u# c9 h --enable-libx265 --enable-libxml2" ]$ Z# T/ [1 E' c1 c --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa# k8 ?# {/ G3 B- C8 ~ --enable-libspeex% X! _% C; H2 N/ e( ^" N --enable-libxvid! g4 V" V8 h9 |5 a/ }- Q --enable-libaom --enable-libmfx --enable-amf! u5 J J7 q. ^" B --enable-ffnvcodec --enable-cuvid2 O: y$ b" W" M --enable-d3d11va --enable-nvenc --enable-nvdec9 O# Z( } C( q --enable-dxva2 --enable-avisynth --enable-libopenmpt( p7 q6 [0 L9 _: _; z+ ^% o
D. = Demuxing supported .E = Muxing supported 当然我们可以专门查找flv格式的文件格式: E:\音视频\test-av>ffmpeg -muxers | findstr flv8 R$ x% \# z, KE flv FLV (Flash Video)$ k+ A( c& C3 U' V7 R. X* a& F E:\音视频\test-av>ffmpeg -demuxers | findstr flv D flv FLV (Flash Video)" g" e9 V; q& L6 d D live_flv live RTMP FLV (Flash Video)5 \* u8 m* o* O4 r
D.V.L. 4xm 4X Movie D.VI.S 8bps QuickTime 8BPS video .EVIL. a64_multi Multicolor charset for Commodore 64 (encoders: a64multi )2 J8 q+ C; |3 p2 S .EVIL. a64_multi5 Multicolor charset for Commodore 64, extended with 5th color (colram) (encoders: a64multi5 )8 @: N! `! ~+ @& ~! t% S D.V..S aasc Autodesk RLE/ P" y' W5 ]' i+ ]& l7 J" I1 ~0 Y1 l4 ]. C D.V.L. agm Amuse Graphics Movie D.VIL. aic Apple Intermediate Codec DEVI.S alias_pix Alias/Wavefront PIX image DEVIL. amv AMV Video. @6 Z% ?% z% ^7 v2 u" I9 X1 q; c D.V.L. anm Deluxe Paint Animation D.V.L. ansi ASCII/ANSI art p! C/ k8 e; H' f I5 q- i
aac_adtstoasc, j" D5 }. R- C5 L av1_frame_split av1_metadata chomp& P5 e0 l+ |7 u) } dump_extra8 `& U o, u% ` dca_core& W+ \% }. \8 ]2 M6 X0 w5 P1 v( C eac3_core extract_extradata* b9 t: M _5 X$ W filter_units h264_metadata P* @6 `$ e& x* P h264_mp4toannexb. Y3 C) M, U. u$ U0 F h264_redundant_pps$ O; u- {5 S$ X- u hapqa_extract5 v+ w7 T0 J3 R) D9 D7 B( o9 R hevc_metadata# [. _* i* w5 f! W hevc_mp4toannexb imxdump mjpeg2jpeg mjpegadump mp3decomp2 c7 [4 I" }; e+ |0 P! y mpeg2_metadata+ y9 I7 x- P! F) T1 B$ n mpeg4_unpack_bframes mov2textsub noise null: }. i( o6 o+ S% P prores_metadata remove_extra text2movsub trace_headers truehd_core vp9_metadata% r% [. J+ z: o5 L6 l% k vp9_raw_reorder vp9_superframe vp9_superframe_split , P, E% Y% G9 }
Input:. c6 R2 o+ l* T8 `7 h async5 I% |5 p* e* ^! {7 ^: e- z1 F* F- u+ B7 } bluray$ m& t+ ~0 F m1 ^0 s# [- g cache concat crypto data ffrtmpcrypt* t. f# V0 G$ [6 g$ P! e ffrtmphttp file ftp# y" l7 F( c0 A3 [- C( R0 u gopher5 H M. c' f' N" h, l hls6 V% q# `( I/ [0 K http) e7 J3 {8 w. Q httpproxy https& u/ e# Q+ u: y4 L- J; N mmsh mmst pipe rtmp; d, k" S6 s( ~7 Q/ j3 @$ `6 E; { rtmpe* B! o3 ^/ \2 x1 P0 B rtmps rtmpt rtmpte" ?+ A K* C/ d T% D rtmpts rtp) X3 J: Y& ~; S3 `% a, g& O& | srtp/ p3 Y0 j Y. {% o% e subfile6 a' C: G% u b$ K3 s7 u* M tcp+ ~4 {( D9 s p" C tls" y' z# f; b: C5 } udp/ f2 P) ], E, Y- Y udplite Output: crypto ffrtmpcrypt$ ~' k% }0 h, C: A2 w. e6 `2 w2 ` ffrtmphttp3 c) u5 d. T8 ]$ k* ~: ?- m file; Y+ W) b/ l S& W9 w( l8 v ftp gopher http httpproxy https icecast: O& |# b) O4 Y) F. B: j0 A3 s" C md5( `. d: T. \. K1 U5 ^ {8 J pipe prompeg1 y$ z( V: H7 a$ d% K rtmp0 O6 e% J8 w6 u; W; S: J rtmpe/ b$ ]/ s, ~6 d" ?) ?1 I( U rtmps( Z* y6 X3 C$ u: w5 R rtmpt3 Z1 P! q! S) | rtmpte rtmpts rtp srtp tee, G) e0 M l$ V+ F$ p+ \ tcp+ q: [ Q2 |9 i( u+ Y tls udp0 r0 {0 v7 j) U# I3 M udplite
E:\音视频\test-av>ffmpeg -filters Filters: c, ^0 j- a- l' a T.. = Timeline support .S. = Slice threading0 V8 A0 e! } U) R- ]( _* [ ..C = Command support A = Audio input/output. `6 ]7 V1 A/ r. I+ [ V = Video input/output N = Dynamic number and/or type of input/output8 G- U: P8 u- {9 I6 ] | = Source or sink filter
Pixel formats:9 w: [# Z- r: j% D* D; s I.... = Supported Input format for conversion .O... = Supported Output format for conversion ..H.. = Hardware accelerated format ...P. = Paletted format: L. y' ]- d! Y# S- r8 W* g0 s2 U ....B = Bitstream format8 {; |6 P4 n- M1 \7 q ~- ?+ K% d' q FLAGS NAME NB_COMPONENTS BITS_PER_PIXEL -----
Individual channels: NAME DESCRIPTION. ^4 f& ~. N5 P7 R FL front left, D3 M$ m1 s3 E9 C$ L( W/ Y6 C6 {6 E FR front right FC front center LFE low frequency BL back left BR back right/ [, e) I# L% i$ U$ ] FLC front left-of-center/ D, W$ l: `: C4 S7 O6 L1 W FRC front right-of-center BC back center SL side left SR side right% b# I1 ~. S: Q, g2 X TC top center TFL top front left TFC top front center) s l. K6 w% O6 M" g TFR top front right TBL top back left TBC top back center- @; c" l; E+ v# w; W, A5 k TBR top back right DL downmix left" G& U9 B3 ^$ {! d; V+ O DR downmix right' P4 v8 F) c+ [# t WL wide left4 ~% v: j3 |- Z WR wide right SDL surround direct left: o, y3 x* B! ^: Y& A1 n- F SDR surround direct right! C6 o6 [7 O! T+ ~0 g* h! A W LFE2 low frequency 2 Standard channel layouts:6 w- H0 |# c Z" ?* G f7 D6 W# }% g NAME DECOMPOSITION, j# g5 p" a- B$ @* C+ j mono FC stereo FL+FR+ M8 a5 _/ H8 R$ `& ~0 y% M 2.1 FL+FR+LFE) o+ H' c3 g2 p, D) m) L& U 3.0 FL+FR+FC 3.0(back) FL+FR+BC+ {' a, R& w& R) Q, W 4.0 FL+FR+FC+BC1 F, I8 h+ h5 Q. C$ { quad FL+FR+BL+BR5 ^4 d$ |- ^! N. j quad(side) FL+FR+SL+SR
name depth u8 8 s16 16' y* K5 g2 x( X s* m s32 32 flt 32: i% y, q0 w+ E0 ~: ], b- a dbl 64* u$ T1 G- L0 j7 Y$ i) _ u8p 8+ }: Y% c/ N* y; _, [5 N5 y s16p 16- |! E; Z, y4 p. y; G Y. R s32p 32 fltp 32% ?1 u' A6 ~( V: _/ x4 ? dblp 64 s64 64- L6 _# r) {; E0 R- C s64p 64' Y: q$ E) o/ N. t7 F+ L
name #RRGGBB AliceBlue #f0f8ff AntiqueWhite #faebd7* r2 C* @; ]: I Aqua #00ffff Aquamarine #7fffd4 Azure #f0ffff Beige #f5f5dc Bisque #ffe4c43 ~) V3 [; M2 i. m Black #000000 BlanchedAlmond #ffebcd. j9 L3 A+ \& Y: a2 A" @4 h Blue #0000ff) Z. V' M! k% m8 ^- v BlueViolet #8a2be2 Brown #a52a2a BurlyWood #deb887 三、ffmpeg音视频处理流程: 我们可以去ffmpeg官网介绍里面看到它的处理流程图:
为了说明这个处理过程,我们以下面一条命令来举例说明: ffmpeg -i test_1920x1080.mp4 -acodec copy -vcodec libx264 -s 1280x720 test_1280x720.flv说明:
暂时先分享总结这些命令,更多命令学习可以参考官网手册来学习: https://www.ffmpeg.org/ffmpeg.html由于篇幅原因,本次就暂时不分享关于ffplay来演示视频播放了,演示效果如下:
6 ~8 u8 C5 f9 i k- S |
对ffmpeg和ffplay用法是云里雾里,只从网上扒了几条命令用用。 |
微信公众号
手机版