"ugoira-webm": {
"name": "ugoira",
"extension": "webm",
"ffmpeg-args": [
"-hide_banner",
"-loglevel",
"error",
"-row-mt",
"1",
"-threads",
"16",
"-vf",
"scale=trunc(iw/2)*2:trunc(ih/2)*2,fps=24",
"-c:v",
"libvpx-vp9",
"-crf",
"18",
"-preset",
"veryslow",
"-pix_fmt",
"yuv420p",
"-movflags",
"+faststart",
"-c:a",
"libopus",
"-b:a",
"128k",
"-b:v",
"0"
],
"ffmpeg-twopass": false
}
"ugoira-mp4": {
"name": "ugoira",
"extension": "mp4",
"ffmpeg-args": [
"-hide_banner",
"-loglevel",
"error",
"-vf",
"scale=trunc(iw/2)*2:trunc(ih/2)*2,fps=24",
"-c:v",
"libx264",
"-crf",
"18",
"-preset",
"veryslow",
"-pix_fmt",
"yuv420p",
"-movflags",
"+faststart",
"-c:a",
"aac",
"-b:a",
"128k",
"-b:v",
"0"
],
"libx264-prevent-odd": false
}
"ugoira-gif": {
"name": "ugoira",
"extension": "gif",
"ffmpeg-args": [
"-hide_banner",
"-loglevel",
"error",
"-filter_complex",
"[0:v]fps=24,scale=640:-1:flags=lanczos,split[a][b];[a]palettegen=max_colors=256:stats_mode=full[p];[b][p]paletteuse=dither=sierra2_4a",
"-loop",
"0"
]
}
"ugoira-copy": {
"name": "ugoira",
"extension": "mkv",
"ffmpeg-args": [
"-vf",
"scale=trunc(iw/2)*2:trunc(ih/2)*2,fps=24",
"-c:v",
"libx264",
"-crf",
"18",
"-preset",
"veryslow",
"-pix_fmt",
"yuv420p",
"-color_range",
"tv",
"-c:a",
"aac",
"-b:a",
"128k"
],
"libx264-prevent-odd": false,
"repeat-last-frame": false
}
"tw-gif": {
"name": "exec",
"event": "after",
"filter": "type == 'animated_gif'",
"extension": "gif",
"command": [
"ffmpeg",
"-hide_banner",
"-loglevel",
"error",
"-i",
"{_path}",
"-filter_complex",
"[0:v]fps=24,scale=640:-1:flags=lanczos,split[a][b];[a]palettegen=max_colors=256:stats_mode=full[p];[b][p]paletteuse=dither=sierra2_4a",
"-loop",
"0",
"\fF {_path.rpartition('.')[0]}.gif"
]
}
"fb-gif": {
"name": "exec",
"event": "after",
"filter": "type == 'video'",
"extension": "gif",
"command": [
"ffmpeg",
"-hide_banner",
"-loglevel",
"error",
"-i",
"{_path}",
"-filter_complex",
"[0:v]fps=24,scale=640:-1:flags=lanczos,split[a][b];[a]palettegen=max_colors=256:stats_mode=full[p];[b][p]paletteuse=dither=sierra2_4a",
"-loop",
"0",
"\fF {_path.rpartition('.')[0]}.gif"
]
}
"fb-mp4": {
"name": "exec",
"event": "after",
"filter": "extension == 'm4a'",
"extension": "mp4",
"command": [
"ffmpeg",
"-hide_banner",
"-loglevel",
"error",
"-i",
"{_path[: -4]}.mp4",
"-i",
"{_path[: -4]}.m4a",
"-c",
"copy",
"\fF {_path[: -4]}_1.mp4"
]
}
"fb-kill": {
"name": "exec",
"event": "after",
"filter": "extension == 'm4a'",
"extension": "mp4",
"command": [
"PowerShell",
"del",
"'{_path[: -4]}.mp4'",
";",
"del",
"'{_path[: -4]}.m4a'",
";",
"Rename-Item",
"-Path",
"'{_path[: -4]}_1.mp4'",
"-NewName",
"'{_path[: -4]}.mp4'"
]
}
備註:Facebook-kill的存在,是為了刪除Facebook-mp4在將mp4與m4a合併後的舊mp4與p4a檔案。