ffmpeg:
Hyper fast Audio and Video encoder
超快音视频编码器(类似爱剪辑)
ffplay:
Simple media player简单媒体播放器
ffprobe:
Simple multimedia streams analyzer
简单多媒体流分析器
命令行使用
Ffmpeg/ffplay/ffprobe -h(-h/-h long/-h full/ -h type==name) 查看信息
usage:
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
ffplay [options] input_file
ffprobe [OPTIONS] [INPUT_FILE]
常用模块:AVFormat\AVCodec
Ffmpeg常用命令
信息查询
ffmepg --help/--help long/--help full 查询基础信息
Ffmpeg -L 查看协议
Ffmpeg -version 查看版本
Ffmpeg -formats 查看封装格式
Ffmpeg -encoders 查看编码格式
Ffmpeg -decoders 查看解码格式(第一列包含6个字段,第一个表示此编码器为音频、视频、字幕(V/A/S),第二段表示帧级别的多线程支持(F),第三个字段表示为分片级别的多线程(S),第四个字段表示该编码为实验版本(X),第五个字段表示dra horiz band模式支持(B),第六个字段表示直接渲染模式支持(D))
Ffmpeg -filters 产看滤镜种类(第一列包含3个字段,第一个字段是时间轴支持,第二个字段是分片线程处理支持,第3个字段是命令支持;第二列是滤镜名;第三列是转换方式,如音频转音频,创建音频,视频转视频,创建视频,第四列滤镜作用)
Ffmpeg -h muxer(也可以是demuxer\encoder\decoder)=xx(具体名称)查看封装其参数
公共操作
文件参数操作
视频操作参数
封装参数
Ffmpeg -i [input] -movflags dash [oupu] 生成DASH格式,里边主要以sidx\moof\mdat 容器格式为主
Ffmpeg -i [inout] -movflags faststart [out] 可以将moov容器移到mdat前面
解封装参数
封装参数
Ffmpeg -re -i [inpput] -movflags isml+frag_keyframe -f ismv Stream 创建直播流
音频操作参数
字幕操作参数
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
常用参数
主要参数
-i 设定输入流
-f 设定输出格式(format)
-ss 开始时间
-t 时间长度
视频参数
-vframes 设置要输出的视频帧数
-b 设置音视频加起来码率(-b:v 200 将视频码率设置200,-b:a 200 将音频设置200kb/s)
-vcodec 设置编码格式(-vcodec mpeg4 视频编码格式设置为mpeg4,如果为-vcodec copy 表示原始编解码数据必须被拷贝)
-r 设置视频帧率(-r 15 设置为15帧每秒)
-s 640x480(640x480可以用预设的vga代替)设置画面宽与高(分辨率)
-vf scale=640:480也可以实现改变分辨率
-vn 不处理视频
-vf 视频过滤器
-vf crop=iw/3:ih:0:0(裁剪操作)
-aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777
-fs 10MB 指定最大输出文件大小为10MB
Eg:ffmpeg -i test.mp4 -vframes 300 -b:v 300k -r 30 -s 640x480 -aspect 16:9 -vcodec libx265
音频参数
-acodec 设置音频编码格式
-an 关闭声音
-aframes 设置要输出的音频帧数
-af 音频过滤器
-ac 设定声音的Channel数
-ar 设定采样率
Eg:ffmpeg -i test.mp4 -b:a 192k -ar 48000 -ac 2 -acodec libmp3lame -aframes 200 out2.mp3
封装格式参数存储在AVFormatsContext内
编解码格式参数存储在AVCodecContext内
Ffprobe 常用命令
Ffprobe 为多媒体信息查看工具,主要查看多媒体文件的信息
Usage:ffprobe[OPTION] [INPUT_FILE]
Ffprobe --help 查看详细信息
Ffprobe -show_packets input.flv 查看多媒体数据包信息(查看的多媒体数据包信息使用PACKET标间括起来,包含信息如下)
Ffrobe -show_data -show_packets input.flv 查看多媒体包里的具体数据
Ffprobe -show_format output.mp4 查看你多媒体的封装格式,使用FARMAT标签括起来
Ffprobe -show_frame input.flv 查看视频文件中的帧信息,输出的帧信息使用FRAME标签括起来
Ffprobe -show_sreams output.mp4 可以查看文件中的流信息,使用STREAM标签括起来
Ffprob是以键值对的方式打印多媒体内容的,但也可以输出不同格式(XML\INI\JSON\CV\FLAT)
Ffprobe -of xml(可以替换为INI\JSON等) -show_streams input.flv
Ffprobe -show_frame -select_streams v -of xml input.mp4之查看a\v\s的信息)
Ffplaybu仅仅是播放器,同时也是测试ffmpeg的codec引擎、format引擎,以及filter引擎,并且还可以进行可视化的媒体参数分析
Ffplay 常用命令
Ffplay --help 查看信息
Ffplay -ss 30 -t 10 input.mp4 从30秒开始,播放10秒
Ffplay -window_title ”hello,world” output.mp4
Ffplay -window_title ”hello,world” rtmp://up.v.test.vom/live/stream 打开网络直播流
Time ffplay -window_title “ziwojieshao” -ss 20 -t 10 -autoexit output.mp4 time命令查看命令运行事件
-vst 3 -ast 5 当有多个视频流时,可以指定流
Ffplay -window_title “hello” -vf “subtitle=input.srt” ouput.mp4 -vf 表示加上字幕
Ffplay 作为可视化工具
Ffplay -showmode 1 output.mp3 播放音频波形示例
Ffplay -debug vis_mb_type -windoe_title “ show” -ss 20 -t 10 -autoexit output.mp4 显示视频宏块,输出信息以不同颜色表示
Ffplay -vismv pf output.mp4 查看 B帧预测信息和P帧预测信息