Ffmpeg视频压制的基础知识

Ffmpeg视频压制的基础知识

ffplay播放

全屏播放
ffplay -i .\0001.mp4

以720P播放
ffplay -i -vf scale=1280:-1 .\0001.mp4

指定分辨率
ffplay -volume 1 -x 1280 -y 720 .\0001.mp4

格式转换

码率设置

ffmpeg -i input.mp4 -b:v 1000 output.mp4

-i input 输入路径
-b:v 帧率 现在是1000k也就是1m 你可以写400k 500k

帧率越低 视频压缩的越小。质量越模糊。1000的话就非常的清晰。

指定文件大小

ffmpeg -i Desktop/吉他.mp4  -fs 15MB  Desktop/output1.mp4
ffmpeg -i X:c2f0bbcb7c03193227025410917f19.mp4  -b:v 1m -fs 15MB X:c2f0bbcb7c03193227025410917f19_b_1m.mp4 

-fs 15MB 最大值为15MB

crf质量模式压缩

CRF(Constant Rate Factor): 范围 0-51: 0是编码毫无丢失信息, 23 is 默认, 51 是最差的情况。相对合理的区间是18-28.
值越大,压缩效率越高,但也意味着信息丢失越严重,输出图像质量越差。

ffmpeg -i input.mp4 -c:v libx264 -crf 22 output1.mp4

分辨率

ffmpeg -i 吉他.mp4 -c:v libx264 -crf 22 -s 1280x720 output1.mp4

批处理转换

文件拖拽压缩法

单个拖拽

ffmpeg -i "%~1" -c:v libx264 -crf 23 "%~dpn1_ok.mp4"
ffmpeg -i "%~1" -c:v libx264 -crf 23 -s 1280x720  "%~dpn1_ok.mp4"

批量拖拽转码
使用前现在当前文件新建log日志文件夹
:softshare
IF "%~1"=="" GOTO :EOF
ffmpeg -i "%~1" -c:v libx264 -x264-params crf=22:vbv-maxrate=3000:vbv-bufsize=6000 -s 1280x720 "%~dpn1_ok.mp4"
echo %~1-%date:~0,4%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%>>%~1.txt
move /Y *.txt log
SHIFT & GOTO:softshare

码率的控制

crf=22的同时,限制最大码率为3000,并且分辨率为720P

ffmpeg -i 0002.mp4 -c:v libx264 -x264-params crf=22:vbv-maxrate=3000:vbv-bufsize=3000 -s 1280x720 0002-OK.mp4
  • vbv-maxrate :单位片段,最大平均码率
  • vbv-bufsize :单位片段,最大码率振幅(肤浅理解)(保留高动态片段中的细节)

转码速度

ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow and placebo.
编码加快,意味着信息丢失越严重,输出图像质量越差。

ffmpeg -i input -c:v libx264 -profile:v main -preset:v fast -level 3.1 -x264opts crf=18

转码脚本

案例1:

@echo off
 
::在下方设置需要处理的视频格式
set Ext=*.ts,*.avi,*.mp4,*.wmv,*.flv,*.mkv,*.rmvb,*.rm,*.mov

md output

for %%a in (%Ext%) do (
	if /i %%~xa==.mp4 (
		move %%a output\
	) else (
		ffmpeg -i "%%a" -c copy "output\%%~na.mp4"
		del %%a
	)
)

::pause

在这里插入图片描述

案例2:
https://blog.csdn.net/wengek/article/details/79662703

猜你喜欢

转载自blog.csdn.net/annita2019/article/details/127434473