Skip to content

Commit a1041d7

Browse files
committed
added Info for ffmpeg Profiles
1 parent bdb2b6f commit a1041d7

5 files changed

Lines changed: 588 additions & 17 deletions

File tree

.github/workflows/built.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- name: Pull Daras Library
2727
run: |
2828
mkdir -p libs
29-
curl -L -o libs/daras_library-0.1.2-SNAPSHOT.jar "https://github.com/ShadowDara/daras_library/releases/download/v0.1.2/daras_library-0.1.2-SNAPSHOT.jar"
29+
curl -L -o libs/daras_library-0.1.4-SNAPSHOT.jar "https://github.com/ShadowDara/daras_library/releases/download/v0.1.4/daras_library-0.1.4-SNAPSHOT.jar"
3030
3131
- name: Grant execute permission for Gradle wrapper
3232
run: chmod +x gradlew

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
}
55

66
group = "de.shadowdara.videoconverter"
7-
version = "0.1.1-SNAPSHOT"
7+
version = "0.1.3-SNAPSHOT"
88

99
repositories {
1010
mavenCentral()
@@ -14,7 +14,7 @@ dependencies {
1414
testImplementation(kotlin("test"))
1515
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
1616

17-
implementation(files("libs/daras_library-0.1.2-SNAPSHOT.jar"))
17+
implementation(files("libs/daras_library-0.1.4-SNAPSHOT.jar"))
1818
}
1919

2020
tasks.test {

src/main/kotlin/de/shadowdara/videoconverter/Config.kt

Lines changed: 117 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,47 +55,58 @@ class Config(private val version: String, val filePath: String) {
5555
profiles = listOf(
5656
// 🎥 Standardqualität, gut für die meisten Zwecke
5757
Profile("Normal",
58-
listOf("-c:v", "libx264", "-preset", "slow", "-crf", "23", "-c:a", "aac", "-b:a", "192k")),
58+
listOf("-c:v", "libx264", "-preset", "slow", "-crf", "23",
59+
"-c:a", "aac", "-b:a", "192k")),
5960

6061
// 🎮 Speziell für Replay Mod Aufnahmen
6162
Profile("Replay Mod Recording",
62-
listOf("-c:v", "libx264", "-preset", "fast", "-crf", "18", "-pix_fmt", "yuv420p", "-r", "60", "-c:a", "aac", "-b:a", "192k")),
63+
listOf("-c:v", "libx264", "-preset", "fast", "-crf", "18", "-pix_fmt",
64+
"yuv420p", "-r", "60", "-c:a", "aac", "-b:a", "192k")),
6365

6466
// 📈 Sehr hohe Qualität, langsame Verarbeitung
6567
Profile("High Quality (x264)",
66-
listOf("-c:v", "libx264", "-preset", "veryslow", "-crf", "18", "-c:a", "aac", "-b:a", "256k")),
68+
listOf("-c:v", "libx264", "-preset", "veryslow", "-crf", "18", "-c:a",
69+
"aac", "-b:a", "256k")),
6770

6871
// ⚡ Schnell & effizient
6972
Profile("Fast Encoding (x264)",
70-
listOf("-c:v", "libx264", "-preset", "ultrafast", "-crf", "28", "-c:a", "aac", "-b:a", "128k")),
73+
listOf("-c:v", "libx264", "-preset", "ultrafast", "-crf", "28", "-c:a",
74+
"aac", "-b:a", "128k")),
7175

7276
// 🖥️ Für Hardwarebeschleunigung (Nvidia GPU)
7377
Profile("NVIDIA GPU (h264_nvenc)",
74-
listOf("-c:v", "h264_nvenc", "-preset", "p4", "-cq", "23", "-b:v", "5M", "-c:a", "aac", "-b:a", "192k")),
78+
listOf("-c:v", "h264_nvenc", "-preset", "p4", "-cq", "23", "-b:v",
79+
"5M", "-c:a", "aac", "-b:a", "192k")),
7580

7681
// 📱 Für Mobile Devices / YouTube
7782
Profile("YouTube / Mobile Optimized",
78-
listOf("-c:v", "libx264", "-preset", "slow", "-crf", "23", "-pix_fmt", "yuv420p", "-movflags", "+faststart", "-c:a", "aac", "-b:a", "160k")),
83+
listOf("-c:v", "libx264", "-preset", "slow", "-crf", "23", "-pix_fmt",
84+
"yuv420p", "-movflags", "+faststart", "-c:a", "aac", "-b:a", "160k")),
7985

