对于ffmpeg使用命令行 之前一直是通过百度(羞耻),一边找 一边用 感觉写起来很麻烦 就在这个记录下 以后复习方便
众所周知,有三个程序可以从官网直接运行。 一个是ffmpeg.exe ffplay.exe ffprobe.exe
关于ffmpeg的官网里边 一般提供三种(static shared dev)
第一个static之前提供的三个程序 而别人把每一个都放在一起dll集成了进去 程序的大小相对较大
第二个shared 这三个程序也程序 只是大小要小得多 因为它也提供了各种各样的东西dll
第三个完全适用于开发人员 提供了lib以及头文件
在这里,我们将直接讨论如何使用提供的三个程序(直接点是无用的,哈哈 直接在命令行使用)
ffmpeg用于转码的工具 ffplay用于播放 ffprobe用于查看文件格式
**************************************************************************************************************************************
首先我们来看看ffmpeg
http://ffmpeg.org/ffmpeg.html 官方说明
我自己输入 ffmpeg -h
首先会显示ffmpeg的版本 编译这个用的GCC的版本 编译前configure的选项 之后依赖各种库的版本
显示基本信息后 告诉你怎么用
usage: ffmpeg[options][[infile options]-i infile]...{[outfile options]outfile}...
当然,我们也可以活用help信息
Getting help:
-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. 当然,你想仔细看。 详细描述选项,请参阅man ffmpeg。
让我们来看看每个选项(然后一个接一个地尝试)
Print help / information / capabilities:
-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 显示支持设备(这里只显示很大范围) 具体设备不会显示 比如我输入ffmpeg -devices 就像下面的输出一样)
Devices:
D. = Demuxing supported 可以理解为输入设备(我们可以理解) 解封装是获取流 其实这个设备做的也是获取流的事)
.E = Muxing supported 可理解为输出设备(同理) 输出设备采用流量 类似于包装)
--
E caca caca (color ASCII art) output device
D dshow DirectShow capture
D lavfi Libavfilter virtual input device
E sdl,sdl2 SDL2 output device
D vfwcap VfW video capture
-codecs show available codecs 显示支持的编解码器(看清楚 编解码器)
需要注意的是的是什么? D,E,V,A,S,I,L,S一种意思
D... = Decoding supported 解码
.E... = Encoding supported 编码
..V... = Video 电脑 codec 视频
..A... = Audio codec 音频
..S... = Subtitle codec 字幕
...I.. = Intra frame-only codec 帧内编解码器
...L. = Lossy compression 有损
...S = Lossless compression 无损
-decoders show available decoders 显示支持的解码器
-encoders show available encoders 显示支持的编码器
-bsfs show available bit stream filters 比特流过滤器特流过滤器
-protocols show available protocols 显示支持协议
-filters show available filters 显示可用过滤器(请注意以下含义) 现在还是不明白什么意思。 找代码看看)
Filters:
T.. = Timeline support
.S. = Slice threading
..C = Command support
A = Audio input/output
V = Video input/output
N = Dynamic number and/or type of input/output
| = Source or sink filter
-pix_fmts show available pixel formats 显示可用像素格式
Pixel formats:
I... = Supported Input format for conversion 输入格式支持转换
.O... = Supported Output format for 电脑 conversion 支持转换输出格式
..H.. = Hardware accelerated format 硬件加速格式
...P. = Paletted format 调色格式
...B = Bitstream format 位流格式
以下是输出格式
FLAGS NAME (标志名称)NB_COMPONENTS (组成数量 yuv420 有三个组成部分) BITS_PER_PIXEL(每个像素占位数)
-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 设定log等级 \\"quiet\\" \\"panic\\" \\"fatal\\" \\"error\\" \\"warning\\" \\"info\\" \\"verbose\\" \\"debug\\" \\"trace\\"
补充说明: 电脑 Flags can also be used alone by adding a ’ ’/’-’ prefix to set/reset a single flag without affecting other flags or changing loglevel. When setting both flags and loglevel, a ’ ’ separator is expected between the last flags value and before loglevel.
意思是也可以单独使用标志,添加‘ 在不影响其他标志或更改日志级别的情况下,设置/重置单个标志。在设置标志和日志级别时,需要在最后一个标志值和日志级别之间使用。
eg:ffmpeg -loglevel repeat level verbose -i input output
-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 过滤器复合体的线程数 (后边要加 数字
电脑