ffmpeg命令行使用

  • 要什么要使用命令行呢?
    ffmpeg提供的功能几乎都能通过命令行使用,ffmpeg提供了丰富的选项可以对每一个环节进行配置。在写代码之前先用命令行参数验证可行性
  • 如何知道具体的选项还有哪些可选的配置呢?
    通过ffmpeg -h full 2>/dev/null > ffmpeg.txt导出所有选项的详细说明,可以在里面找到每个选项的详细说明,也可以直接阅读官方文档 ffmpeg-all
    想要知道ffmpeg的常规用法可以通过命令man ffmpeg或者阅读官方文档 ffmpeg
    关于日期格式、时间格式、视频大小缩写、帧率缩写、颜色、音频通道含义等可以通过命令man ffmpeg-utils或者阅读官方文档 ffmpeg-utils

下载

  • MacOS
$ brew install ffmpeg
  • Ubuntu
$ sudo apt install ffmpeg

Bash自动补全

ffmpeg-bash-completion

Help

我使用的FFmpeg版本如下:

ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 12.0.5 (clang-1205.0.22.9)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4_2 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-avresample --enable-videotoolbox
libavutil      56. 70.100 / 56. 70.100
libavcodec     58.134.100 / 58.134.100
libavformat    58. 76.100 / 58. 76.100
libavdevice    58. 13.100 / 58. 13.100
libavfilter     7.110.100 /  7.110.100
libavresample   4.  0.  0 /  4.  0.  0
libswscale      5.  9.100 /  5.  9.100
libswresample   3.  9.100 /  3.  9.100
libpostproc    55.  9.100 / 55.  9.100
命令 说明
ffmpeg -L 显示License
ffmpeg -version 显示当前版本
ffmpeg help -buildconf 显示编译此ffmpeg的configuration
ffmpeg help -formats 显示支持的文件格式,同时显示muxers和demuxers
ffmpeg help -muxers 显示支持的muxers格式
ffmpeg help -demuxers 显示支持的demuxers格式
ffmpeg help -devices 显示支持的设备,包括音视频设备
ffmpeg help -codecs 显示支持的格式,同时显示视频、音频、字幕、帧内编码、有损压缩和无损压缩的解编码支持情况
ffmpeg help -decoders 显示支持的解码器
ffmpeg help -encoders 显示支持的编码器
ffmpeg help -bsfs 显示支持的二进制流过滤器,例如h264_metadata、h264_mp4toannexb、hevc_mp4toannexb等
ffmpeg help -protocols 显示支持的可用的协议,区分Input和Output,例如file、http、hls、rtmp、rtp、pipe、tee等
ffmpeg help -filters 显示支持的可用的过滤器
ffmpeg help -pix_fmts 显示支持的可用的像素格式
ffmpeg help -layouts 显示支持的声道布局,例如mono、stereo、2.1、2.0、3.0、5.0、5.1等
ffmpeg help -sample_fmts 显示支持的音频采样格式,例如u8、s16、s32、flt等
ffmpeg help -colors 显示支持的颜色
ffmpeg help -sources device 列出输入设备的源
ffmpeg help -sinks device 列出输出设备的槽(节点)
ffmpeg help -hwaccels 显示可用的硬件加速方法

Usage

usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
  • options 全局参数
  • infile options 输入文件参数
  • infile 输入文件
  • outfile options 输出文件参数
  • outfile 输出文件

全局选项

