FFMpeg-Compressor: Add SkipVideo parameter
This commit is contained in:
parent
f9f6afe95a
commit
a973fe79e8
3 changed files with 23 additions and 17 deletions
|
@ -5,11 +5,11 @@ Python utility uses ffmpeg to compress Visual Novel Resources
|
|||
* Download `ffmpeg-comp.toml` and put in next to binary or in to `/etc` folder
|
||||
* Change the configuration of the utility in `ffmpeg-comp.toml` for yourself
|
||||
* `ffmpeg-comp {folder}`
|
||||
* In result you get `{folder-compressed}` near with original `{folder}`
|
||||
* In result, you get `{folder-compressed}` near with original `{folder}`
|
||||
|
||||
### Configuration
|
||||
#### FFMPEG section
|
||||
* CopyUnprocessed - Copy all files that failed to compress by ffmpeg to destination folder. In can helps to recreate original folder, but with compressed files. (default: `true`)
|
||||
* CopyUnprocessed - Copy all files that failed to compress by ffmpeg to destination folder. In can help to recreate original folder, but with compressed files. (default: `true`)
|
||||
* ForceCompress - Force try to compress all files in directory via ffmpeg. (default: `false`)
|
||||
* MimicMode - Rename compressed file to it original name and extension. VN engines determine the file type by its header, so for example PNG file named file.jpg will be loaded as PNG file. (default: `true`)
|
||||
* HideErrors - Hide some errors about compression. (default: `true`)
|
||||
|
@ -20,18 +20,20 @@ Python utility uses ffmpeg to compress Visual Novel Resources
|
|||
* BitRate - Required audio bitrate. For best quality use `320k` value.
|
||||
|
||||
#### IMAGE section
|
||||
* ResDownScale - Downscale image resolution count. (default: `1`)
|
||||
* Extension - Required image file extension. It supports: `.apng`, `.avif`, `.bmp`, `.tga`, `.tiff`, `.dds`, `.svg`, `.webp`, `.jpg/.jpeg`, `.png`
|
||||
* FallBackExtension - Extension if current format does not support RGBA.
|
||||
* Lossless - Enables lossless copression for supported formats. With this quality parameter means quality of compression. (default: `false`)
|
||||
* Lossless - Enables lossless compression for supported formats. With this quality parameter means quality of compression. (default: `false`)
|
||||
* Quality - Quality level of images. Values range: `0-100` (100 - best quality, 0 - worst quality)
|
||||
|
||||
#### VIDEO section
|
||||
* SkipVideo - Skip processing all video files. (default: `false`)
|
||||
* Extension - Required image file extension. It supports: `.3gp`, `.amv`, `.avi`, `.gif`, `.m2l`, `.m4v`, `.mkv`, `.mov`, `.mp4`, `.m4v`, `.mpeg`, `.mpv`, `.webm`, `.ogv`
|
||||
* Codec - (May be optional in future) Required video codec. (See official ffmpeg documentation for supported codecs)
|
||||
* Codec - (Maybe optional in future) Required video codec. (See official ffmpeg documentation for supported codecs)
|
||||
|
||||
### TODO (for testing branch)
|
||||
* [x] Recreate whole game directory with compressed files
|
||||
* [x] Cross platform (Easy Windows usage and binaries, MacOS binaries)
|
||||
* [x] Cross-platform (Easy Windows usage and binaries, macOS binaries)
|
||||
* [x] Use ffmpeg python bindings instead of cli commands
|
||||
* [ ] Reorganize code
|
||||
* [ ] Multithread
|
|
@ -17,5 +17,6 @@ Lossless = true
|
|||
Quality = 100
|
||||
|
||||
[VIDEO]
|
||||
SkipVideo = true
|
||||
Extension = "webm"
|
||||
Codec = "libvpx-vp9"
|
|
@ -43,20 +43,23 @@ def compress_audio(folder, file, target_folder, extension):
|
|||
|
||||
|
||||
def compress_video(folder, file, target_folder, extension):
|
||||
codec = configloader.config['VIDEO']['Codec']
|
||||
if not configloader.config['VIDEO']['SkipVideo']:
|
||||
codec = configloader.config['VIDEO']['Codec']
|
||||
|
||||
printer.files(file, os.path.splitext(file)[0], extension, codec)
|
||||
try:
|
||||
(ffmpeg
|
||||
.input(f'{folder}/{file}')
|
||||
.output(utils.check_duplicates(f'{target_folder}/{os.path.splitext(file)[0]}.{extension}'), vcodec=codec)
|
||||
.run(quiet=True)
|
||||
)
|
||||
except ffmpeg._run.Error as e:
|
||||
printer.files(file, os.path.splitext(file)[0], extension, codec)
|
||||
try:
|
||||
(ffmpeg
|
||||
.input(f'{folder}/{file}')
|
||||
.output(utils.check_duplicates(f'{target_folder}/{os.path.splitext(file)[0]}.{extension}'), vcodec=codec)
|
||||
.run(quiet=True)
|
||||
)
|
||||
except ffmpeg._run.Error as e:
|
||||
utils.add_unprocessed_file(f'{folder}/{file}', f'{target_folder}/{file}')
|
||||
utils.errors_count += 1
|
||||
if not configloader.config['FFMPEG']['HideErrors']:
|
||||
printer.error(f"File {file} can't be processed! Error: {e}")
|
||||
else:
|
||||
utils.add_unprocessed_file(f'{folder}/{file}', f'{target_folder}/{file}')
|
||||
utils.errors_count += 1
|
||||
if not configloader.config['FFMPEG']['HideErrors']:
|
||||
printer.error(f"File {file} can't be processed! Error: {e}")
|
||||
return f'{target_folder}/{os.path.splitext(file)[0]}.{extension}'
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue