FFmpeg 常用实例。

FFmpeg 常用实例。



编译后 3 文件。

ffmpeg.exe ~ 转码。
ffplay.exe ~ 播放。
ffprobe.exe ~ 详情。

ffmpeg -i 1.avi 2.mp4



常用。

ffmpeg -h

ffmpeg -codecs ~ 查看支持的编码。

ffmpeg -i in.flac -acodec libmp3lame -ar 44100 -ab 320k -ac 2 out.mp3

-acodec ~ a: audio。
-ar 44100 ~ 音频采样率。不写,默认原音频采样率。一般用 48000 44100。
-ab 320k ~ audio bitrate。音频比特率。默认 128k。
-ac 2 ~ channel 声道数。

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

-pix_fmt ~ pixel format (通过 ffmpeg -pix_fmts 查看支持的像素格式)。
-vcodec libx264 ~ h264 的软件编码器,常用。还支持硬件编码 GPU、多线程等。
-preset ~ 编码器预设,编码算法的精度。精度越高,CPU 占用越多,速度约慢。

ultrafast superfast veryfast faster fast medium slow slower veryfast placebo
默认 medium。一般直播用 veryfast,体积小,换取性能。压制视频一般用 veryslow。

-profile:v ~ 编码器配置,压缩比。一般实时通讯 ~ baseline,流媒体 ~ main,超清视频 ~ high。
-level:v ~ 压缩比和画质。
-crf 23 ~ 码率控制模式。constantt rate factor ~ 恒定速率因子模式,画质稳定,大小不定。0 … 18 … 23 … 28 … 51。0 ~ 无损画质。
-acodec aac ~ 音频编码器。
-b:a 128k ~ -ab 128k

  • 码率控制模式。-qp / -crf / -b。

-qp

Constant Quantizer ~ 恒定量化器模式。将画质转为数字。0 … 18 … 23 … 28 … 51。0 ~ 无损画质。

无损压制例子。(快速编码)。
ffmpeg -i input -vcodec libx264 -preset ultrafst -qp 0 output.mkv
无损压制例子。(高压缩比)。
ffmpeg -i input -vcodec libx264 -preset veryslow -qp 0 output.mkv

-crf

基于 qp,根据人眼识别的不精确性,将某些不明显的画质适当调低,视觉敏感部分的画质适当调高,整体码率降低,文件体积减小。

-b

bitrate ~ 固定目标码率模式。视频码率和体积固定。有限条件下达到最高画质。

VBR ~ Variable Bit Rate 动态比特率。

eg. ffmpeg -i input -vcode libx264 -preset veryslow output

ABR ~ Average Bit Rate 平均比特率。

eg. ffmpeg -i input -vcode libx264 -preset veryslow -b:v 3000k output

CBR ~ Constant Bit Rate 恒定比特率。

eg. ffmpeg -i input -vcode libx264 -preset veryslow -b:v 3000k -minrate 4000k -maxrate 4000k -bufsize 1835k output



eg.

提取视频(静音)。

ffmpeg -i in.mp4 -vcodec copy -an a.m4a

-an ~ audio no ~ 静音。

提取音频(去除视频)。

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

-vn ~ video no ~ 去除视频。

音频视频合并。

ffmpeg -i a.m4a -i v.mp4 -c copy out.mp4



截取、连接音视频。

ffmpeg -i in.mp3 -ss 00:01:00 -to 00:01:10 -acodec copy out.mp3

ffmpeg -i in.mp3 -ss 00:01:00 -to 10 -acodec copy out.mp3

-t 截取时长。

关键帧技术 ~ -ss 前置。

ffmpeg -i in.mp4 -ss 00:01:00 -to 00:01:10 -acodec copy out.mp4

ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -acodec copy out.mp4(关键帧技术,加速操作),播放器显示的起始时间和结束时间不一定准确。

ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -acodec copy -copyts out.mp4 ~ 保留时间戳。



合并视频。

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

参数不同不建议使用,而建议使用 Avidemux 软件。



截图。

ffmpeg -i in.mp4 -ss 5 -vframes 1 img.jpg

// 截取第 5 秒的一帧画面。

加水印。

ffmpeg -i in.mp4 -i logo.png -filter_complex “overlay=20:20”

overlay ~ 左上角偏移量。

gif 动图。

ffmpeg -i in.mp4 -ss 7.5 -to 8.5 -s 640x210 -r 15 out.gif

-s 640x210 ~ 缩放大小。
-r 15 ~ 降低帧率。



录屏、直播。

ffmpeg -f gdigrab -i desktop rec.mp4

-f ~ 格式化。

gdigrab ~ Windows 默认,只能捕获视频,不能捕获视频。



推流。

ffmpeg -re -i rec.mp4 按照网站要求编码 -f flv “rtmp 地址/直播码”

  • -i
    输入流。

  • -f
    输出格式

  • -ss
    开始时间。

  • -b
    视频流量(码率),默认 200 Kbit/s,

  • -r
    帧速率,默认 25。

  • -s
    宽与高。

  • aspect
    画面比例。

  • vn
    不处理视频。

  • -vcodec
    视频解码器,未设定时使用与输入流相同的编解码器。

  • -ar
    采样率。

  • -ac
    声道数 channel。

  • acodec
    声音编解码器,未设定时使用与输入流相同的编解码器。

  • -an
    不处理音频。



ffmpeg。

ffmpeg的简单使用

  • 将 input.avi 转换成 output.mp4:

ffmpeg -i input.avi output.mp4

  • 增加一些要求。

ffmpeg -threads 4 -i input.avi -ab 32 -flags +loop -vol 200 -vf yadif input.mp4

-ab:设置比特率

-vol:音量提高到200%

  • 将视频转成 m3u8 点播文件。

ffmpeg.exe -i input.avi -strict -2 -hls_time 10 -hls_list_size 0 -c:v libx264 -c:a aac -f hls input.m3u8

-hls_time 10:每个 ts 文件 10 秒左右。这个会根据具体情况,尽量维系在 10 秒一个 ts。

-hls_list_size 0:m3u8 索引里保留所有的 ts 路径。

  • 将视频转成加密的 m3u8 点播文件。

ffmpeg -i input.mp4 -c copy -bsf:v h264_mp4toannexb -hls_time 10 -hls_list_size 0 -hls_key_info_file key_info input.m3u8

key_info 需要替换成自己的路径,因为需要加密,所以需要准备二个文件一个是:key.key,一个是 key_info。详细的不在这里作介绍,如果有兴趣可以实际了解详细使用方法。

  • 截图。

ffmpeg -ss 00:02:06 -i input.mp4 -f image2 -y poster.jpg

-ss:截图的时间点。

  • 连续截图。

ffmpeg -y -i input.mp4 -vf “fps=1/2,scale=iw/4:-1,tile=10x10” -an %d.png

fps=1/2:每 2 秒截一张图,如果是每秒截一张的话应该是 fps=1

scale:所截图片大小,上面的代码是设置宽为原始的1/4大小,高度自动,相当于iw/4:ih/4,也可以设置成固定值如120:80

tile:网格化,自动将100张图合并成一张大图

  • 连续截图的另外一个方法。

ffmpeg -i my_dream.mp4 -vf fps=1/2 -q:v 2 -s 120x67 preview/%d.png

fps=1/2:每2秒截一张图,如果是每秒截一张的话应该是fps=1

-s:尺寸

这种方式截出来的是小图,需要自己再拼合。

ffmpeg -list_devices true

ffplay -f dshow -i video=“HD Camera”

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyfGeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值