ffmpeg常用命令

ffmpeg常用命令

基本信息查询命令

1. 输出ffmpeg基本命令信息

ffmpeg -h

Print help / information / capabilities:
-L                  show license  // 显示许可信息 
-h topic            show help  // 显示帮助信息
-version            show version  // 显示版本				
-buildconf          show build configuration  // 显示编译配置
-formats            show available formats  // 显示可用格式 , 其等价于 muxers + demuxers 组合 
-muxers             show available muxers  // 显示可用的复用器
-demuxers           show available demuxers  // 显示可用的解复用器
-devices            show available devices  // 显示可用设备
-codecs             show available codecs  // 显示可用的编解码器 , 其等价于 encoders + decoders 组合
-decoders           show available decoders  // 显示可用的解码器
-encoders           show available encoders  // 显示可用的编码器
-bsfs               show available bit stream filters  // 显示可用的比特流 filters 过滤器 
-protocols          show available protocols  // 显示可用协议 , 如 rtmp , rtsp 等 ; 
-filters            show available filters  // 显示可用的过滤器 , 可用于 : 改变播放速度 , 加水印 , 加 Logo 
-pix_fmts           show available pixel formats  // 显示可用的像素格式
-layouts            show standard channel layouts  // 显示标准声道名称 
-sample_fmts        show available audio sample formats  // 显示可用的音频采样格式 
-colors             show available color names  // 显示可用的颜色名称 
-sources device     list sources of the input device  // 列出输入设备来源 
-sinks device       list sinks of the output device  // 列出输出设备接收器
-hwaccels           show available HW acceleration methods  // 显示可用的硬件加速方法 

2. 查询指定格式的相关解复用/复用信息

ffmpeg -formats | findstr flv

3. 查询指定的编解码信息

ffmpeg -codec | findstr 264

4. 查看具体的ffmpeg命令分类所支持的参数

ffmpeg -h format=flv

ffmpeg -h encoder=libx264

分解、复用

1. 抽取aac音频流

ffmpeg -i input.mp4 -acodec copy -vn out.aac

2.抽取h264视频流

ffmpeg -i input.mp4 -vcodec copy -an out.h264

3. 视频转格式

ffmpeg -i input.mp4 -vcodec copy -acodec copy out.flv

4. 音视频合并

ffmpeg -i input.h264 -i input.aac -vcodec copy -acodec copy out.mp4

处理原始数据

1. 抽取YUV数据

ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv

2. 提取视频中的图片

ffmpeg -i input.mp4 -r 30 -ss 00:00:10 -t 2 image-%3d.jpg

-r:每秒提取30帧

-t:取t秒时间的帧

3. 截取视频中指定时间的某一帧图片

ffmpeg -i input.mp4 -ss 00:00:50 -frames:v 1 out1.jpg

-frames:v 后接张数

4.图片文件转成YUV文件

ffmpeg -i image.png -pix_fmt yuv420p out.yuv

5. 图片文件转成YUV文件

ffmpeg -i image.png -pix_fmt yuv420p out.yuv

6.YUV转H264

ffmpeg -f rawvideo -pix_fmt yuv420p -s 320x240 -r 30 -i input.yuv -c:v libx264 -f rawvideo out.h264

7. 提取PCM数据

ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm

ffplay -ar 44100 -ac 2 -f s16le -i out.pcm

8. pcm转WAV

ffmpeg -f s16be -ar 8000 -ac 2 -acodec pcm_s16be -i input.pcm output.wav

滤镜

1. 添加水印

ffmpeg -i input.mp4 -vf "movie=logo.png,scale=64:48[watermask];[in][watermask] overlay=30:10 [out]" out.mp4

vf: movie指定logo位置,scale指定大小overlay指定logo摆放的位置

2. 删除水印

先通过 ffplay 找到要删除 LOGO 的位置

ffplay -i input.flv -vf delogo=x=806:y=20:w=70:h=80:show=1

删除水印

ffmpeg -i input.flv -vf delogo=x=806:y=20:w=70:h=80 output.flv

拼接与裁剪

1. 裁剪

ffmpeg -i input.mp4 -ss 00:00:00 -t 10 out.mp4

2. 视频合并

ffmpeg -f concat -i inputs.txt -c copy out.flv

inputs.txt内容如下:

file '1.flv'

file '2.flv'

file '3.flv'

3. hls切片

ffmpeg -i input.mp4 -c:v libx264 -c:a libfdk_aac -strict -2 -f hls out.m3u8

