H.264 的 scencut 功能会增加文件大小吗?
Does a scencut feature of H.264 increases a file size?
当我使用这个命令时:
ffmpeg -i original.mp4 -codec:v:0 libx264 -b:v 650k -crf 21 -minrate:v 0k -maxrate:v 750k -bufsize:v 5000k -r 30 -preset slow -x264opts "no-scenecut" -vcodec libx264 -force_key_frames "expr:bitor(eq(t,0),gte(t,prev_forced_t+5))" -f mp4 test.mp4
我总是得到比这个命令更小的文件大小(相同的命令但没有:-x264opts "no-scenecut"):
ffmpeg -i original.mp4 -codec:v:0 libx264 -b:v 650k -crf 21 -minrate:v 0k -maxrate:v 750k -bufsize:v 5000k -r 30 -preset slow -vcodec libx264 -force_key_frames "expr:bitor(eq(t,0),gte(t,prev_forced_t+5))" -f mp4 test.mp4
我认为只有在使用 I 帧而不是 P 或 B 帧更有效的情况下,scencut 才会放置 I 帧。
什么情况下需要用到截屏功能?
当 scenecut
触发时,如果距离大于 min-keyint
或 I-frameIDR =23=] 否则。
doom9.org forum 上发布了一些伪代码(将其添加到此处以供将来参考):
encode current frame as (a really fast approximation of) a P-frame and an I-frame.
if ((distance from previous keyframe) > keyint) then
set IDR-frame
else if (1 - (bit size of P-frame) / (bit size of I-frame) < (scenecut / 100) * (distance from previous keyframe) / keyint) then
if ((distance from previous keyframe) >= minkeyint) then
set IDR-frame
else
set I-frame
else
set P-frame
encode frame for real.
当您不需要固定 GOP/强制关键帧时,您应该使用 scenecut
。如果您正在尝试为 ABR 交付进行编码,那么您可以选择使用两次编码并在 pass-1 上生成最高分辨率的 stat 文件,然后在 pass-2 上为每个演绎重复使用它。
当我使用这个命令时:
ffmpeg -i original.mp4 -codec:v:0 libx264 -b:v 650k -crf 21 -minrate:v 0k -maxrate:v 750k -bufsize:v 5000k -r 30 -preset slow -x264opts "no-scenecut" -vcodec libx264 -force_key_frames "expr:bitor(eq(t,0),gte(t,prev_forced_t+5))" -f mp4 test.mp4
我总是得到比这个命令更小的文件大小(相同的命令但没有:-x264opts "no-scenecut"):
ffmpeg -i original.mp4 -codec:v:0 libx264 -b:v 650k -crf 21 -minrate:v 0k -maxrate:v 750k -bufsize:v 5000k -r 30 -preset slow -vcodec libx264 -force_key_frames "expr:bitor(eq(t,0),gte(t,prev_forced_t+5))" -f mp4 test.mp4
我认为只有在使用 I 帧而不是 P 或 B 帧更有效的情况下,scencut 才会放置 I 帧。
什么情况下需要用到截屏功能?
当 scenecut
触发时,如果距离大于 min-keyint
或 I-frameIDR =23=] 否则。
doom9.org forum 上发布了一些伪代码(将其添加到此处以供将来参考):
encode current frame as (a really fast approximation of) a P-frame and an I-frame.
if ((distance from previous keyframe) > keyint) then
set IDR-frame
else if (1 - (bit size of P-frame) / (bit size of I-frame) < (scenecut / 100) * (distance from previous keyframe) / keyint) then
if ((distance from previous keyframe) >= minkeyint) then
set IDR-frame
else
set I-frame
else
set P-frame
encode frame for real.
当您不需要固定 GOP/强制关键帧时,您应该使用 scenecut
。如果您正在尝试为 ABR 交付进行编码,那么您可以选择使用两次编码并在 pass-1 上生成最高分辨率的 stat 文件,然后在 pass-2 上为每个演绎重复使用它。