FFMpeg操作

ffmpeg  -i "2024-03-07 18-27-40 1920x1080 H.mkv" 
        -c:v h264_nvenc 
        -preset slow 
        -crf 20 -r 30 
        "2024-03-07 18-27-40 1920x1080 HZ.mkv"

-loglevel error 日志级别

-f concat拼接

-i 输入文件

-c:v h264_nvenc/hevc_nvenc 编解码器:视频同等参数下,硬解码率不如软解

-codecs 查看可用编码器

-preset 预设

-hq 高质量设置

视频质量(无损0-51最差)

-qp 固定QP量化,研究用途

-crf 固定码率因子,动态QP,文件存储,尽可能好的效果

-b/b:a/b:v CBR固定码率,同下,流媒体

VBR动态码率,同下,流媒体,动静场景

-qscale q 使用固定的视频量化标度(VBR)

-qmin q 最小视频量化标度(VBR)

-qmax q 最大视频量化标度(VBR)

-qdiff q 量化标度间最大偏差 (VBR)

-qblur blur 视频量化标度柔化(VBR)

-qcomp compression 视频量化标度压缩(VBR)

ABR平均码率,同下,流媒体,阿里云默认

-bt 设置视频码率容忍度

-maxrate bitrate 设置最大视频码率容忍度

-minrate bitrate 设置最小视频码率容忍度

-bufsize size 设置码率控制缓冲区大小

-itsoffset 时间偏移

-padtop 设置顶部补齐的大小 像素单位

-padbottom/–padleft/–padright/–padcolor 设置补齐条颜色(hex,6个16进制的数,红:绿:蓝排列,比如 000000代表黑色)

---

-r fps25

-b/b:a/b:v bitrate

-aspect 横纵比4:3 16:9

-croptop size 设置顶部切除带大小 像素单位

-cropbottom/–cropleft/–cropright

eg. -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k

-vf/af 视频/音频过滤器(滤镜)

-vn/an/sn/dn 不记录视频轨/音轨/字幕/数据流

-ss 00:00:00 片段起始位置

-t 00:00:05 片段结束位置

-c 直接拷贝原始数据(而不是重新编码)

-y 在不询问的情况下覆盖输出文件

-pass 2 二次编码,选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率

-passlogfile file 二次编码的纪录文件名为file

-re 本地回流

Eg.

创建视频缩略图

ffmpeg -i input.mp4 -vf "fps=1/10,scale=-2:720" thumbnail-%03d.jpg

添加水印

ffmpeg -i input.mp4 -i input.jpg -filter_complex "overlay=100:100" output.mp4

高质量GIF动图

ffmpeg  -i input.mp4 
        -ss 0 -t 3 
        -filter_complex [0:v]fps=15,scale=-1:256,split[a][b];[a]palettegen[p];[b][p]paletteuse 
        output.gif

屏幕录制

ffmpeg  -hide_banner 
        -loglevel error 
        -stats -f gdigrab 
        -framerate 60 
        -offset_x 0 -offset_y 0 
        -video_size 1920x1080 
        -draw_mouse 1 
        -i desktop 
        -c:v h264_nvenc 
        -r 60 -pix_fmt yuv420p 
        -y screen_record.mp4

推流

ffmpeg 
    -hide_banner 
    -loglevel error
    -f 30
    -offset_x 0 -offset_y 0 
    -video_size 1920x1080
    -draw_mouse 1 
    -re 
    -i desktop 
    -c:v h264_nvenc
    -preset veryfast 
    -maxrate 1000k 
    -bufsize 2000k 
    -pix_fmt yuv420p 
    -g 50 
    -c:a aac 
    -b:a 160k 
    -ar 44100 
    -ac 2 
    -f flv 
    rtmp://yourserver/live/stream

屏幕推流

ffmpeg 
    -f gdigrab 
    -framerate 30 
    -i desktop 
    -c:v libx264 
    -preset veryfast 
    -pix_fmt yuv420p 
    -g 50 
    -c:a aac 
    -b:a 160k 
    -ac 2 
    -ar 44100 
    -f flv 
    rtmp://home.muteteam.cn/live/io0288?pwd=114514

# -re:这个参数告诉FFmpeg以实时速度读取输入文件,这对于直播推流非常重要,因为它可以防止视频数据在推流之前被过快地消耗掉。
#-i desktop 通常指的是捕获桌面作为输入源,但是你需要指定捕获桌面的方法,比如使用 x11grab(Linux)或 avfoundation(macOS)等
#-stats 详细统计信息
#-f gdigrab 捕获方法
#-c:v libx264:设置视频编码器为libx264,这是一个常用的H.264编码器。
#-preset veryfast:设置编码速度预设为veryfast。这个参数会影响编码速度和视频质量之间的平衡。veryfast是最快的预设,但可能会牺牲一些视频质量。
#-maxrate 1000k:设置视频编码的最大比特率为1000kbps。
#-bufsize 2000k:设置比特率控制缓冲区的大小为2000kbps。这有助于平滑比特率波动。
#-pix_fmt yuv420p:设置像素格式为yuv420p。这是一个常见的像素格式,与大多数RTMP服务器兼容。
#-c:a aac:设置音频编码器为aac,这是一个常用的音频编码格式。
#-b:a 160k:设置音频编码的比特率为160kbps。
#-ar 44100:设置音频采样率为44100Hz,这是一个常见的采样率。
#-ac 2:设置音频通道数为2,即立体声。
#-f flv:设置输出格式为flv。FLV是Adobe Flash Video的格式,常用于在线视频流。
#rtmp://yourserver/live/stream:指定RTMP服务器的URL和流名称。您需要将yourserver和stream替换为您的RTMP服务器地址和流名称。
#请确保您的FFmpeg版本支持RTMP推流,并且已经安装了必要的编解码器。另外,记得替换input.mp4和RTMP URL为您自己的输入文件和服务器信息。

个人常用

ffmpeg -codecs

ffmpeg -i input.mkv -c:v libx264 -vf "scale=-2:720" -crf 20 -r 30 out.mkv

ffmpeg -i input.mp4 -c:v libtheora -q:v 7 -c:a libvorbis -q:a 4 intro.ogv

ffmpeg命令(格式支持)

ffmpeg常用功能

ffmpeg参考文档

FFmpeg 常用选项功能说明

ffmpeg官方英文文档

FFmpeg X264编码参数


蔚蓝天空上的无垠,盲目痴愚后的泯然