FFmpeg工具使用及参数说明

FFmpeg中常用的工具主要是ffmpeg、ffprobe、ffplay,它们分别用作多媒体的编解码工具、内容分析工具和播放器。

1 ffmpeg常用命令

在很多场景下转码使用的是ffmpeg,通过ffmpeg –help可以看到ffmpeg常见命令大概分为6个部分,具体包括:
ffmpeg信息查询部分
公共操作参数部分
文件主要操作参数部分
视频操作参数部分
音频操作参数部分
字幕操作参数部分
(1)ffmpeg的封装转换
ffmpeg的封装转换功能包含在AVFormat模块中,通过libavformat库进行Mux和Demux操作。通过查看ffmpeg –help full信息,找到AVFormatContext参数部分,该参数下的所有参数均为封装转换可使用的参数。ffmpeg AVFormatContext的主要参数及说明。
这里写图片描述
这些都是通用的封装、解封装操作时使用的参数,上述参数可以与对应的命令行参数搭配使用。
(2)ffmpeg的转码参数
ffmpeg编解码部分的功能主要是通过模块AVCodec来完成的,通过libavcodec库进行Encode与Decode操作。AVcodecContext参数列表信息。
通过命令ffmpeg –help full可以看到AVCodecContext参数列表信息。
这里写图片描述
举例:使用ffmpeg命令进行转码操作

ffmpeg -i input1.rmvb -vcodec mpeg4 -b:v 200k -r 15 -an output.mp4

输出信息:

ffmpeg version 3.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 7.2.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --e
nable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libblur
ay --enable-libfreetype --enable-libmp3lame --enable-libopenjpeg --enable-libopu
s --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --ena
ble-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-lib
x264 --enable-libx265 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp
--enable-libvidstab --enable-libvorbis --enable-d3d11va --enable-nvenc --enable-
dxva2 --enable-avisynth --enable-libmfx
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.100 / 57. 64.100
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
[rm @ 00000000005e6c40] Invalid stream index 2 for index at pos 1925687
Input #0, rm, from 'input1.rmvb':
  Metadata:
    title           : 音乐之声
    author          : 5156edu.com收集整理
    copyright       :
    comment         :
    ASMRuleBook     : #($Bandwidth >= 0),Stream0Bandwidth = 12403, Stream1Bandwi
dth = 87597;
    Audiences       : Easy RealMedia Tool's Audience;
    audioMode       : music
    Creation Date   : 9/4/2007 1:00:35
    Description     : This File is Created by Easy RealMedia Tools@!
    Email           : rick@redcheek.net
    Generated By    : Easy RealMedia Tools V1.8x
    HomeWeb         : http://redcheek.net
    Keywords        :
    Modification Date: 9/4/2007 1:00:35
    videoMode       : normal
  Duration: 00:02:18.95, start: 0.000000, bitrate: 110 kb/s
    Stream #0:0: Audio: cook (cook / 0x6B6F6F63), 11025 Hz, stereo, fltp, 12 kb/
s
    Stream #0:1: Video: rv40 (RV40 / 0x30345652), yuv420p, 576x324, 87 kb/s, 30
fps, 30 tbr, 1k tbn, 1k tbc
Output #0, mp4, to 'output.mp4':
  Metadata:
    title           : 音乐之声
    author          : 5156edu.com收集整理
    copyright       :
    comment         :
    ASMRuleBook     : #($Bandwidth >= 0),Stream0Bandwidth = 12403, Stream1Bandwi
dth = 87597;
    Audiences       : Easy RealMedia Tool's Audience;
    audioMode       : music
    Creation Date   : 9/4/2007 1:00:35
    Description     : This File is Created by Easy RealMedia Tools@!
    Email           : rick@redcheek.net
    Generated By    : Easy RealMedia Tools V1.8x
    HomeWeb         : http://redcheek.net
    Keywords        :
    Modification Date: 9/4/2007 1:00:35
    videoMode       : normal
    encoder         : Lavf57.56.100
    Stream #0:0: Video: mpeg4 ( [0][0][0] / 0x0020), yuv420p, 576x324, q=2-31, 2
00 kb/s, 15 fps, 15360 tbn, 15 tbc
    Metadata:
      encoder         : Lavc57.64.100 mpeg4
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
Stream mapping:
  Stream #0:1 -> #0:0 (rv40 (native) -> mpeg4 (native))
Press [q] to stop, [?] for help
frame=  215 fps=0.0 q=6.5 size=     516kB time=00:00:14.26 bitrate= 296.3kbits/s
frame=  437 fps=435 q=6.0 size=     912kB time=00:00:29.06 bitrate= 257.0kbits/s
frame=  656 fps=436 q=10.4 size=    1310kB time=00:00:43.66 bitrate= 245.8kbits/
frame=  898 fps=448 q=12.8 size=    1769kB time=00:00:59.80 bitrate= 242.3kbits/
frame= 1151 fps=459 q=15.5 size=    2185kB time=00:01:16.66 bitrate= 233.5kbits/
frame= 1410 fps=469 q=10.1 size=    2554kB time=00:01:33.93 bitrate= 222.7kbits/
frame= 1659 fps=473 q=4.6 size=    2923kB time=00:01:50.53 bitrate= 216.7kbits/s
frame= 1918 fps=479 q=4.5 size=    3326kB time=00:02:07.80 bitrate= 213.2kbits/s
frame= 2040 fps=480 q=5.4 Lsize=    3514kB time=00:02:15.93 bitrate= 211.8kbits/
s dup=11 drop=1181 speed=  32x
video:3504kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing
overhead: 0.274420%

从输出信息中可以看到,参数发生了参数发生了改变,具体如下:
转封装格式从RMVB格式转换为MP4格式
视频编码从rv40 转换为mpeg4 格式
视频码率从原来的87 kb/s转换为200 kb/s
视频帧率从原来的30fps转换为15fps
转码后的文件中不包括音频(-an参数)

2 ffprobe常用命令

ffprobe多媒体信息查看工具主要用来查看多媒体文件的信息。ffprobe常用的参数比较多,可以通过ffprobe –help来查看详细的帮助信息。
列举几个例子。
(1)查看多媒体数据包信息,多媒体数据包信息使用PACKET标签括起来。

ffprobe -show_packets input.flv

(2)查看包中的具体数据

ffprobe -show_data -show_packets input.flv

(3)查看多媒体封装格式,使用FORMAT标签括起来

ffprobe -show_format output.mp4

(4)查看视频文件中的帧信息,使用FRAME标签括起来

ffprobe -show_frames input.flv

(5)查看多媒体文件中的流信息,使用STREAM标签括起来

ffprobe -show_streams input.flv

如果要进行格式化的显示,需要用到ffprobe -print_format或者ffprobe -of参数来进行相应的格式输出,支持多种格式输出,包括XML、INI、JSON、CSV、FLAT等。

3 ffplay常用命令

FFmpeg中通常使用ffplay作为播放器,其可以通过ffplay –help进行查看帮助信息。
举例:
从视频的第30秒开始播放,播放10秒钟的文件

ffplay -ss 30 -t 10 input.mp4

如果希望视频播放时播放器的窗口显示标题为自定义标题

ffplay -window_title "Hello World.This is a sample" output.mp4

使用ffmpeg打开网络直播流

ffplay -window_title "播放测试" rtmp://up.v.test.com/live/stream

另外,ffplay还有一些高级参数以及数据可视化分析应用。
参考文献:
[1] 刘歧,赵文杰.FFmpeg从入门到精通[M].北京:机械工业出版社,2018:30-60.

猜你喜欢

转载自blog.csdn.net/davebobo/article/details/80685328