FFmpeg常用命令

FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。本文将简单介绍FFmpeg库的基本目录结构及其功能,然后会介绍一些常用的FFmpeg命令,了解FFmpeg到底能做些什么。

音视频基本处理流程

对于音视频的处理基本遵循下面的流程:

FFmpeg目录及功能

libavcodec: 提供了一系列编码器的实现。

libavformat: 实现在流协议,容器格式及其本IO访问。

libavutil: 包括了hash器,解码器和各利工具函数。

libavfilter: 提供了各种音视频过滤器。

libavdevice: 提供了访问捕获设备和回放设备的接口。

libswresample: 实现了混音和重采样。

libswscale: 实现了色彩转换和缩放工能。

信息查询命令

命令作用
FFmpeg -version显示版本
-formats显示可用的格式(包括设备)
-demuxers显示可用的demuxers
-muxers显示可用的muxers
-devices显示可用的设备
-codecs显示已知的所有编解码器
-decoders显示可用的解码器
-encoders显示所有可用的编码器
-bsfs显示可用的比特流filter
-protocols显示可用的协议
-filters显示可用的过滤器
-pix_fmts显示可用的像素格式
-sample_fmts显示可用的采样格式
-layouts显示channel名称和标准channel布局
-colors显示识别的颜色名称

设备列表

ffmpeg -f avfoundation -list_devices true -i “”

查看Mac上支持的设备列表

录屏

ffmpeg -f avfoundation -i 1 -r 30 out.yuv

-f 指定使用 avfoundation 采集数据。 -i 指定从哪儿采集数据,它是一个文件索引号。 -r 指定帧率。`

录屏+声音

ffmpeg -f avfoundation -i 1:0 -r 29.97 -c:v libx264 -crf 0 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k out.flv

-i 1:0 冒号前面的 “1” 代表的屏幕索引号。冒号后面的"0"代表的声音索相号。 -c:v 与参数 -vcodec 一样,表示视频编码器。c 是 codec 的缩写,v 是video的缩写。 -crf 是 x264 的参数。 0 表式无损压缩。 -c:a 与参数 -acodec 一样,表示音频编码器。 -profile 是 fdk_aac 的参数。 aac_he_v2 表式使用 AAC_HE v2 压缩数据。 -b:a 指定音频码率。 b 是 bitrate的缩写, a是 audio的缩与。

抽取音频和视频

ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流 ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流

vcodec: 指定视频编码器,copy 指明只拷贝,不做编解码。

an: a 代表视频,n 代表 no 也就是无音频的意思。

acodec: 指定音频编码器,copy 指明只拷贝,不做编解码。

vn: v 代表视频,n 代表 no 也就是无视频的意思。

转格式

ffmpeg -i test.mp4 -vcodec copy -acodec copy test.flv

音频、视频都直接 copy,只是将 mp4 的封装格式转成了flv

音视频合并

ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy out.mp4

视频和音频直接拷贝,合成一个mp4格式文件

YUV转H264

ffmpeg -f rawvideo -pix_fmt yuv420p -s 320x240 -r 30 -i out.yuv -c:v libx264 -f rawvideo out.h264

合并

首先创建一个 inputs.txt 文件,文件内容如下: file '1.flv’ file '2.flv’ file '3.flv’ 然后执行下面的命令: ffmpeg -f concat -i inputs.txt -c copy output.flv

视频剪切

ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切视频 -ss 开始时间 -t 持续时间

视频缩小一倍

ffmpeg -i out.mp4 -vf scale=iw/2:-1 scale.mp4 -vf scale 指定使用简单过滤器 scale,iw/2:-1 中的 iw 指定按整型取视频的宽度。 -1 表示高度随宽度一起变化。

视频图片互转

ffmpeg -i test.flv -r 1 -f image2 image-%3d.jpeg //视频转JPEG ffmpeg -i out.mp4 -ss 00:00:00 -t 10 out.gif //视频转gif ffmpeg -f image2 -i image-%3d.jpeg images.mp4 //图片转视频

添加水印

ffmpeg -i out.mp4 -vf “movie=logo.png,scale=64:48[watermask];[in][watermask] overlay=30:10 [out]” water.mp4

-vf中的 movie 指定logo位置。scale 指定 logo 大小。overlay 指定 logo 摆放的位置

直播推流

ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName

直播拉流保存

ffmpeg -i rtmp://server/live/streamName -c copy dump.flv



作者:MzDavid
链接:https://www.jianshu.com/p/7a719d48f3f0
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值