参数 说明
-loglevel loglevel 设置日志登记,具体用法可以通过man ffmpeg查看,例如ffmpeg -loglevel verbose -i 1080p.mp4,可选:quiet panic fatal error warning info verbose debug trace
-v loglevel 设置日志登记,具体用法可以通过man ffmpeg查看,例如ffmpeg -v verbose -i 1080p.mp4,可选:quiet panic fatal error warning info verbose debug trace
-report 生成一个报告,报告的名字是ffmpeg自动生成的,例如ffmpeg -report -i 1080p.mp4,想要自定义文件以及日志等级可以使用宏FFREPORT,例如FFREPORT=file=ffreport.log:level=32 ffmpeg -i 1080p.mp4
-max_alloc bytes 设置通过ffmpeg的malloc函数系列设置在堆上分配块的最大大小限制。嵌入式设备可能会用到这个选项
-y 覆盖输出文件
-n 切勿覆盖输出文件
-ignore_unknown 忽略未知的流类型
-filter_threads 定义用于处理过滤器管道的线程数。每个管道将生成一个线程池,其中包含许多可用于并行处理的线程。默认是可用CPU的数量
-filter_complex_threads 定义用于处理filter_complex图的线程数。类似于filter_threads但仅用于-filter_complex图形。默认值为可用 CPU 的数量
-stats 编码期间打印进度报告
-max_error_rate maximum 在所有输入中设置解码帧失败的比例,当超过时ffmpeg将返回退出代码69。超过此阈值不会终止处理。值的范围是0到1之间的浮点数。默认值为2/3
-bits_per_raw_sample number 设置每个原始样本的位数
-vol volume 改变音量 ,volume默认值是256,也就是它把音量分为256等分,例如要把音量放大为原来的两倍(256*2):ffmpeg -vol 512 -y -i bugua.mp3 output.mp3

输入输出选项

Per-file main options

选项 说明 例子
-f fmt force format 设置输入容器是mp4 ffmpeg -i bugua.mp3 -f mp4 output.m4a
-c codec codec name 设置输入编码格式是ac3 ffmpeg -y -i bugua.mp3 -c ac3 output.m4a
-codec codec codec name 设置输入编码格式是ac3 ffmpeg -y -i bugua.mp3 -codec ac3 output.m4a
-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 设置只录制前50秒 ffmpeg -i bugua.mp3 -t 50 output.mp3
-to time_stop record or transcode stop time 设置只录制前50秒 ffmpeg -i bugua.mp3 -t 50 output.mp3
-fs limit_size set the limit file size in bytes 设置输出文件大小限制在0.1MB ffmpeg -y -i bugua.mp3 -fs 0.1MB output.mp3
-ss time_off set the start time offset 设置从第50秒开始录制 fmpeg -ss 50 -y -i bugua.mp3 output.mp3
-sseof time_off set the start time offset relative to EOF 设置从倒数第50秒开始录制 ffmpeg -sseof -50 -y -i bugua.mp3 output.mp3
-seek_timestamp 此选项使用-ss选项在输入文件中启用或禁用按时间戳搜索。默认情况下它是禁用的。如果启用,则-ss选项的参数被视为实际时间戳,并且不会被文件的开始时间偏移。这仅适用于不从时间戳 0 开始的文件,例如传输流 -
-timestamp time 在容器中设置录制时间戳
-metadata string=string 设置修改容器这一层的metadata 设置标题 ffmpeg -i in.avi -metadata title="my title" out.flv
-program title=string:st=number... 添加或者修改program的Metadata 设置program标题 ffmpeg -y -i 1080p.mp4 -program title="XXXXXX":st=1 -c copy output.mp4
-target type 指定目标文件类型 ("vcd", "svcd", "dvd", "dv" or "dv50" with optional prefixes "pal-", "ntsc-" or "film-") ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
-apad 音频填充(追加) 在音频文件的最后追加10秒静音 ffmpeg -y -i bugua.mp3 -af "apad=pad_dur=10" output.mp3
-frames number 设置要输出的帧数 只写入200帧 ffmpeg -i 1080p.mp4 -frames 200 -c copy output.mp4
-filter filter_graph 设置简单的filter(不对音视频内容进行任何处理的filter) 把视频帧的PTS设置为原来的0.5倍 ffmpeg -y -i 1080p.mp4 -filter:v "setpts=0.5*PTS" output.mp4
-filter_script filename read stream filtergraph description from a file -
-reinit_filter reinit filtergraph on input parameter changes -
-discard 允许从流中丢弃特定的流或帧。使用值all会丢弃所有的流,在解复用时从流中选择要丢弃的帧,并非所有解复用器都支持 去掉视频中的音频 ffmpeg -y -discard:a all -i 1080p.mp4 -c copy output.mp4
-disposition 设定特定的流作为默认流 使第二个音频流成为默认流 ffmpeg -i in.mkv -c copy -disposition

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有

上一篇:centos7修改屏幕分辨率


下一篇:8K视频指的什么?8K视频处理和工作原理分析