ffmpeg - ffplay笔记

1.播放视频或音频
  1. 播放:ffplay test.mp4或者ffplay test.mp3
  2. 退出:q或者Escc
  3. 清空命令行:cls
  4. 前进后退:上下左右
  5. 跳转:鼠标右键
  6. 全屏:f
  7. 暂停:t或者空格
  8. 切换显示模式:w
2.查看属性
  1. ffprobe test.mp4
3.转换格式
  1. ffmpeg - i input.mov output.mp4
  2. 常见格式
 视频封装格式        视频文件格式
 AVI(Audio video Interleave)    AVI
 WMV(Windows Media Video)    WMV
 MPEG(Moving Picture Experts Group)  MPG MPEG VOB DAT 3GP MP4
 分M1PEG-1. MPEG-2 .MPEG-4    MKV
 Matroska        
 Real Video        RM RMVB
 QuickTime File Format     MOV
 Flash video        FLV
4.编码转码
  1. 编码方案(1080p):
  2. MP4封装:H264视频编码+AAC音频编码
  3. WebM封装:VP8视频编码+Vorbis音频编码(效果不好,油管采用方案)
  4. OGG封装:Theora视频编码+ Vorbis音频编码(开源)
  5. 音频编码:ffmpeg -i in.flac -acodec [libmp3lame] -ar 44100 -ab 320k -ac 2 out.mp3
  6. libmp3lame []表示不输也可以,默认编码器
  7. ar音频采样率,默认原音频
  8. ab音频比特率,默认128k
  9. ac音道数,默认原音频
  10. 视频压制ffmpeg -i sp.mov -s 1920x1080 -pix_fmt yuv420p -vcodec libx264 -preset medium -profile:v high -level:v 4.1 -crf 23 -r 30 -acodec aac -ar 44100 -ac 2 -b:a 128k out.mp4
  11. -s分辨率
  12. -pix_fmt颜色空间(YUV、NV、RGB...,参数可以ffmpeg -pix_fmt查看),网络视频一般采用这个空间
  13. -vcodec编码器,1ibx2B64软件编码,可支持硬件加速(gpu加速)
  14. -preset编码器预设,ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo,默认medium,录制视频用varyfast,压制视频用veryslow(往右时间长,压制效果好)
  15. -profile:v指定编码器配置,实时通信一般采用baseline,流媒体采用main,超清用high,越往右支持解析需要的要求硬件越高
  16. -level压缩比,从1~5.2,一般1080p用4.1
  17. -crf码率控制,取值:0...18...23...28...51。一般在18~28间,默认23,越往右压缩越狠
  18. 该方式画面均衡,但无法精确控制码率,对画面要求,文件大小无要求的场景
  19. -r 设置帧率
  20. -b:a === -ab,音频比特率
  21. 码率控制模式
  22. -qp,每帧严格遵守规定(画质最好,体积特别大,除非想无损压制视频,否则不会这样)
 无损压缩的例子(快速编码)
 ffmpeg -i input -vcodec libx264 -preset ultrafast -qp 0 output.mkv
 无损压缩的例子(高压缩比)
 ffmpeg -i input -vcodec libx264 -preset veryslow -qp 0 output.mkv
  1. -crf,浮动qp模式(一般用这种模式)
  2. -b,严格控制视频码率,设定多少输出多少
  3. 单遍编码:-qp,-crf默认:单遍编码,因此采用qp或者crf要搭配very slowly预设,更精准
  4. VBR编码:-b默认VBR编码(网络不好会造成花屏或黑屏)
  5. ABR编码:现在一般用ABR
  6. CBR编码:在ABR上加了一些指令(没人用)
5.合并、提取音视频
  1. 提取
  2. 提取单独视频:``ffmpeg -i in.mp4 -vcodec copy -an v.mp4
  3. 提取音频:ffmpeg -i in.mp4 -vcodec copy -vn a.m4a(mp3也可以)
  4. 一个视频多个音频:
 Stream #0:2[0x81]:Audio: ac3,48000 Hz,5.1,s16,384 kb/s
 Stream #0:3[0x82]:Audio: ac3,48000 Hz,5.1,s16,384 kb/s
 Stream #0:4[Ox80]:Audio: ac3,48000 Hz,5.1,s16,448 kb/s

单独提取,额外加上-map 0:3

  1. 合并:ffmpeg -i a.m4a -i v.mp4 -c copy out.mp4
  2. -c copy (== -codec copy 是-acodec和-vcodec的和)用于维持编码器,如果音视频格式不刚好,则需要转换
6.截取、连接音视频
  1. 截取ffmpeg -i in.mp3 -ss 00:01:00 -to 00:01:10 -acodec copy out.mp3
  2. -ss参数可以为00:00:12、00:12或者12都表示12秒
  3. -to表示结束时间,也可以用-t 10,表示往后截取10秒
  4. -sseof以末尾为起点,-sseof后面得跟具体的负数, 且得放在-i前面,比如截取in.mp4的最后10秒, 代码可以是: ffmpeg -sseof -10 -i in.mp4 out.mp4
  5. ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -c copy out.mp4
  6. 将 -ss放在 -i前面会启用关键帧技术(加速操作,但截取出来的视频起止时间不一定准确)
  7. 可以用:ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -c copy -copyts out.mp4
  8. 上述会保留时间戳,不会影响起止时间
  9. 连接ffmpeg -i "concat:01.mp4|02.mp4|03.mp4" -c copy out.mp4(这里没成功,可以将待拼接的mp4转为ts文件拼接为ts再转mp4)
  10. ffmpeg -i "concat:1.ts|2.ts" -c copy out.tsout.ts再转mp4
  11. 但是转ts后很糊,建议直接剪辑软件拼
  12. up推荐了一个剪辑软件Avidemux
7.截图、水印、动图
  1. 截图:截取第5s处第一帧的画面ffmpeg -i in.mp4 -ss 5 -vframes 1 img.jpg
  2. 水印:ffmpeg -i in.mp4 -i logo.png -filter_complex "overlay=20:20" out.mp4 (overlay是偏移左边和右边的像素值)
  3. 动图ffmpeg -i in.mp4 -ss 7.5 -to 8.5 -s 640x320 -r 15 out.gif
8.录屏和直播
  1. 录屏不推荐,推荐obs
  2. 直播推流:ffmpeg -re -i rec.mp4 按照网站要求编码 -f flv "你的rtmp地址/你的直播码"
  3. -re按视频帧率推流
  4. -f指定格式(force format)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值