8086
// 💾 Sehr kleine Dateigröße
8187
Profile("Small File (Low Quality)",
82-
listOf("-c:v", "libx264", "-preset", "veryfast", "-crf", "32", "-c:a", "aac", "-b:a", "96k")),
88+
listOf("-c:v", "libx264", "-preset", "veryfast", "-crf", "32", "-c:a",
89+
"aac", "-b:a", "96k")),
8390

8491
// 🧼 Lossless (ohne Qualitätsverlust)
8592
Profile("Lossless (x264)",
86-
listOf("-c:v", "libx264", "-preset", "veryslow", "-crf", "0", "-c:a", "flac")),
93+
listOf("-c:v", "libx264", "-preset", "veryslow", "-crf", "0", "-c:a",
94+
"flac")),
8795

8896
// 🌈 HEVC/H.265 – bessere Kompression, braucht stärkere Geräte
8997
Profile("HEVC (x265)",
90-
listOf("-c:v", "libx265", "-preset", "slow", "-crf", "28", "-c:a", "aac", "-b:a", "160k")),
98+
listOf("-c:v", "libx265", "-preset", "slow", "-crf", "28", "-c:a",
99+
"aac", "-b:a", "160k")),
91100

92101
// 🔥 NVIDIA GPU mit HEVC
93102
Profile("NVIDIA GPU (HEVC)",
94-
listOf("-c:v", "hevc_nvenc", "-preset", "p5", "-cq", "28", "-c:a", "aac", "-b:a", "160k")),
103+
listOf("-c:v", "hevc_nvenc", "-preset", "p5", "-cq", "28", "-c:a",
104+
"aac", "-b:a", "160k")),
95105

96106
// 🎮 Twitch Streaming Recording
97107
Profile("Twitch Recording",
98-
listOf("-c:v", "libx264", "-preset", "faster", "-crf", "22", "-r", "30", "-c:a", "aac", "-b:a", "128k")),
108+
listOf("-c:v", "libx264", "-preset", "faster", "-crf", "22", "-r",
109+
"30", "-c:a", "aac", "-b:a", "128k")),
99110

