ffmpeg那些事
ffmpeg说明
- ffmpeg简介:
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。 - ffmpeg模块组成:
libavformat: 一个包含多媒体容器格式的解复用器和复用器的库;
libavcodec: 一个包含音频/视频编解码器和编码器的库;
libavutil: 一个包含简化编程功能的库,包括随机数生成器、数据结构、数学例程、核心多媒体实用程序等。;
libavdevice: 一个包含输入和输出设备的库,用于从许多常见的多媒体输入/输出软件框架(包括Video4Linux、Video4Linux2、VfW和ALSA)获取和呈现;
libavfilter: 一个包含媒体过滤器的库;
libswscale: 一个执行高度优化的图像缩放和颜色空间/像素格式转换操作的库;
libswresample 一个执行高度优化的音频重采样、重矩阵和采样格式转换操作的库;
libpostproc: 用于后期效果处理;
ffmpeg: 可用于格式转换、解码或电视卡即时编码等;
ffsever: 一个 HTTP 多媒体即时广播串流服务器;
ffplay: 一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
ffprobe: 一个媒体参数分析工具; - ffmpeg 官网
- 参考ffmpeg4.2.1
- 系统window10
ffmpeg命令
基本信息查询命令
命令 | 说明 |
---|---|
-version | 显示版本 |
-demuxers | 显示可用的demuxers |
-muxers | 显示可用的muxers |
-devices | 显示可用的设备 |
-codecs | 显示所有编解码器 |
-decodecs | 显示可用的解码器 |
-encoders | 显示可用的编码器 |
-bsfs | 显示显示比特流filter |
-formats | 显示可用的格式 |
-protocols | 显示可用的协议 |
-filters | 显示可用的过滤器 |
-pix_fmts | 显示可用的像素格式 |
-sample_fmts | 显示可用的采样格式 |
-layouts | 显示channel名称 |
-colors | 显示识别的颜色名称 |
录制命令
//查询设备信息
ffmpeg -list_devices true -f dshow -i dummy
//根据查询的信息,设置参数并录制
ffmpeg -f dshow -video_size 1536x960 -framerate 30 -pixel_format yuv420p -i video="screen-capture-recorder":audio="virtual-audio-capturer" av-out.mp4
分解/复用命令
处理原始数据命令
裁剪与合并命令
图片/视频转换命令
直播相关命令
各种滤镜命令
- 将输出文件的视频比特率设置为64 kbit/s
ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
- 将输出文件的帧速率强制为24 fps
ffmpeg -i input.avi -r 24 output.avi
- 将输入文件的帧速率(仅对原始格式有效)强制为1fps,将输出文件的帧速率强制为24fps
ffmpeg -r 1 -i input.m2v -r 24 output.avi
- 转码
ffmpeg -i input.flac -acodec libmp3lame -ar 44100 -ab 320k -ac 2 output.mp3
- 提取视频流(剔除音频流)
ffmpeg -i input.mp4 -vcodec copy -an v.mp4
- 提取音频流(剔除视频流)
ffmpeg -i input.mp4 -acodec copy -av a.m4a
- 合并音视频流
ffmpeg -i a.m4a -i v.mp4 -c copy -av output.mp4
- 截取音视频
//-ss:起始时间 && -to:终止时间 ffmpeg -i input.mp3 -ss 00:01:00 -to 00:01:10 -acodec copy output.mp3 //-t:持续时长 ffmpeg -i input.mp3 -ss 00:01:00 -t 10 -acodec copy output.mp3
- 拼接音视频
ffmpeg -i “concat:input01.mp4|input02.mp4|input03.mp4” -c copy output.mp4
- 截图
ffmpeg -i input.mp4 -ss 5 -vframes 1 img.jpg
- 添加水印
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=20:20" output.mp4
- 动图gif
ffmpeg -i input.mp4 -ss 7.5 -to 8.5 -s 640x320 -r 15 output.git
- 录屏(OBS Studio:强大的免费开源录屏软件)
//只能录屏,不支持录音 ffmpeg -f gdigrab -i desktop rec.mp4
- 推流
ffmpeg -re -i rec.mp4 按照网站要求编码 -f flv "你的rtmp地址/你的直播码"
- 无损压缩(快速编码)
ffmpeg -i input -vcodec libx264 -preset ultrafast -qp 0 output.mkv
- 无损压缩(高压缩比)
ffmpeg -i input -vcodec libx264 -preset veryslow -qp 0 output.mkv
ffmpeg开发
下载ffmpeg
Shared:包含所需dll
Dev:包含所需include及lib
ffmpeg开发代码
- 使用vs2017 与 ffmpeg4.2.1
请参阅 ffmpeg开发代码
UE4音视频功能插件
请参阅 UE4音视频功能插件