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命令参数大概分为六部分:
- Print help / information / capabilities (打印帮助、信息、能力,就是告诉你ffmpeg能干些啥。)
- Global options (affect whole program instead of just one file (全局参数,影响的是整个程序而不只一个文件)
- Per-file main options(每个文件的主要参数)
- Video options(视频参数)
- Audio options(音频参数)
- 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/qq_43907505/article/details/130525366
ffmpeg -ss 00:00:00 -t 00:01:00 -i input.mp4 -c copy output.mp4
-
视频旋转
https://blog.csdn.net/JineD/article/details/125268682
https://zhuanlan.zhihu.com/p/637790915
封装命令
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
文件提取
-
从mp4中提取h264
https://blog.csdn.net/strikedragon/article/details/90108067 -
从mp4提取pcm
https://zhuanlan.zhihu.com/p/624899108
ffmpeg -i input.mp4 -vn -f s16le -acodec pcm_s16le output.pcm
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)
适用于多个输入源
- 画中画
注意:有的版本的ffmpeg-filter_complex
的参数只能用单引号,不能用双引号。
https://blog.csdn.net/chenxiaoping1993/article/details/90748711
https://www.cnblogs.com/kn-zheng/p/17554604.html
-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总结
- Too many packets buffered for output stream
https://www.zhangbj.com/p/1337.html
设置-max_muxing_queue_size参数。
低帧率转高帧率会出现这个问题
0 条评论