FFmpeg应用知识介绍

简介

1、FFmpeg既是一款音视频编解码工具,同时也是一组音视频编解码开发套件

2、FFmpeg框架基本组成

  • AVFormat 封装和解封装模块库 如MP4、FLV、KV、TS等文件封装格式,RTMP、RTSP、MMS、HLS等网络协议封装格式,可以在该模块库中增加自己的封装处理模块。
  • AVCodec 编解码模块库 支持MPEG4、AAC、MJPEG等自带的媒体编解码格式,还可支持第三方编解码器下x264、x265、libmp3lame等,可增加自己的编码格式的编解码模块(或硬件编解码)
  • AVFilter 滤镜模块 提供一个通用的音频、视频、字幕等滤镜处理框架,滤镜框架可以有多个输入和多个输出
  • swscale 视频图像转换计算模块 进行图像缩放和像素格式转换
  • swresample 音频转换计算模块 进行高级别的音频重采样,操作音频采样、音频通道布局转换与布局调整
  • AVDevice
  • AVUtil

3、FFmpeg工具

  • ffmpeg 用于音视频编解码,工作流程:解封装(Demuxer)——解码(Decoder)——编码(Encoder)——封装(Muxer),详解步骤:读取输入源;进行音视频的解封装;解码每一帧音视频数据;编码每一帧音视频数据;’进行音视频的重新封装;输出到目标
  • ffplay 播放器工具(需要SDL进行基础支撑),用于音视频播放、可视化分析 ,提供音视频显示和播放相关的图像信息、音频的波形信息等,作为测试工具使用
  • ffprobe 多媒体分析工具,用于音视频内容分析,可以从媒体文件或者媒体流中获取想要了解的媒体信息,如音频参数、视频参数、媒体容器的参数信息等,可以分析媒体文件中每个包的长度、包的类型、帧的信息等

5、FFmpeg编码支持与定制
FFmpeg只是提供一套基础的框架,所有的编码格式、文件封装格式与流媒体协议均可作为一个模块挂载到FFmpeg框架中,增减对应的编译参数选项可以对FFmpeg支持的格式进行裁剪

FFmpeg工具常用命令示例

1、ffmpeg常用命令

  • 信息查询部分
  • 公共操作参数部分
  • 文件主要操作参数部分
  • 视频操作参数部分
  • 音频操作参数部分
  • 字幕操作参数部分
ffmpeg --help #命令基础信息
ffmpeg --help long #高级参数部分
ffmpeg --help full #全部帮助信息
ffmpeg -L #支持的license协议
ffmpeg -version #查看ffmpeg版本
ffmpeg -formats #查看支持的文件格式
ffmpeg -codecs #查看支持的编解码全部信息
ffmpeg -encoders
ffmpeg -decoders
ffmpeg -filters #查看支持的滤镜
ffmpeg -h muxer=flv #查看某类型详细参数
ffmpeg -h encoder=h264
ffmpeg -i ./input.rmvb -vcodec mpeg4 -b:v 200k -r 15 -an output.mp4 #转码

2、ffprobe常用命令

ffprobe -show_data -show_packets input.flv #查看多媒体数据包信息
ffprobe -show_format output.mp4 #查看多媒体封装格式
ffprobe -show_frames input.flv #查看多媒体文件中的帧信息
ffprobe -show_streams input.flv #查看多媒体文件中的流信息
ffprobe -of xml[/JSON/INI/CSV/FLAT] -show_streams input.flv #XML格式化输出
ffprobe -show_frames -select_streams v -of xml input.mp4 #选择查看流媒体信息 音频(a) 视频(v) 字幕(s)

3、ffplay常用命令

ffplay -ss 10 -t 10 input.mp4 #从10秒开始播放10秒
ffplay -window_title "output" output.mp4 #显示自定义标题
ffplay -window_title "test" rtmp://test.com/live/stream #打开网络直播流
ffplay -window_title "test" -vf "subtitles=input.srt" output.mp4 #添加字幕文件到播放数据中
ffplay -showmode 1 output.mp3 #播放音频波形
ffplay-debug vis_mb_type -ss 10 -t 10 -autoexit output.mp4 #显示宏块
ffplay -vismv pf[/bf/bb] output.mp4 #显示运动估计信息 pf P帧向前 bf B帧向前 bb B帧向后
ffplay -flags2 +export_mvs -ss 10 output.mp4 -vf codecvie=mv=pf+bf+bb #滤镜方式显示运动估计信息(使用趋势)

视频文件切片

#将MP4文件切割为MP4切片
./ffmpeg -re -i input.mp4 -c copy -f seqment -seqment_format mp4 output_%d.mp4 

#查看第一份切片的最后的时间戳
ffprobe -v quiet -show_packets -select_streams v output_0.mp4 2 > x |grep pts_time |tail -n 3 

#生成ffconcat格式索引文件(常用于虚拟轮播等场景)
./ffmpeg -re -i input.mp4 -c copy -f seqment -seqment_format mp4 -seqment_list_type ffconcat -seqment_list output.lst output_%d.mp4 

#生成FLAT格式索引文件
./ffmpeg -re -i input.mp4 -c copy -f seqment -seqment_format mp4 -seqment_list_type flat -seqment_list output.txt output_%d.mp4 

#生成CSV格式索引文件(用于类数据库操作,也可用于根据CSV生成视图图像)
./ffmpeg -re -i input.mp4 -c copy -f seqment -seqment_format mp4 -seqment_list_type csv -seqment_list output.csv output_%d.mp4 

#生成M3U8格式索引文件(HLS./ffmpeg -re -i input.mp4 -c copy -f seqment -seqment_format mp4 -seqment_list_type m3u8 -seqment_list output.m3u8 output_%d.mp4 

#使切片时间戳归0
./ffmpeg -re -i intput.mp4 -c copy -f seqment -seqment_format mp4 -reset_timestamps 1 output_%d.mp4 

#按照时间点切片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值