Feat/commands builder (#852)

* Protype for ffmpeg builder

* Protype for ffmpeg builder

* Add curl builder

* Fix typing import

* Adjust commands indent

* Protype for ffmpeg builder part2

* Protype for ffmpeg builder part3

* Protype for ffmpeg builder part3

* Add chain() helper to the builders

* Protype for ffmpeg builder part4

* Protype for ffmpeg builder part5

* Protoype for ffmpeg builder part5

* Protoype for ffmpeg builder part6

* Allow dynamic audio size

* Fix testing

* Protoype for ffmpeg builder part7

* Fix and polish ffmpeg builder

* Hardcode the log level for ffmpeg

* More ffmpeg rework

* Prototype for ffmpeg builder part8

* Prototype for ffmpeg builder part9

* Fix CI

* Fix Styles

* Add lazy testing, User Agent for CURL

* More testing

* More testing
This commit is contained in:
Henry Ruhs
2025-01-13 10:42:40 +01:00
committed by henryruhs
parent 7f90ca72bb
commit 8a9e08f3a2
16 changed files with 491 additions and 188 deletions

View File

@@ -0,0 +1,32 @@
from shutil import which
from facefusion import ffmpeg_builder
def test_run() -> None:
assert ffmpeg_builder.run([]) == [ which('ffmpeg'), '-loglevel', 'error' ]
def test_chain() -> None:
commands = ffmpeg_builder.chain(
ffmpeg_builder.set_progress()
)
assert commands == [ '-progress' ]
def test_stream_mode() -> None:
assert ffmpeg_builder.set_stream_mode('udp') == [ '-f', 'mpegts' ]
assert ffmpeg_builder.set_stream_mode('v4l2') == [ '-f', 'v4l2' ]
def test_select_frame_range() -> None:
assert ffmpeg_builder.select_frame_range(0, None, 30) == [ '-vf', 'trim=start_frame=0,fps=30' ]
assert ffmpeg_builder.select_frame_range(None, 100, 30) == [ '-vf', 'trim=end_frame=100,fps=30' ]
assert ffmpeg_builder.select_frame_range(0, 100, 30) == [ '-vf', 'trim=start_frame=0:end_frame=100,fps=30' ]
assert ffmpeg_builder.select_frame_range(None, None, 30) == [ '-vf', 'fps=30' ]
def test_audio_sample_size() -> None:
assert ffmpeg_builder.set_audio_sample_size(16) == [ '-f', 's16le', '-acodec', 'pcm_s16le' ]
assert ffmpeg_builder.set_audio_sample_size(32) == [ '-f', 's32le', '-acodec', 'pcm_s32le' ]