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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章