ffmpeg常用指令

ffmpeg 数据处理流程

demuxer
decoder
encoder
muxer
输入文件
编码数据包
解码后数据帧
编码数据包
输出文件

1.常用查询指令

-version        #显示版本
-demuxers       #显示可用的demuxers
-muxers         #显示可用的muxers
-devices        #显示可用的设备
-codecs         #显示所有编解码器
-decoders       #显示可用的解码器
-encoders       #显示所有的编码器
-bsfs           #显示比特流filter
-formats        #显示可用的格式
-protocols      #品示可用的协议
-filters        #显示可用的过滤器
-pix_fmts       #品示可用的像素格式
-sample_fmts    #显示可用的采样格式
-layouts        #显示channel名称
-colors         #显示识别的颜色名称

2.录制指令

#查询支持的设备列表
ffmpeg -f avfoundation -list_devices true -i ""
#录制屏幕
ffmpeg -f avfoundation -i 0 -r 30 out.yuv
#-f:指定使用avfoundation采集数据
#-i:指定从哪里采集数据,0是我的屏幕索引值 索引值从上一步的输出得到
#-r:指定帧率

#播放
ffplay -s 5120x2880 -pix_fmt uyvy422 out.yuv
#yuv数据不包含分辨率和像素格式信息
#所以需要通过-s指定分辨率
#通过-pix_fmt指定像素格式
#视频分辨率和像素格式 在开启录制的时候,控制台会输出(注意)
#录制麦克风
ffmpeg -f avfoundation -i :0 out.wav
#-f:指定使用avfoundation采集数据
#-i:指定从哪里采集数据,0是我的麦克风索引值 索引值从第一步的输出得到

3.分解/复用指令(转码)

#MP4转FLV(仅改变封装格式)
ffmpeg -i in.mp4 -vcodec copy -acodec copy out.flv
#仅抽取视频
ffmpeg -i in.mp4 -vcodec copy -an out.h264
#仅抽取音频
ffmpeg -i in.mp4 -vn -acodec copy out.aac

4.处理原始数据

# 提取YUV数据
ffmpeg -i in.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
#-c:v 指定视频的编码方式
#-pix_fmt 指定像素格式

#播放
ffplay -s 1920x1080 -pix_fmt yuv420p out.yuv
#提取PCM数据
ffmpeg -i in.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
#-vn 不要视频
#-ar 音频采样率AudioRate
#-ac 声道数量
#-f 数据格式 s16le s:有符号的 16le:16位小端编码

#播放
ffplay -ar 44100 -ac 2 -f s16le out.pcm
#PCM只是音频数据,不包含采样率、声道数、数据格式这些基础信息
#所以需要使用-ar -ac -f 告诉播放器该PCM的信息,否则播放器不知道如何播放PCM

5.裁剪与合并指令

#视频长度裁剪
ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts
#-ss 开始时间
#-t 持续时间(单位:秒)

#视频拼接
ffmpeg -f concat -i merge.txt merge.flv
#-i *.txt 文件列表
txt的内容格式:
file '1.ts'
file '2.ts'

6.图片/视频互转指令

#视频转图片
mkdir images && \
ffmpeg -i in.mp4 -r 1 -f image2 ./images/image-%3d.jpeg
#-r 指定帧率 1代表 一秒一张
#-f 指定多媒体格式
#image-%3d.jpeg %3d数字索引

#图片转视频
ffmpeg -i ./images/image-%3d.jpeg img.mp4

7.推流/拉流指令(直播类)

#推流
ffmpeg -re -i in.mp4 -c copy -f flv rtmp://******
#-re 减慢帧率速度,保持帧率同步,否则会尽快的推送
#-i 需要推送的流资源
#-c 推送音频和视频 copy 直接拷贝流,不转码
#-f 指定推送的流格式
#rtmp://****** 服务器地址

#拉流
ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8 -c copy dump.fly
#-i 拉流地址
#-c 音视频不转码直接copy
#dump.flv 拉流的格式要与推流的格式一致

8.滤镜指令

滤镜处理过程
filter
encoder
Decoded Frames
Filtered Frames
Encoded Data
滤镜可以完成的事情:
  1. 去水印
  2. 加水印
  3. 画中画
  4. 裁剪
  5. 倍速
#视频画面裁剪
ffmpeg -i in.mp4 -vf crop=in_w-100:in_h-100:x=0:y=0 -c:v libx264 -c:a copy out.mp4
#-vf 使用视频滤镜
#crop 裁剪滤镜
#in_w-100:in_h-100:x=0:y=0 输入宽度减100,输入高度减少100,从(0,0)开始裁剪,不指定x,y默认从中心裁剪
#-c:v 指定视频的编码器
#-c:a 指定视频的编码器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SensWong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值