4. 拼接成四宫格

ffmpeg -re -i input1.mp4 -re -i input2.mp4 -re -i input3.mp4 -re -i input4.mp4 
       -filter_complex "nullsrc=size=640x480 [base]; 
       [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft]; 
       [1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright]; 
       [2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft]; 
       [3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright]; 
       [base][upperleft] overlay=shortest=1 [tmp1]; 
       [tmp1][upperright] overlay=shortest=1:x=320 [tmp2]; 
       [tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3]; 
       [tmp3][lowerright] overlay=shortest=1:x=320:y=240" 
       -c:v libx264 out.mp4

5. 四张图处合并

ffmpeg -re -i input1.jpg -re -i input2.jpg -re -i input3.jpg -re -i input4.jpg 
-filter_complex "nullsrc=size=7680x4320 [base];
[0:v] setpts=PTS-STARTPTS,scale=3840x2160 [upperleft];
[1:v] setpts=PTS-STARTPTS, scale=3840x2160 [upperright];
[2:v] setpts=PTS-STARTPTS, scale=3840x2160 [lowerleft];
[3:v] setpts=PTS-STARTPTS, scale=3840x2160 [lowerright]; 
[base][upperleft] overlay=shortest=1 [tmp1]; 
[tmp1][upperright] overlay=shortest=1:x=3840 [tmp2]; 
[tmp2][lowerleft] overlay=shortest=1:y=2160 [tmp3]; 
[tmp3][lowerright] overlay=shortest=1:x=3840:y=2160" output.jpg

直播

1. 推流

ffmpeg -re -i input.mp4 -c copy -f flv rtmp://server/live/streamName

2. 拉流保存

ffmpeg -i rtmp://server/live/streamName -c copy dump.flv

3. 实时推流

ffmpeg -framerate 15 -f avfoundation -i "1" -s 1280x720 -c:v libx264 -f flv rtmp://localhost:1935/live/room

转码

1. 修改视频分辨率

ffmpeg -i input.mp4 -vf scale=1920:1080 -y output.mp4

2. 视频转JPEG

ffmpeg -i input.flv -r 1 -f image2 image-%3d.jpeg

3.视频转gif

ffmpeg -i input.mp4 -ss 00:00:00 -t 10 out.gif

4. 图片转视频

ffmpeg -f image2 -i image-%3d.jpeg out.mp4

5. PNG图片转BMP图片

ffmpeg -i input.png output.bmp

视频采集命令

查看设备列表

ffmpeg -devices (-hide_banner)

查看avfoundation支持的参数

ffmpeg -h demuxer=avfoundation

查看libavfilter支持的参数

ffmpeg -h demuxer=lavfi

查看支持的采集设备列表

ffmpeg -f avfoundation -list_devices true -i ""

采集摄像头画面

ffmpeg -f avfoundation -framerate 30 -video_size 640x480 -i 0 out.yuv

播放摄像头采集画面

ffplay out.yuv -pix_fmt yuv420p -video_size 640x480

相关推荐
-Mr_X-1 小时前
windows下srs流媒体服务器使用ffmpeg推流
ffmpeg
dvlinker2 小时前
C++开源项目 VLC 源代码的交叉编译以及库的裁剪方法详解
ffmpeg·mingw-w64·msys2·cygwin·开源vlc·vlc编译·vlc裁剪
因我你好久不见17 小时前
springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率
java·spring boot·ffmpeg
cuijiecheng20181 天前
音视频入门基础:MPEG2-TS专题(21)——FFmpeg源码中,获取TS流的视频信息的实现
ffmpeg·音视频
cuijiecheng20181 天前
音视频入门基础:AAC专题(13)——FFmpeg源码中,获取ADTS格式的AAC裸流音频信息的实现
ffmpeg·音视频·aac
流氓也是种气质 _Cookie2 天前
uniapp blob格式转换为video .mp4文件使用ffmpeg工具
ffmpeg·uni-app
网络安全queen2 天前
网络安全-企业环境渗透2-wordpress任意文件读&&FFmpeg任意文件读
安全·web安全·ffmpeg
yerennuo2 天前
FFmpeg库之ffmpeg
qt·ffmpeg
韩曙亮2 天前
【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )
ffmpeg·音视频·视频流·mediainfo·解封装·码流
yerennuo2 天前
FFmpeg 框架简介和文件解复用
ffmpeg