mirror of
https://github.com/unclshura/splitter.git
synced 2026-06-21 16:12:01 +00:00
README fixed. Releasing UI now.
This commit is contained in:
parent
e5a9a04265
commit
9760fbc2e6
10
.github/workflows/publish.yml
vendored
10
.github/workflows/publish.yml
vendored
@ -22,19 +22,19 @@ jobs:
|
||||
dotnet-version: 10.0.x
|
||||
|
||||
- name: Restore
|
||||
run: dotnet restore -r win-x64
|
||||
run: dotnet restore Splitter-UI/Splitter-UI.csproj -r win-x64
|
||||
|
||||
- name: 'Get Version'
|
||||
- name: Get Version
|
||||
id: version
|
||||
uses: battila7/get-version-action@v2
|
||||
|
||||
- name: Publish Release
|
||||
run: dotnet publish splitter-cli/splitter.csproj -c Release -r win-x64 /p:Version=${{ steps.version.outputs.version-without-v }} /p:BuildNumber=${{ github.run_number }} /p:SourceRevisionId=${{ github.sha }}
|
||||
run: dotnet publish Splitter-UI/Splitter-UI.csproj -c Release -r win-x64 /p:Version=${{ steps.version.outputs.version-without-v }} /p:BuildNumber=${{ github.run_number }} /p:SourceRevisionId=${{ github.sha }}
|
||||
|
||||
- name: Create ZIP
|
||||
shell: pwsh
|
||||
run: |
|
||||
$publish = "splitter-cli/bin/Release/net10.0/win-x64/publish"
|
||||
$publish = "Splitter-UI/bin/Release/net10.0/win-x64/publish"
|
||||
$version = "${{ steps.version.outputs.version-without-v }}"
|
||||
$zip = "splitter-win-x64-$version.zip"
|
||||
|
||||
@ -51,5 +51,3 @@ jobs:
|
||||
files: splitter-win-x64-${{ steps.version.outputs.version-without-v }}.zip
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
# Splitter
|
||||
|
||||
This application was built to help me with maintaining my YouTube channel - [UnclShura](https://www.youtube.com/@UnclShura).
|
||||
|
||||
Splitter is a high-performance command line tool for cutting one or more video files into equal or
|
||||
fixed‑length segments using multi‑threaded FFmpeg execution. It supports batch input, flexible
|
||||
duration formats, rotation, smart face/body‑aware cropping, ETA and speed reporting, with nice GUI
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 367 KiB After Width: | Height: | Size: 572 KiB |
@ -140,24 +140,41 @@ All option names are preserved exactly, and descriptions are consolidated for cl
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Description |
|
||||
|--------|-------------|
|
||||
| **--out=<folder>** | Output folder for generated segments. Default: `<input folder>/Splitter`. |
|
||||
| **--file=<path>** | Input file list or file mask. If omitted, the first non-option argument is used as input. Examples: `--file=videos/*.mp4`, `--file=file_list.txt`. |
|
||||
| **--mask=<pattern>** | Custom output filename pattern. Default: `[NAME]_seg[NN].[EXT]`. Supports `[NAME]`, `[N]`, `[NN]`, `[NNN]`, `[NNNN]`, `[EXT]`. Example: `--mask="[NAME]_[NNNN].mp4"`. |
|
||||
| **--duration=<value>** | Override target segment duration. Formats: `Ns`, `NmMs`, `N`. Examples: `--duration=90s`, `--duration=2m30s`, `--duration=45`. Without `--force`: max 58 seconds, equalized across segments. |
|
||||
| **--force** | Use the duration exactly as provided. Last segment may be shorter. |
|
||||
| **--enhance** | Enable video enhancement. Increases output resolution x4 using RealBasicVSR_x4 model. |
|
||||
| **--rotate=<degrees>** | Rotate video by 90, 180, or 270 degrees. Useful for correcting orientation metadata. |
|
||||
| **--rotate-auto** | Use automatic rotation detection. |
|
||||
| **--estimate** | Print calculated segment information and exit. No splitting is performed. |
|
||||
| **--crop[=<w:h>]** | Crop video to a target width and height with face/body tracking. Default: 607x1080. Ideal for Shorts, TikTok, Reels. |
|
||||
| **--detect=<name>** | Object detector for tracking. Values: `face` (UltraFace), `body` (YoloOnnx, default), `none` (center crop). |
|
||||
| **--gravitate=<x:y>** | Bias the crop window toward a normalized point in the frame. Example: `--gravitate=0.2:0.5`. |
|
||||
| **--text** | Use plain-text logging instead of the rich terminal UI. |
|
||||
| **--single-thread** | Disable parallel FFmpeg execution. Useful for debugging or low-resource systems. |
|
||||
| **--debug** | Show debug overlay during tracking. No cropping performed, but crop region shown. |
|
||||
| **-p:<name>=<value>** | Set custom parameters for the object detector. Example: `-p:confidence=0.5`. Defaults: DropoutToleranceFrames=20, EmaFactor=0.65, CameraEasing=0.03, LostFreezeFrames=60. |
|
||||
| Parameter | Description |
|
||||
|----------|-------------|
|
||||
| --out=<folder> | Output folder for segments. Default: same folder as input video + "Splitter". |
|
||||
| --file=<path> | Input names or file masks (e.g. "videos/*.mp4"). If not specified, the first non-option argument is used as input. |
|
||||
| --mask=<pattern> | Output filename pattern. Default: [NAME]_seg[NN].[EXT]. Supports [NAME], [N], [NN], [NNN], [NNNN], [EXT] placeholders. |
|
||||
| --duration=<value> | Override target segment duration. Formats: Ns, NmMs, N. Examples: 90s, 2m30s, 45. Default (without --force): max 58s, equalized segment lengths. |
|
||||
| --force | Use fixed segment duration exactly as given. Last segment may be shorter. Default OFF. |
|
||||
| --enhance | Enable video enhancement. Output resolution x4 using RealBasicVSR_x4 model. |
|
||||
| --rotate=<degrees> | Rotate video by 90, 180, or 270 degrees. |
|
||||
| --rotate-auto | Auto-detect rotation using edge orientation statistics. |
|
||||
| --estimate | Print calculated segment information and exit. No splitting performed. |
|
||||
| --crop[=<w:h>] | Crop video to width w and height h with face tracking. Default: 607x1080. |
|
||||
| --detect=<name> | Object detector: face (UltraFace), body (YoloOnnx, default), none. |
|
||||
| --detect-above=<0-1> | Report detections only if upper bound starts below this threshold (0.0–1.0 mapped to 0..Height). |
|
||||
| --detect-id=<hex> | Hexadecimal ID of face/person to track across segments. Obtained via --debug overlay. |
|
||||
| --gravitate=<x:y> | Gravitate tracking toward normalized point (0.0–1.0). Example: 0.2:0.5. |
|
||||
| --text | Display log in plain text. |
|
||||
| --single-thread | Run in single-threaded mode. Useful for debugging or constrained systems. |
|
||||
| --debug | Show debug overlay during face tracking. |
|
||||
| -p:<name>=<value> | Set custom detector parameter. Example: -p:EmaFactor=0.65. |
|
||||
|
||||
Tracking splitter defaults:
|
||||
|
||||
DropoutToleranceFrames = 20;
|
||||
EmaFactor = 0.65;
|
||||
CameraEasing = 0.03;
|
||||
LostFreezeFrames = 60;
|
||||
|
||||
Rotation detector defaults:
|
||||
|
||||
RotationDetectorSampleCount = 5;
|
||||
RotationDetectorSampleLength = 0.15;
|
||||
RotationDetectorFrameWidth = 320;
|
||||
RotationDetectorFrameHeight = 180;
|
||||
|
||||
|
||||
## FFmpeg Passthrough
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user