100111
// 📸 Nur Video extrahieren (ohne Audio)
101112
Profile("No Audio",
@@ -111,12 +122,104 @@ class Config(private val version: String, val filePath: String) {
111122

112123
// 📼 Interlaced Video Encoding
113124
Profile("DVD Interlaced (MPEG-2)",
114-
listOf("-target", "pal-dvd", "-c:v", "mpeg2video", "-c:a", "ac3", "-b:a", "192k")),
125+
listOf("-target", "pal-dvd", "-c:v", "mpeg2video", "-c:a", "ac3",
126+
"-b:a", "192k")),
115127

116128
// 🐢 Super Slow Quality Upload
117129
Profile("Very High Quality (Slow Upload)",
118-
listOf("-c:v", "libx264", "-preset", "veryslow", "-crf", "16", "-c:a", "aac", "-b:a", "320k")),
119-
130+
listOf("-c:v", "libx264", "-preset", "veryslow", "-crf", "16",
131+
"-c:a", "aac", "-b:a", "320k")),
132+
133+
// 🆕 AV1 – Standardqualität, gute Kompression
134+
Profile("AV1 (Standard Quality)",
135+
listOf("-c:v", "libaom-av1", "-crf", "30", "-b:v", "0",
136+
"-preset", "medium", "-c:a", "libopus", "-b:a", "128k")),
137+
138+
// 🆕 AV1 – Hohe Qualität (langsamer)
139+
Profile("AV1 (High Quality)",
140+
listOf("-c:v", "libaom-av1", "-crf", "23", "-b:v", "0",
141+
"-preset", "slow", "-c:a", "libopus", "-b:a", "192k")),
142+
143+
// 🆕 AV1 – NVIDIA Hardware (RTX 30xx+)
144+
Profile("AV1 (NVIDIA NVENC)",
145+
listOf("-c:v", "av1_nvenc", "-cq", "28", "-preset", "p5",
146+
"-c:a", "aac", "-b:a", "160k")),
147+
148+
// AV1 für YouTube / Web (optimiert für Streaming-Plattformen)
149+
Profile("AV1 for YouTube/Web",
150+
listOf("-c:v", "libaom-av1", "-crf", "30", "-b:v", "0",
151+
"-preset", "good", "-pix_fmt", "yuv420p", "-movflags", "+faststart",
152+
"-c:a", "libopus", "-b:a", "160k")),
153+
154+
Profile("Archival (Lossless FFV1)",
155+
listOf("-c:v", "ffv1", "-level", "3", "-c:a", "flac")),
156+
157+
Profile("Social Media (Mobile)",
158+
listOf("-c:v", "libx264", "-preset", "fast", "-crf", "24",
159+
"-vf", "scale=720:1280", "-r", "30", "-pix_fmt", "yuv420p", "-c:a",
160+
"aac", "-b:a", "128k")),
161+
162+
Profile("Proxy (Superfast Preview)",
163+
listOf("-c:v", "libx264", "-preset", "ultrafast", "-crf",
164+
"35", "-c:a", "aac", "-b:a", "96k")),
165+
166+
// Container wechseln
167+
Profile("Remux (No Re-encoding)",
168+
listOf("-c", "copy")),
169+
170+
Profile("Audio Only (Opus)",
171+
listOf("-vn", "-c:a", "libopus", "-b:a", "128k")),
172+
173+
// AV1 is still better
174+
Profile("VP9 (WebM)",
175+
listOf("-c:v", "libvpx-vp9", "-crf", "32", "-b:v", "0",
176+
"-c:a", "libopus", "-b:a", "128k")),
177+
178+
Profile("Split by 10 min",
179+
listOf("-f", "segment", "-segment_time", "600",
180+
"-reset_timestamps", "1", "-c:v", "libx264", "-crf", "23",
181+
"-preset", "medium", "-c:a", "aac", "-b:a", "128k")),
182+
183+
Profile("Screen Capture (Lossless)",
184+
listOf("-c:v", "libx264rgb", "-preset", "ultrafast",
185+
"-crf", "0", "-pix_fmt", "rgb24", "-c:a", "flac")),
186+
187+
Profile("GIF (Palette Optimized)",
188+
listOf("-vf", "fps=10,scale=480:-1:flags=lanczos,palettegen",
189+
"-y", "palette.png")),
190+
Profile("GIF (Final)",
191+
listOf("-i", "palette.png", "-lavfi",
192+
"fps=10,scale=480:-1:flags=lanczos [x]; [x][1:v] paletteuse",
193+
"-loop", "0")),
194+
195+
Profile("MPEG-2 (Set-Top Box)",
196+
listOf("-c:v", "mpeg2video", "-q:v", "5", "-c:a", "mp2",
197+
"-b:a", "192k", "-target", "pal-dvd")),
198+
199+
Profile("Visually Lossless (x264)",
200+
listOf("-c:v", "libx264", "-preset", "slow", "-crf", "16",
201+
"-c:a", "aac", "-b:a", "256k")),
202+
203+
Profile("Gaming (NVIDIA AV1, High FPS)",
204+
listOf("-c:v", "av1_nvenc", "-preset", "p4", "-cq", "23",
205+
"-rc", "vbr", "-b:v", "8M", "-r", "120", "-c:a", "aac", "-b:a",
206+
"160k")),
207+
208+
Profile("Podcast / YouTube Audio Normalized",
209+
listOf("-af", "loudnorm=I=-16:TP=-1.5:LRA=11", "-c:v",
210+
"copy", "-c:a", "aac", "-b:a", "192k")),
211+
212+
Profile("Two-Pass (1080p @ 4Mbit)",
213+
listOf("-c:v", "libx264", "-b:v", "4M", "-pass", "1",
214+
"-an", "-f", "mp4", "/dev/null")),
215+
Profile("Two-Pass (Final)",
216+
listOf("-c:v", "libx264", "-b:v", "4M", "-pass", "2",
217+
"-c:a", "aac", "-b:a", "192k")),
218+
219+
Profile("Square Format (1:1)",
220+
listOf("-vf", "scale=720:720", "-c:v", "libx264",
221+
"-preset", "medium","-crf", "23", "-pix_fmt", "yuv420p", "-c:a",
222+
"aac", "-b:a", "128k")),
120223
)
121224
)
122225
}

0 commit comments

Comments
 (0)