FFmpeg学习笔记

Posted 500年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FFmpeg学习笔记相关的知识,希望对你有一定的参考价值。

FFmpeg学习笔记

1、官网下载

官网下载地址:http://ffmpeg.org/download.html
3大组件:
1、ffmpeg 转换多媒体内容;
2、ffplay 简介播放器。比如:ffplay 视频名称.mp4
3、ffprobe 媒体参数分析工具。比如:ffprobe 视频名称.mp4

2、视频格式转换

2.1、常见视频格式

视频格式说明
RMVB较为封闭
MKV最开放 几乎支持所有的音视频 但体积太大
AVI有点老 已经不适应最近的音视频
MOV主流 苹果公司制定、支持透明视频
MP4最主流 软硬件厂商都大力支持

2.2、转换命令

ffmpeg -i input.mov output.mp4

2、视频转码

2.1、基础说明

查看ffmpeg支持的编解码类型列表

ffmpeg -codecs

1080p之下的编码方案:
目前首先方案:MP4 封装:H264 视频编码 + AAC 音频编码
google方案:WebM 封装:VP8 视频编码 + Vorbis 音频编码
完全开源的编码方案:OGG 封装:Theora 视频编码 + Vorbis 音频编码
转码命令

ffmpeg -i 好音乐0603-01.mp3 -acodec libmp3lame -ar 44100 -ab 320k -ac 2 out.mp3

# -i  输入的文件
# -acodec        a是audo,音频的缩写。codec:编解码器
# libmp3lame     mp3的编码器,此处可省略。当输出文件后缀为mp3时,ffmpeg会自动识别为当前编码格式
# -ar 44100      音频采样率。如果不输入时,默认为原音频的采样率。一般为:48khz和44.1khz
# -ab 320k       设置音频的比特率。如果不输入时,ffmpeg默认为128k
# -ac 2          双声道。1单声道、2双声道立体声。默认为原音频的声道数。
# out.mp3        新的文件名和后缀。

2.2、实战

将webm的4k文件,转换为1080p的视频文件。

ffmpeg -i in.webm -s 1920x1080 -pix_fmt yuv420p \\
-vcodec libx264 -preset medium -profile:v high -level:v 4.1 \\
-crf 23 -acodec aac -ar 44100 -ac 2 -b:a 128k out.mp4

# -s        缩放视频尺寸。1920x1080 即为新视频的宽高。
# -pix_fmt  设置视频颜色空间。支持:yuv、nv、rgb......。具体可使用命令:ffmpeg -pix_fmts 查询。
# -vcodec   设置视频流的编码器指令。libx264是H264的软件编码器。一般都用libx264,较为通用、稳定、非常好。
# -preset   编码器的预设。可选参数包括:ultrafast  superfast  veryfast(录制视频时、快,但体积较大) 
                                 faster  fast  medium(默认类型)  slow  slower  
                                 veryslow(压缩视频、慢、可精准压缩)  placebo。
# -profile:v 指定编码器的配置,主要是合压缩比有关。(实时通信一般领域采用:baseline、流媒体采用:main、超清视频:high)
# -level:v   对编码器配置的具体规范和限制,压缩比和画质。区间包括:(1~5.2)。一般情况下,1080p的视频,就用4.1。
# -crf       设置码率控制模式/恒定速率因子模式。视频的质量。参数:0~18~23~28~51都行。默认值为:23。数值越小质量越稿。
             0表示无损的画质。一般在8~28之间选择。
# -acodec    视频格式编码器aac 
# -ar 44100  音频采样率。如果不输入时,默认为原音频的采样率。一般为:48khz和44.1khz  
# -ac 2      双声道。1单声道、2双声道立体声。默认为原音频的声道数。
#  -b:a      等于 -ab。设置音频比特率。目前大部分视频网站限制视频流比特率为:128kb/s或192kb/s。

在这里插入图片描述

2.3、提取视频流

ffmpeg -i in.mp4 -vcodec copy -an v.mp4

2.4、提取音频流

ffmpeg -i in.mp4 -vn -acodec copy a.m4a

# 多个音频流时,提取具体的某个音频流
ffmpeg -i in.mp4 -vn -acodec -map 0:3 copy a.m4a

在这里插入图片描述

2.5、合并音视频流

# 同一个文件分离出来的,提取出来时也没改动,所以合并时,无需再编码。
ffmpeg -i a.m4a -i v.mp4 -c copy out.mp4

2.6、截取连接音视频

2.6.1、截取音视频

# 方式一
ffmpeg -i in.mp3 -ss 00:01:00 -to 00:01:10 -acodec copy out.mp3
# 方式二
ffmpeg -i in.mp3 -ss 00:01:00 -t 10 -acodec copy out.mp3

2.6.2、连接音视频

ffmpeg -i "concat:01.mp4|02.mp4|03.mp4" -c copy out.mp4

2.7、截图、水印、动图

2.7.1 截图

# 截取第5秒的第1帧画面
ffmpeg -i in.mp4 -ss 5 -vframes 1 img.jpg

2.7.2 水印

# 将水印图logo.png覆盖到视频的左上角,距顶部20,距左20的位置
ffmpeg -i in.mp4 -i logo.png -filter_complex "overlay=20:20" out.mp4

2.7.3 gif动图

# 将视频in.mp4从7.5秒截取到8.5秒 缩放大小到640x320 降低帧率为15 输出到out.gif
ffmpeg -i in.mp4 -ss 7.5 -to 8.5 -s 640x320 -r 15 out.gif

以上是关于FFmpeg学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

php代码片段: sendFile/videoStream/sendEmail/phpexcel/ffmpeg/zip

Go语学习笔记 - 调用ffmpeg-api实现音频重采样

FFmpeg学习笔记

FFMPEG解码学习笔记

FFmpeg基础库编程开发学习笔记——视频常见格式

ffmpeg史诗级教学-学习笔记