ffmpeg 基本用法

##ffmpeg主要组成部分

1、libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能,包含demuxers和muxer库; 2、libavcodec:用于各种类型声音/图像编解码; 3、libavutil:包含一些公共的工具函数; 4、libswscale:用于视频场景比例缩放、色彩映射转换; 5、libpostproc:用于后期效果处理; 6、ffmpeg:是一个命令行工具,用来对视频文件转换格式,也支持对电视卡实时编码; 7、ffsever:是一个HTTP多媒体实时广播流服务器,支持时光平移; 8、ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示; 在这组成部分中,需要熟悉基础概念有 容器(Container) 容器就是一种文件格式,比如flv,mkv等。包含下面5种流以及文件头信息。 流(Stream) 是一种视频数据信息的传输方式,5种流:音频,视频,字幕,附件,数据。 帧(Frame) 帧代表一幅静止的图像,分为I帧,P帧,B帧。 编解码器(Codec) 是对视频进行压缩或者解压缩,CODEC =COde (编码) +DECode(解码) 复用/解复用(mux/demux) 把不同的流按照某种容器的规则放入容器,这种行为叫做复用(mux) 把不同的流从某种容器中解析出来,这种行为叫做解复用(demux)

##ffmpeg的处理流程

1、FFmpeg程序把-i参数指定的若干文件内容读入到内存,按照输入的参数或者程序默认的参数来处理并且把结果写入到若干的文件中。输入和输出文件可以是计算机文件、管道、网络流、捕获设备等。 2、FFmpeg用libavformat包调用解复用器(demuxers)来读取输入文件中被编码的数据包(packets),如果有多个输入文件,FFmpeg以有效输入流的最小时间戳来同步, 3、然后解码器(decoder)从已编码的数据包中产生未被压缩的帧(frame),在那之后调用可选的过滤器。 4、这些帧被传递到编码器,编码器会产生新的编码包 5、把新的编码包传递给复用器(muxer)处理并且把结果写入到输出文件中。

#过滤器(Filter) 在多媒体处理中,filter的意思是被编码到输出文件之前用来修改输入文件内容的一个软件工具。如:视频翻转,旋转,缩放等。 语法:[input_link_label1]… filter_name=parameters [output_link_label1]… 1、视频过滤器 -vf 如input.mp4视频按顺时针方向旋转90度 ffplay -i input.mp4 -vf transpose=1 如input.mp4视频水平翻转(左右翻转) ffplay -i input.mp4 -vf hflip 2、音频过滤器 -af 实现慢速播放,声音速度是原始速度的50% offplay input.mp3 -af atempo=0.5

过滤器链(Filterchain) Filterchain = 逗号分隔的一组filter 语法:“filter1,filter2,filter3,…filterN-2,filterN-1,filterN” 顺时针旋转90度并水平翻转 ffplay -i input.mp4 -vf transpose=1,hflip

过滤器图(Filtergraph) 第一步: 源视频宽度扩大两倍。 ffmpeg -i jidu.mp4 -t 10 -vf pad=2*iw output.mp4 第二步:源视频水平翻转 ffmpeg -i jidu.mp4 -t 10 -vf hflip output2.mp4 第三步:水平翻转视频覆盖output.mp4 ffmpeg -i output.mp4 -i output2.mp4 -filter_complex overlay=w compare.mp4 是不是很复杂? 用带有链接标记的过滤器图(Filtergraph)只需一条命令

基本语法 Filtergraph = 分号分隔的一组filterchain “filterchain1;filterchain2;…filterchainN-1;filterchainN”

Filtergraph的分类 1、简单(simple) 一对一 2、复杂(complex)多对一, 多对多 简单过滤器图处理流程:

复杂过滤器图处理流程:

从图中可以发现复杂过滤器图比简单过滤器图少2个步骤,效率比简单高,ffmpeg建议尽量使用复杂过滤器图。

对于刚才用三步处理的方式,用过滤器图可以这样做: ffplay -f lavfi -

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值