def test_config_update(): config = Config() updates = { "min_video_bitrate": "300k", "quantizer_scale_range": (25, 35), "audio_sampling_rate": "51000", "video_scale": "480:trunc(ow/a/2)*2", } config.update_from(**updates) for k, v in updates.items(): assert getattr(config, k) == v
def test_config_build_from(): config = Config.build_from( video_codec="h264", audio_codec="aac", max_video_bitrate="500k", min_video_bitrate="500k", target_video_bitrate="500k", target_audio_bitrate="128k", buffersize="900k", audio_sampling_rate="44100", quantizer_scale_range=(21, 35), video_scale="480:trunc(ow/a/2)*2", ) config.update_from() args = config.to_ffmpeg_args() assert len(args) == 24 options_map = [ ("codec:v", "video_codec"), ("codec:a", "audio_codec"), ("maxrate", "max_video_bitrate"), ("minrate", "min_video_bitrate"), ("b:v", "target_video_bitrate"), ("bufsize", "buffersize"), ("ar", "audio_sampling_rate"), ("b:a", "target_audio_bitrate"), ] for option, attr in options_map: idx = args.index(f"-{option}") assert idx != -1 assert args[idx + 1] == str(getattr(config, attr)) video_scale = getattr(config, "video_scale") qmin, qmax = getattr(config, "quantizer_scale_range") assert args.index("-qmin") != -1 and args[args.index("-qmin") + 1] == str(qmin) assert args.index("-qmax") != -1 and args[args.index("-qmax") + 1] == str(qmax) assert ( args.index("-vf") != -1 and args[args.index("-vf") + 1] == f"scale='{video_scale}'" ) assert ( args.index("-max_muxing_queue_size") != -1 and args[args.index("-max_muxing_queue_size") + 1] == "9999" ) with pytest.raises(ValueError): config.update_from(quantizer_scale_range=(-5, 52))
def test_config_defaults(): config = Config() assert config.VERSION == 1 assert config.defaults == {"-max_muxing_queue_size": "9999"} args = config.to_ffmpeg_args() assert args == ["-max_muxing_queue_size", "9999"]
assert idx != -1 and args[idx + 1] == "128k" @pytest.mark.slow @pytest.mark.parametrize( "src,dest,ffmpeg_args,expected", [ ( "video.mkv", "video.mp4", Config.build_from( video_codec="h264", audio_codec="aac", max_video_bitrate="500k", min_video_bitrate="500k", target_video_bitrate="500k", target_audio_bitrate="128k", buffersize="900k", audio_sampling_rate="44100", quantizer_scale_range=(21, 35), video_scale="480:trunc(ow/a/2)*2", ).to_ffmpeg_args(), {"codecs": ["h264", "aac"], "duration": 2}, ), ( "video.mp4", "video.webm", VideoWebmLow().to_ffmpeg_args(), {"codecs": ["vp8", "vorbis"], "duration": 2}, ), ( "video.webm",