https://ffmpeg.xianwaizhiyin.net/base-ffmpeg/ffmpeg-cmd-type.html

https://www.bilibili.com/read/cv22938836/

https://mp.weixin.qq.com/s/jHPx7iCZt6kc_0vlPWXUeQ

一、概述

ffmpeg -help即可查看ffmpeg相关的命令http://m.blog.chinaunix.net/uid-11344913-id-5750173.html
https://blog.51cto.com/u_15639793/5297428

通过ffmpeg -help full > D:\1.txt 可以将参数信息全部输出保存到文件。

通过ffmpeg -help 可以看到ffmpeg命令参数大概分为六部分:

  1. Print help / information / capabilities (打印帮助、信息、能力,就是告诉你ffmpeg能干些啥。)
  2. Global options (affect whole program instead of just one file (全局参数,影响的是整个程序而不只一个文件)
  3. Per-file main options(每个文件的主要参数)
  4. Video options(视频参数)
  5. Audio options(音频参数)
  6. Subtitle options(字幕)

如果想获得高级参数部分,可以通过使用ffmpeg –help long参数来查看,如果希望获得全部的帮助信息,可以同过使用ffmpeg –help full参数来获得。

常用转码参数

https://www.5axxw.com/questions/simple/34cj6h
https://www.daimadog.com/9157.html
https://www.rstk.cn/news/351707.html?action=onClick

参数模块1

-version:查看 libavformat、libavcodec、libavutil、libavfilter、libswscale、libswresample的版本

-formats:查看支持的编解码音视频文件格式。
D. = Demuxing supported (支持封装)
.E = Muxing supported (支持解封装)
DE (封装与解封装都支持)

参数模块2- AVFormatContext AVOptions

FFmpeg的封装转换部分,主要是通过libavformat这部分来完成的功能,通过libavformat库进行mux和demux操作,多媒体文件的格式有很多种,但是还是有好多demux与mux的操作参数是公用的

参数模块3- AVCodecContext AVOptions

FFmpeg的编解码部分主要是通过libavcodec这个库来完成的功能,通过libavcodec库进行encode与decode操作,多媒体的编码格式种类很多,但是还是有好多基本的操作参数是共同可以设置的

二、ffmpeg 的基本编转码原理

三、通用指令

开启日志

-loglevel trace,加在命令的最后。

ffmpeg运行时打印的信息

https://blog.csdn.net/n66040927/article/details/80810369

SAR/DAR说明

https://blog.csdn.net/qq1036548849/article/details/119180762
https://blog.csdn.net/ternence_hsu/article/details/108810527
PAR x SAR = DAR

四、查询指令

1.查看ffmpeg支持的封装及解封装格式

-formats

1)显示可用的复用器

-muxers

2)显示可用的解复用器

-demuxers

2.查看ffmpeg支持的编解码器

https://www.bilibili.com/read/cv23363220
-codecs

1)显示可用的编码器

-encoders

查看编码器或者解码器支持的像素格式https://blog.csdn.net/selivert/article/details/126462507
ffmpeg -h encoder=h264_nvenc

2)显示可用的解码器

-decoders

3.查看ffmpeg支持的协议

-protocols

4.查看ffmpeg支持的像素格式

-pix_fmts

五、操作指令

码率控制

https://blog.csdn.net/Martin_chen2/article/details/105772872

map参数

https://zhuanlan.zhihu.com/p/538338931

质量转换选项

https://www.51c51.com/danpianji/xinxi/84/618181.html

  • q:v
    MPEG* 编码器(mpeg4、mpeg2video、mpeg1video、mjpeg、libxvid、msmpeg4)可以使用-q:v/ -qscale:v。
    质量等级的范围是 0-51,其中 0 表示无损压缩,51 表示最低质量。质量等级越低,视频的文件大小就越小,但是视频的质量也会降低。
  • crf
    h264使用 -crf

修改分辨率

https://www.nxrte.com/jishu/7385.html

https://code84.com/740728.html

修改帧率(-r)

视频剪辑

封装命令

https://blog.csdn.net/eefresher/article/details/100058172/

  • yuv转png
    ffmpeg -s 512x512 -pix_fmt yuv444p -i test.yuv -vframes 1 test.png
    注意yuv输入源必须有yuv后缀,否则报错:yuv444p: Invalid data found when processing input

  • pcm封装为mp3
    https://zhuanlan.zhihu.com/p/465545590
    ffmpeg -f s16le -ar 44100 -ac 2 -i input.pcm output.mp3

文件提取

ffmpeg -i test.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 test.264

说明:

-i test.mp4 输入MP4文件

-codec copy 从MP4封装中进行拷贝

-bsf:h264_mp4toannexb从MP4拷贝到annexB封装

-f h264 采用264格式

test.264 输出文件名

六、ffmpeg实战

1.多个视频合并

https://qastack.cn/video/12905/repeat-loop-input-video-with-ffmpeg

2.立体声转化为单声道

https://blog.csdn.net/weixin_48323711/article/details/116172910
-ac 1

七、滤镜

https://zhuanlan.zhihu.com/p/580743335

1.简单滤镜(-vf)

https://blog.csdn.net/weixin_43793181/article/details/114151448

1.高级滤镜(-filter_complex)

适用于多个输入源

-filter_complex “[1]scale=iw/2:ih/2[pip];[0][pip]overlay=main_w-overlay_w-10:main_h-overlay_h-10”

此部分为实现画中画命令(流合并)

filter_complex 说明后边双引号中为filter(过滤器)相关操作。

[0] 表示第一个源(-i)
[1] 表示第二个源(-i)
以此类推
[1]scale=iw/2:ih/2[pip]
缩放视频源[1]为源宽(iw)二分之一,高(ih)二分之一。得到的结果为[pip]
[0][pip]overlay=main_w-overlay_w-10:main_h-overlay_h-10
将处理后的视频源[1],也就是[pip],覆盖到视频源[0]上。
main_w 为 [0] 宽度
main_h 为 [0] 高度
overlay_w 为 [pip] 宽度
overlay_h 为 [pip] 高度

常见bug总结

低帧率转高帧率会出现这个问题

分类: ffmpeg

0 条评论

发表回复

您的电子邮箱地址不会被公开。