Fix set video quality
This commit is contained in:
@@ -162,11 +162,14 @@ def set_video_quality(video_encoder : VideoEncoder, video_quality : int) -> Comm
|
|||||||
return [ '-cq', str(video_compression) ]
|
return [ '-cq', str(video_compression) ]
|
||||||
if video_encoder in [ 'h264_amf', 'hevc_amf' ]:
|
if video_encoder in [ 'h264_amf', 'hevc_amf' ]:
|
||||||
video_compression = round(51 - (video_quality * 0.51))
|
video_compression = round(51 - (video_quality * 0.51))
|
||||||
return [ '-qp_i', str(video_compression), '-qp_p', str(video_compression) ]
|
return [ '-qp_i', str(video_compression), '-qp_p', str(video_compression), '-qp_b', str(video_compression) ]
|
||||||
if video_encoder in [ 'h264_qsv', 'hevc_qsv', 'h264_videotoolbox', 'hevc_videotoolbox' ]:
|
if video_encoder in [ 'h264_qsv', 'hevc_qsv' ]:
|
||||||
video_compression = round(51 - (video_quality * 0.51))
|
video_compression = round(51 - (video_quality * 0.51))
|
||||||
return [ '-q:v', str(video_compression) ]
|
return [ '-qp', str(video_compression) ]
|
||||||
return [ '-q:v', str(video_quality) ]
|
if video_encoder in [ 'h264_videotoolbox', 'hevc_videotoolbox' ]:
|
||||||
|
video_bit_rate = round((video_quality / 100) * (50512 - 1024) + 1024)
|
||||||
|
return [ '-b:v', str(video_bit_rate) + 'k' ]
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
def set_video_preset(video_encoder : VideoEncoder, video_preset : VideoPreset) -> Commands:
|
def set_video_preset(video_encoder : VideoEncoder, video_preset : VideoPreset) -> Commands:
|
||||||
|
|||||||
@@ -11,8 +11,4 @@ def test_run() -> None:
|
|||||||
|
|
||||||
|
|
||||||
def test_chain() -> None:
|
def test_chain() -> None:
|
||||||
commands = chain(
|
assert chain(head(metadata.get('url'))) == [ '-I', metadata.get('url') ]
|
||||||
head(metadata.get('url'))
|
|
||||||
)
|
|
||||||
|
|
||||||
assert commands == [ '-I', metadata.get('url') ]
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from shutil import which
|
from shutil import which
|
||||||
|
|
||||||
from facefusion import ffmpeg_builder
|
from facefusion import ffmpeg_builder
|
||||||
from facefusion.ffmpeg_builder import chain, run, select_frame_range, set_audio_quality, set_audio_sample_size, set_stream_mode
|
from facefusion.ffmpeg_builder import chain, run, select_frame_range, set_audio_quality, set_audio_sample_size, set_stream_mode, set_video_quality
|
||||||
|
|
||||||
|
|
||||||
def test_run() -> None:
|
def test_run() -> None:
|
||||||
@@ -9,11 +9,7 @@ def test_run() -> None:
|
|||||||
|
|
||||||
|
|
||||||
def test_chain() -> None:
|
def test_chain() -> None:
|
||||||
commands = chain(
|
assert chain(ffmpeg_builder.set_progress()) == [ '-progress' ]
|
||||||
ffmpeg_builder.set_progress()
|
|
||||||
)
|
|
||||||
|
|
||||||
assert commands == [ '-progress' ]
|
|
||||||
|
|
||||||
|
|
||||||
def test_stream_mode() -> None:
|
def test_stream_mode() -> None:
|
||||||
@@ -46,3 +42,39 @@ def test_set_audio_quality() -> None:
|
|||||||
assert set_audio_quality('libvorbis', 0) == [ '-q:a', '-1.0' ]
|
assert set_audio_quality('libvorbis', 0) == [ '-q:a', '-1.0' ]
|
||||||
assert set_audio_quality('libvorbis', 50) == [ '-q:a', '4.5' ]
|
assert set_audio_quality('libvorbis', 50) == [ '-q:a', '4.5' ]
|
||||||
assert set_audio_quality('libvorbis', 100) == [ '-q:a', '10.0' ]
|
assert set_audio_quality('libvorbis', 100) == [ '-q:a', '10.0' ]
|
||||||
|
|
||||||
|
|
||||||
|
def test_set_video_quality() -> None:
|
||||||
|
assert set_video_quality('libx264', 0) == [ '-crf', '51' ]
|
||||||
|
assert set_video_quality('libx264', 50) == [ '-crf', '26' ]
|
||||||
|
assert set_video_quality('libx264', 100) == [ '-crf', '0' ]
|
||||||
|
assert set_video_quality('libx265', 0) == [ '-crf', '51' ]
|
||||||
|
assert set_video_quality('libx265', 50) == [ '-crf', '26' ]
|
||||||
|
assert set_video_quality('libx265', 100) == [ '-crf', '0' ]
|
||||||
|
assert set_video_quality('libvpx-vp9', 0) == [ '-crf', '63' ]
|
||||||
|
assert set_video_quality('libvpx-vp9', 50) == [ '-crf', '32' ]
|
||||||
|
assert set_video_quality('libvpx-vp9', 100) == [ '-crf', '0' ]
|
||||||
|
assert set_video_quality('h264_nvenc', 0) == [ '-cq' , '51' ]
|
||||||
|
assert set_video_quality('h264_nvenc', 50) == [ '-cq' , '26' ]
|
||||||
|
assert set_video_quality('h264_nvenc', 100) == [ '-cq' , '0' ]
|
||||||
|
assert set_video_quality('hevc_nvenc', 0) == [ '-cq' , '51' ]
|
||||||
|
assert set_video_quality('hevc_nvenc', 50) == [ '-cq' , '26' ]
|
||||||
|
assert set_video_quality('hevc_nvenc', 100) == [ '-cq' , '0' ]
|
||||||
|
assert set_video_quality('h264_amf', 0) == [ '-qp_i', '51', '-qp_p', '51', '-qp_b', '51' ]
|
||||||
|
assert set_video_quality('h264_amf', 50) == [ '-qp_i', '26', '-qp_p', '26', '-qp_b', '26' ]
|
||||||
|
assert set_video_quality('h264_amf', 100) == [ '-qp_i', '0', '-qp_p', '0', '-qp_b', '0' ]
|
||||||
|
assert set_video_quality('hevc_amf', 0) == [ '-qp_i', '51', '-qp_p', '51', '-qp_b', '51' ]
|
||||||
|
assert set_video_quality('hevc_amf', 50) == [ '-qp_i', '26', '-qp_p', '26', '-qp_b', '26' ]
|
||||||
|
assert set_video_quality('hevc_amf', 100) == [ '-qp_i', '0', '-qp_p', '0', '-qp_b', '0' ]
|
||||||
|
assert set_video_quality('h264_qsv', 0) == [ '-qp', '51' ]
|
||||||
|
assert set_video_quality('h264_qsv', 50) == [ '-qp', '26' ]
|
||||||
|
assert set_video_quality('h264_qsv', 100) == [ '-qp', '0' ]
|
||||||
|
assert set_video_quality('hevc_qsv', 0) == [ '-qp', '51' ]
|
||||||
|
assert set_video_quality('hevc_qsv', 50) == [ '-qp', '26' ]
|
||||||
|
assert set_video_quality('hevc_qsv', 100) == [ '-qp', '0' ]
|
||||||
|
assert set_video_quality('h264_videotoolbox', 0) == [ '-b:v', '1024k' ]
|
||||||
|
assert set_video_quality('h264_videotoolbox', 50) == [ '-b:v', '25768k' ]
|
||||||
|
assert set_video_quality('h264_videotoolbox', 100) == [ '-b:v', '50512k' ]
|
||||||
|
assert set_video_quality('hevc_videotoolbox', 0) == [ '-b:v', '1024k' ]
|
||||||
|
assert set_video_quality('hevc_videotoolbox', 50) == [ '-b:v', '25768k' ]
|
||||||
|
assert set_video_quality('hevc_videotoolbox', 100) == [ '-b:v', '50512k' ]
|
||||||
|
|||||||
Reference in New Issue
Block a user