@jjlmoya/utils-audiovisual 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +59 -58
- package/src/category/i18n/de.ts +198 -0
- package/src/category/i18n/fr.ts +1 -1
- package/src/category/i18n/id.ts +198 -0
- package/src/category/i18n/it.ts +198 -0
- package/src/category/i18n/ja.ts +198 -0
- package/src/category/i18n/ko.ts +198 -0
- package/src/category/i18n/nl.ts +198 -0
- package/src/category/i18n/pl.ts +198 -0
- package/src/category/i18n/pt.ts +198 -0
- package/src/category/i18n/ru.ts +198 -0
- package/src/category/i18n/sv.ts +198 -0
- package/src/category/i18n/tr.ts +198 -0
- package/src/category/i18n/zh.ts +198 -0
- package/src/category/index.ts +31 -3
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/chromaticLens/i18n/de.ts +246 -0
- package/src/tool/chromaticLens/i18n/en.ts +1 -1
- package/src/tool/chromaticLens/i18n/es.ts +1 -1
- package/src/tool/chromaticLens/i18n/fr.ts +1 -1
- package/src/tool/chromaticLens/i18n/id.ts +246 -0
- package/src/tool/chromaticLens/i18n/it.ts +246 -0
- package/src/tool/chromaticLens/i18n/ja.ts +246 -0
- package/src/tool/chromaticLens/i18n/ko.ts +246 -0
- package/src/tool/chromaticLens/i18n/nl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pt.ts +246 -0
- package/src/tool/chromaticLens/i18n/ru.ts +246 -0
- package/src/tool/chromaticLens/i18n/sv.ts +246 -0
- package/src/tool/chromaticLens/i18n/tr.ts +246 -0
- package/src/tool/chromaticLens/i18n/zh.ts +246 -0
- package/src/tool/chromaticLens/index.ts +15 -7
- package/src/tool/collageMaker/i18n/de.ts +233 -0
- package/src/tool/collageMaker/i18n/en.ts +1 -1
- package/src/tool/collageMaker/i18n/es.ts +1 -1
- package/src/tool/collageMaker/i18n/fr.ts +1 -1
- package/src/tool/collageMaker/i18n/id.ts +233 -0
- package/src/tool/collageMaker/i18n/it.ts +233 -0
- package/src/tool/collageMaker/i18n/ja.ts +233 -0
- package/src/tool/collageMaker/i18n/ko.ts +233 -0
- package/src/tool/collageMaker/i18n/nl.ts +233 -0
- package/src/tool/collageMaker/i18n/pl.ts +233 -0
- package/src/tool/collageMaker/i18n/pt.ts +233 -0
- package/src/tool/collageMaker/i18n/ru.ts +233 -0
- package/src/tool/collageMaker/i18n/sv.ts +233 -0
- package/src/tool/collageMaker/i18n/tr.ts +233 -0
- package/src/tool/collageMaker/i18n/zh.ts +233 -0
- package/src/tool/collageMaker/index.ts +15 -6
- package/src/tool/exifCleaner/i18n/de.ts +277 -0
- package/src/tool/exifCleaner/i18n/en.ts +2 -2
- package/src/tool/exifCleaner/i18n/es.ts +2 -2
- package/src/tool/exifCleaner/i18n/fr.ts +4 -4
- package/src/tool/exifCleaner/i18n/id.ts +277 -0
- package/src/tool/exifCleaner/i18n/it.ts +277 -0
- package/src/tool/exifCleaner/i18n/ja.ts +277 -0
- package/src/tool/exifCleaner/i18n/ko.ts +277 -0
- package/src/tool/exifCleaner/i18n/nl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pt.ts +277 -0
- package/src/tool/exifCleaner/i18n/ru.ts +277 -0
- package/src/tool/exifCleaner/i18n/sv.ts +277 -0
- package/src/tool/exifCleaner/i18n/tr.ts +277 -0
- package/src/tool/exifCleaner/i18n/zh.ts +277 -0
- package/src/tool/exifCleaner/index.ts +16 -8
- package/src/tool/imageCompressor/i18n/de.ts +242 -0
- package/src/tool/imageCompressor/i18n/en.ts +2 -2
- package/src/tool/imageCompressor/i18n/es.ts +2 -2
- package/src/tool/imageCompressor/i18n/id.ts +242 -0
- package/src/tool/imageCompressor/i18n/it.ts +242 -0
- package/src/tool/imageCompressor/i18n/ja.ts +242 -0
- package/src/tool/imageCompressor/i18n/ko.ts +242 -0
- package/src/tool/imageCompressor/i18n/nl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pt.ts +242 -0
- package/src/tool/imageCompressor/i18n/ru.ts +242 -0
- package/src/tool/imageCompressor/i18n/sv.ts +242 -0
- package/src/tool/imageCompressor/i18n/tr.ts +242 -0
- package/src/tool/imageCompressor/i18n/zh.ts +244 -0
- package/src/tool/imageCompressor/index.ts +15 -7
- package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/en.ts +2 -2
- package/src/tool/printQualityCalculator/i18n/es.ts +3 -3
- package/src/tool/printQualityCalculator/i18n/fr.ts +3 -3
- package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
- package/src/tool/printQualityCalculator/index.ts +15 -7
- package/src/tool/privacyBlur/i18n/de.ts +238 -0
- package/src/tool/privacyBlur/i18n/en.ts +1 -1
- package/src/tool/privacyBlur/i18n/es.ts +1 -1
- package/src/tool/privacyBlur/i18n/fr.ts +1 -1
- package/src/tool/privacyBlur/i18n/id.ts +238 -0
- package/src/tool/privacyBlur/i18n/it.ts +238 -0
- package/src/tool/privacyBlur/i18n/ja.ts +238 -0
- package/src/tool/privacyBlur/i18n/ko.ts +238 -0
- package/src/tool/privacyBlur/i18n/nl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pt.ts +238 -0
- package/src/tool/privacyBlur/i18n/ru.ts +238 -0
- package/src/tool/privacyBlur/i18n/sv.ts +238 -0
- package/src/tool/privacyBlur/i18n/tr.ts +238 -0
- package/src/tool/privacyBlur/i18n/zh.ts +238 -0
- package/src/tool/privacyBlur/index.ts +15 -7
- package/src/tool/subtitleSync/i18n/de.ts +241 -0
- package/src/tool/subtitleSync/i18n/en.ts +1 -1
- package/src/tool/subtitleSync/i18n/es.ts +1 -1
- package/src/tool/subtitleSync/i18n/fr.ts +8 -8
- package/src/tool/subtitleSync/i18n/id.ts +241 -0
- package/src/tool/subtitleSync/i18n/it.ts +241 -0
- package/src/tool/subtitleSync/i18n/ja.ts +241 -0
- package/src/tool/subtitleSync/i18n/ko.ts +241 -0
- package/src/tool/subtitleSync/i18n/nl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pt.ts +241 -0
- package/src/tool/subtitleSync/i18n/ru.ts +241 -0
- package/src/tool/subtitleSync/i18n/sv.ts +241 -0
- package/src/tool/subtitleSync/i18n/tr.ts +241 -0
- package/src/tool/subtitleSync/i18n/zh.ts +241 -0
- package/src/tool/subtitleSync/index.ts +15 -7
- package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
- package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
- package/src/tool/timelapseCalculator/index.ts +16 -8
- package/src/tool/tvDistance/i18n/de.ts +223 -0
- package/src/tool/tvDistance/i18n/en.ts +1 -1
- package/src/tool/tvDistance/i18n/es.ts +1 -1
- package/src/tool/tvDistance/i18n/fr.ts +1 -1
- package/src/tool/tvDistance/i18n/id.ts +223 -0
- package/src/tool/tvDistance/i18n/it.ts +223 -0
- package/src/tool/tvDistance/i18n/ja.ts +223 -0
- package/src/tool/tvDistance/i18n/ko.ts +223 -0
- package/src/tool/tvDistance/i18n/nl.ts +223 -0
- package/src/tool/tvDistance/i18n/pl.ts +223 -0
- package/src/tool/tvDistance/i18n/pt.ts +223 -0
- package/src/tool/tvDistance/i18n/ru.ts +223 -0
- package/src/tool/tvDistance/i18n/sv.ts +223 -0
- package/src/tool/tvDistance/i18n/tr.ts +223 -0
- package/src/tool/tvDistance/i18n/zh.ts +223 -0
- package/src/tool/tvDistance/index.ts +15 -7
- package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/en.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/es.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/fr.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
- package/src/tool/videoFrameExtractor/index.ts +16 -8
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { VideoFrameExtractorUI, VideoFrameExtractorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'online-video-frame-extraktor-hd-stills-erfassen';
|
|
5
|
+
const title = 'Video Frame Extraktor: HD Einzelbilder erfassen';
|
|
6
|
+
const description = 'Extrahieren Sie Einzelbilder aus Ihren Videos mit bildgenauer Präzision. Halten Sie perfekte Momente in HD lokal und kostenlos fest.';
|
|
7
|
+
|
|
8
|
+
const ui: VideoFrameExtractorUI = {
|
|
9
|
+
uploadTitle: "Videodatei hochladen",
|
|
10
|
+
uploadFormats: "MP4, WebM, MOV oder MKV (Max. 500MB)",
|
|
11
|
+
privacyNote: "Das Video wird nicht ins Internet hochgeladen, es wird in Ihrem Browser verarbeitet.",
|
|
12
|
+
playLabel: "Abspielen",
|
|
13
|
+
pauseLabel: "Pause",
|
|
14
|
+
captureBtn: "Frame erfassen",
|
|
15
|
+
prevFrame: "-1F",
|
|
16
|
+
nextFrame: "+1F",
|
|
17
|
+
batchTitle: "Automatische Extraktion",
|
|
18
|
+
batchEvery: "Alle",
|
|
19
|
+
batchStart: "Sequenz starten",
|
|
20
|
+
batchProcessing: "Extrahiere...",
|
|
21
|
+
galleryTitle: "Erfasste Frames",
|
|
22
|
+
galleryEmpty: "Erfasste Bilder erscheinen hier.",
|
|
23
|
+
downloadAll: "Alle herunterladen",
|
|
24
|
+
downloadHD: "HD Bild herunterladen",
|
|
25
|
+
resetBtn: "Anderes Video hochladen"
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const faq: VideoFrameExtractorLocaleContent['faq'] = [
|
|
29
|
+
{
|
|
30
|
+
question: "Kann ich Frames aus langen Videos extrahieren?",
|
|
31
|
+
answer: "Ja, solange Ihr Browser über genügend Arbeitsspeicher verfügt. Wir empfehlen Dateien bis zu 500 MB für eine optimale Leistung.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: "In welcher Auflösung werden die Aufnahmen gespeichert?",
|
|
35
|
+
answer: "Aufnahmen erfolgen in der nativen Auflösung des Originalvideos. Wenn Ihr Video in 4K vorliegt, erhalten Sie ein hochwertiges 4K-Bild.",
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: VideoFrameExtractorLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: "Video hochladen",
|
|
42
|
+
text: "Wählen Sie die Videodatei von Ihrem Gerät aus. Wir laden sie auf keinen Server hoch.",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "Zum exakten Moment navigieren",
|
|
46
|
+
text: "Nutzen Sie die Zeitleiste oder die ±1 Frame Schaltflächen für chirurgische Präzision.",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Frame erfassen",
|
|
50
|
+
text: "Drücken Sie die Erfassungstaste, um den Moment in der Galerie unten zu speichern.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "In hoher Qualität herunterladen",
|
|
54
|
+
text: "Laden Sie einzelne Aufnahmen oder die gesamte Sitzung im optimierten WebP Format herunter.",
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
const bibliography: VideoFrameExtractorLocaleContent['bibliography'] = [
|
|
59
|
+
{
|
|
60
|
+
name: "Capturing frames with HTML5 Video API",
|
|
61
|
+
url: "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video",
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: VideoFrameExtractorLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'summary',
|
|
68
|
+
title: 'Professionelle Video Frame Extraktion',
|
|
69
|
+
items: [
|
|
70
|
+
'Bildgenaue Präzision (±1 Frame) für perfekte Aufnahmen',
|
|
71
|
+
'Unterstützt MP4, WebM, MOV, MKV bis zu 500MB',
|
|
72
|
+
'Native Videoauflösung bleibt erhalten (SD, HD, 4K)',
|
|
73
|
+
'Automatische Batch-Extraktion in benutzerdefinierten Intervallen'
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{ type: 'title', text: 'Frame Extraktion: Zeit im Video einfrieren', level: 2 },
|
|
77
|
+
{ type: 'paragraph', html: 'Manchmal sagt ein Bild mehr als tausend Worte. Unser Tool nutzt die lokale Leistung Ihres Browsers, um präzise Frames zu extrahieren, ohne dass professionelle Software erforderlich ist.' },
|
|
78
|
+
|
|
79
|
+
{ type: 'stats', items: [
|
|
80
|
+
{ value: '±1', label: 'Bildgenaue Präzision', icon: 'mdi:target' },
|
|
81
|
+
{ value: '100%', label: 'Native Auflösung', icon: 'mdi:video-high-definition' },
|
|
82
|
+
{ value: '500MB', label: 'Unterstützte Dateien', icon: 'mdi:file-video' }
|
|
83
|
+
], columns: 3 },
|
|
84
|
+
|
|
85
|
+
{ type: 'title', text: 'Professionelle Anwendungsfälle', level: 3 },
|
|
86
|
+
{ type: 'comparative', items: [
|
|
87
|
+
{
|
|
88
|
+
title: 'Kino und Fotografie',
|
|
89
|
+
description: 'Frames als visuelle Referenz oder Komposition erfassen',
|
|
90
|
+
icon: 'mdi:film',
|
|
91
|
+
points: [
|
|
92
|
+
'Stills für das Filmmarketing extrahieren',
|
|
93
|
+
'Referenzen für die Szenenkomposition',
|
|
94
|
+
'Bild-für-Bild-Analyse'
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
title: 'Digitaler Content',
|
|
99
|
+
description: 'Thumbnails und Cover für soziale Medien erstellen',
|
|
100
|
+
icon: 'mdi:youtube',
|
|
101
|
+
points: [
|
|
102
|
+
'Hochauflösende YouTube-Thumbnails',
|
|
103
|
+
'Social-Media-Cover',
|
|
104
|
+
'Bilder für Präsentationen'
|
|
105
|
+
],
|
|
106
|
+
highlight: true
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Technische Dokumentation',
|
|
110
|
+
description: 'Frames aus Tutorials und Demonstrationen extrahieren',
|
|
111
|
+
icon: 'mdi:book-open',
|
|
112
|
+
points: [
|
|
113
|
+
'Screenshots aus Tutorial-Videos',
|
|
114
|
+
'Visuelle Schritt-für-Schritt-Dokumentation',
|
|
115
|
+
'Echtzeit-Bewegungsanalyse'
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
title: 'Sport und Action',
|
|
120
|
+
description: 'Den präzisen Moment maximaler Action festhalten',
|
|
121
|
+
icon: 'mdi:dumbbell',
|
|
122
|
+
points: [
|
|
123
|
+
'Analyse der Sporttechnik Bild für Bild',
|
|
124
|
+
'Festhalten heldenhafter Momente',
|
|
125
|
+
'Bewegungsstudie'
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
], columns: 2 },
|
|
129
|
+
|
|
130
|
+
{ type: 'title', text: 'Unterstützte Videoformate', level: 3 },
|
|
131
|
+
{ type: 'table', headers: ['Format', 'Erweiterung', 'Kompatibilität', 'Hinweise'], rows: [
|
|
132
|
+
['MPEG-4', 'MP4', 'Universell (100%)', 'Beste Kompression, weit verbreitet'],
|
|
133
|
+
['WebM', 'WebM', 'Moderne Browser', 'Überlegene Kompression, kleinere Größe'],
|
|
134
|
+
['QuickTime', 'MOV', 'Safari, einige Player', 'Apple-Standard'],
|
|
135
|
+
['Matroska', 'MKV', 'Moderne Browser', 'Flexibler Container']
|
|
136
|
+
] },
|
|
137
|
+
|
|
138
|
+
{ type: 'card', title: 'Bildgenaue Präzision', html: 'Das Vor- oder Zurückbewegen um einen einzigen Frame (±1 Frame) ist entscheidend, um den perfekten Augenblick einzufangen: einen Sprung, ein Lächeln, eine Geste. Unser Tool gibt Ihnen millimetergenaue Kontrolle.' },
|
|
139
|
+
|
|
140
|
+
{ type: 'proscons', items: [
|
|
141
|
+
{
|
|
142
|
+
pro: 'Vollständige Privatsphäre: Das Video wird 100% lokal verarbeitet',
|
|
143
|
+
con: 'Begrenzt durch verfügbaren RAM-Speicher (~500MB empfohlen)'
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
pro: 'Native Auflösung bleibt erhalten: SD, HD, 4K ohne Re-Kompression',
|
|
147
|
+
con: 'Erfordert modernen Browser mit HTML5-Video-Unterstützung'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
pro: 'Automatische Batch-Extraktion in Intervallen',
|
|
151
|
+
con: 'Für fortgeschrittene Bearbeitung ist ein Videoeditor erforderlich'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
pro: 'Export als optimiertes WebP oder unkomprimiertes PNG',
|
|
155
|
+
con: 'Ein Bild nach dem anderen (kein automatisierter GIF-Export)'
|
|
156
|
+
}
|
|
157
|
+
], proTitle: 'Vorteile', conTitle: 'Einschränkungen' },
|
|
158
|
+
|
|
159
|
+
{ type: 'diagnostic', variant: 'info', title: 'Auflösung und Bildrate', icon: 'mdi:information', badge: 'Technisch', html: 'Die finale Frame-Auflösung hängt vom Originalvideo ab. Wir bewahren die nativen Informationen des Videos ohne Upscaling.' },
|
|
160
|
+
|
|
161
|
+
{ type: 'glossary', items: [
|
|
162
|
+
{
|
|
163
|
+
term: 'Frame',
|
|
164
|
+
definition: 'Einzelbild in einer Videosequenz. Ein 24-fps-Video enthält 24 Frames pro Sekunde.'
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
term: 'FPS (Frames Per Second)',
|
|
168
|
+
definition: 'Bilder pro Sekunde. Bestimmt die Flüssigkeit der Bewegung.'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
term: 'Video-Codec',
|
|
172
|
+
definition: 'Kompressionsalgorithmus: H.264, VP9, HEVC. Bestimmt Größe und Qualität.'
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
term: 'Bitrate',
|
|
176
|
+
definition: 'Datenmenge pro Sekunde. Höhere Bitrate = höhere Qualität.'
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
term: 'Video-Auflösung',
|
|
180
|
+
definition: 'Pixel-Abmessungen: 720p, 1080p, 4K, 8K.'
|
|
181
|
+
}
|
|
182
|
+
] },
|
|
183
|
+
|
|
184
|
+
{ type: 'message', title: 'Professionelle Frame Extraktion', ariaLabel: 'Technische Info zur Videoextraktion', html: 'Keine komplexen Konverter nötig. Ein perfekter Frame ist nur 3 Klicks entfernt: Video hochladen, navigieren, erfassen.' },
|
|
185
|
+
|
|
186
|
+
{ type: 'title', text: 'Momente aus Videos einfrieren', level: 3 },
|
|
187
|
+
{ type: 'paragraph', html: 'Jedes Video enthält hunderte von Frames. Nutzen Sie dieses Tool, um die perfekten Momente ohne Qualitätsverlust zu extrahieren.' }
|
|
188
|
+
];
|
|
189
|
+
|
|
190
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
191
|
+
'@context': 'https://schema.org',
|
|
192
|
+
'@type': 'FAQPage',
|
|
193
|
+
mainEntity: faq.map((item) => ({
|
|
194
|
+
'@type': 'Question',
|
|
195
|
+
name: item.question,
|
|
196
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
197
|
+
})),
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
const howToSchema: WithContext<HowTo> = {
|
|
201
|
+
'@context': 'https://schema.org',
|
|
202
|
+
'@type': 'HowTo',
|
|
203
|
+
name: title,
|
|
204
|
+
description,
|
|
205
|
+
step: howTo.map((step) => ({
|
|
206
|
+
'@type': 'HowToStep',
|
|
207
|
+
name: step.name,
|
|
208
|
+
text: step.text,
|
|
209
|
+
})),
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
213
|
+
'@context': 'https://schema.org',
|
|
214
|
+
'@type': 'SoftwareApplication',
|
|
215
|
+
name: title,
|
|
216
|
+
description,
|
|
217
|
+
applicationCategory: 'UtilitiesApplication',
|
|
218
|
+
operatingSystem: 'Web',
|
|
219
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
220
|
+
inLanguage: 'de',
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
export const content: VideoFrameExtractorLocaleContent = {
|
|
224
|
+
slug,
|
|
225
|
+
title,
|
|
226
|
+
description,
|
|
227
|
+
ui,
|
|
228
|
+
seo,
|
|
229
|
+
faq,
|
|
230
|
+
faqTitle: 'Häufig gestellte Fragen zur Video Frame Extraktion',
|
|
231
|
+
bibliography,
|
|
232
|
+
bibliographyTitle: 'Technische Standards für Videoaufnahmen',
|
|
233
|
+
howTo,
|
|
234
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
235
|
+
};
|
|
@@ -2,7 +2,7 @@ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dt
|
|
|
2
2
|
import type { VideoFrameExtractorUI, VideoFrameExtractorLocaleContent } from '../index';
|
|
3
3
|
|
|
4
4
|
const slug = 'online-video-frame-extractor-capture-hd-stills';
|
|
5
|
-
const title = 'Video Frame Extractor
|
|
5
|
+
const title = 'Video Frame Extractor: Capture HD stills';
|
|
6
6
|
const description = 'Extract individual images from your videos with frame-perfect precision. Capture perfect moments in HD locally and for free.';
|
|
7
7
|
|
|
8
8
|
const ui: VideoFrameExtractorUI = {
|
|
@@ -2,7 +2,7 @@ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dt
|
|
|
2
2
|
import type { VideoFrameExtractorUI, VideoFrameExtractorLocaleContent } from '../index';
|
|
3
3
|
|
|
4
4
|
const slug = 'extractor-frames-video';
|
|
5
|
-
const title = 'Extractor de Frames de Vídeo
|
|
5
|
+
const title = 'Extractor de Frames de Vídeo: Captura fotogramas en alta resolución';
|
|
6
6
|
const description = 'Extrae imágenes individuales de tus vídeos con precisión de frame. Captura momentos perfectos en HD de forma local y gratuita.';
|
|
7
7
|
|
|
8
8
|
const ui: VideoFrameExtractorUI = {
|
|
@@ -2,7 +2,7 @@ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dt
|
|
|
2
2
|
import type { VideoFrameExtractorUI, VideoFrameExtractorLocaleContent } from '../index';
|
|
3
3
|
|
|
4
4
|
const slug = 'extracteur-frames-video-en-ligne-capturer-images-hd';
|
|
5
|
-
const title = 'Extracteur de Frames de Vidéo
|
|
5
|
+
const title = 'Extracteur de Frames de Vidéo: Capturez des images haute résolution';
|
|
6
6
|
const description = 'Extrayez des images individuelles de vos vidéos avec une précision à l\'image près. Capturez des moments parfaits en HD localement et gratuitement.';
|
|
7
7
|
|
|
8
8
|
const ui: VideoFrameExtractorUI = {
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { VideoFrameExtractorUI, VideoFrameExtractorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'ekstrak-frame-video-online-tangkap-gambar-hd';
|
|
5
|
+
const title = 'Ekstrak Frame Video: Ambil cuplikan HD';
|
|
6
|
+
const description = 'Ekstrak gambar individual dari video Anda dengan presisi frame yang sempurna. Tangkap momen sempurna dalam format HD secara lokal dan gratis.';
|
|
7
|
+
|
|
8
|
+
const ui: VideoFrameExtractorUI = {
|
|
9
|
+
uploadTitle: "Unggah file video",
|
|
10
|
+
uploadFormats: "MP4, WebM, MOV, atau MKV (Maks. 500MB)",
|
|
11
|
+
privacyNote: "Video tidak diunggah ke Internet, proses dilakukan di browser Anda.",
|
|
12
|
+
playLabel: "Putar",
|
|
13
|
+
pauseLabel: "Jeda",
|
|
14
|
+
captureBtn: "Tangkap Frame",
|
|
15
|
+
prevFrame: "-1F",
|
|
16
|
+
nextFrame: "+1F",
|
|
17
|
+
batchTitle: "Ekstraksi Otomatis",
|
|
18
|
+
batchEvery: "Setiap",
|
|
19
|
+
batchStart: "Mulai Urutan",
|
|
20
|
+
batchProcessing: "Mengekstrak...",
|
|
21
|
+
galleryTitle: "Frame yang Ditangkap",
|
|
22
|
+
galleryEmpty: "Hasil tangkapan akan muncul di sini.",
|
|
23
|
+
downloadAll: "Unduh Semua",
|
|
24
|
+
downloadHD: "Unduh Gambar HD",
|
|
25
|
+
resetBtn: "Unggah video lain"
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const faq: VideoFrameExtractorLocaleContent['faq'] = [
|
|
29
|
+
{
|
|
30
|
+
question: "Bisakah saya mengekstrak frame dari video berdurasi panjang?",
|
|
31
|
+
answer: "Ya, selama browser Anda memiliki cukup RAM untuk memuat video tersebut. Kami merekomendasikan file hingga 500MB untuk performa optimal.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: "Berapa resolusi gambar yang disimpan?",
|
|
35
|
+
answer: "Tangkapan layar dibuat sesuai resolusi asli video. Jika video Anda 4K, Anda akan mendapatkan gambar 4K berkualitas tinggi.",
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: VideoFrameExtractorLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: "Unggah video Anda",
|
|
42
|
+
text: "Pilih file video dari perangkat Anda. Kami tidak akan mengunggahnya ke server mana pun.",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "Navigasikan ke momen yang tepat",
|
|
46
|
+
text: "Gunakan bila garis waktu atau tombol ±1 frame untuk presisi yang sangat akurat.",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Tangkap frame",
|
|
50
|
+
text: "Tekan tombol tangkap untuk menyimpan momen tersebut ke galeri di bawah.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Unduh dalam kualitas tinggi",
|
|
54
|
+
text: "Unduh hasil tangkapan secara individual atau seluruh sesi dalam format WebP yang dioptimalkan.",
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
const bibliography: VideoFrameExtractorLocaleContent['bibliography'] = [
|
|
59
|
+
{
|
|
60
|
+
name: "Capturing frames with HTML5 Video API",
|
|
61
|
+
url: "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video",
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: VideoFrameExtractorLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'summary',
|
|
68
|
+
title: 'Ekstraksi Frame Video Profesional',
|
|
69
|
+
items: [
|
|
70
|
+
'Presisi satu frame (±1 frame) untuk tangkapan sempurna',
|
|
71
|
+
'Mendukung MP4, WebM, MOV, MKV hingga 500MB',
|
|
72
|
+
'Resolusi asli video dipertahankan (SD, HD, 4K)',
|
|
73
|
+
'Ekstraksi batch otomatis pada interval khusus'
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{ type: 'title', text: 'Ekstraksi Frame: Menghentikan Waktu dalam Video', level: 2 },
|
|
77
|
+
{ type: 'paragraph', html: 'Kadang-kadang sebuah gambar bermakna seribu kata. Alat kami menggunakan kekuatan lokal browser Anda untuk mengekstrak frame presisi tanpa perlu perangkat lunak profesional.' },
|
|
78
|
+
|
|
79
|
+
{ type: 'stats', items: [
|
|
80
|
+
{ value: '±1', label: 'Presisi Satu Frame', icon: 'mdi:target' },
|
|
81
|
+
{ value: '100%', label: 'Resolusi Asli', icon: 'mdi:video-high-definition' },
|
|
82
|
+
{ value: '500MB', label: 'File Didukung', icon: 'mdi:file-video' }
|
|
83
|
+
], columns: 3 },
|
|
84
|
+
|
|
85
|
+
{ type: 'title', text: 'Kasus Penggunaan Profesional', level: 3 },
|
|
86
|
+
{ type: 'comparative', items: [
|
|
87
|
+
{
|
|
88
|
+
title: 'Sinema dan Fotografi',
|
|
89
|
+
description: 'Tangkap frame sebagai referensi visual atau komposisi',
|
|
90
|
+
icon: 'mdi:film',
|
|
91
|
+
points: [
|
|
92
|
+
'Ekstrak still image untuk pemasaran film',
|
|
93
|
+
'Referensi komposisi adegan',
|
|
94
|
+
'Analisis frame demi frame'
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
title: 'Konten Digital',
|
|
99
|
+
description: 'Buat thumbnail dan sampul untuk media sosial',
|
|
100
|
+
icon: 'mdi:youtube',
|
|
101
|
+
points: [
|
|
102
|
+
'Thumbnail YouTube resolusi tinggi',
|
|
103
|
+
'Sampul media sosial',
|
|
104
|
+
'Gambar untuk presentasi'
|
|
105
|
+
],
|
|
106
|
+
highlight: true
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Dokumentasi Teknis',
|
|
110
|
+
description: 'Ekstrak frame dari tutorial dan demonstrasi',
|
|
111
|
+
icon: 'mdi:book-open',
|
|
112
|
+
points: [
|
|
113
|
+
'Tangkapan layar dari video tutorial',
|
|
114
|
+
'Dokumentasi visual langkah demi langkah',
|
|
115
|
+
'Analisis gerakan real-time'
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
title: 'Olahraga dan Aksi',
|
|
120
|
+
description: 'Tangkap momen tepat dari aksi maksimal',
|
|
121
|
+
icon: 'mdi:dumbbell',
|
|
122
|
+
points: [
|
|
123
|
+
'Analisis teknik olahraga frame demi frame',
|
|
124
|
+
'Penangkapan momen heroik',
|
|
125
|
+
'Studi gerakan'
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
], columns: 2 },
|
|
129
|
+
|
|
130
|
+
{ type: 'title', text: 'Format Video yang Didukung', level: 3 },
|
|
131
|
+
{ type: 'table', headers: ['Format', 'Ekstensi', 'Kompatibilitas', 'Catatan'], rows: [
|
|
132
|
+
['MPEG-4', 'MP4', 'Universal (100%)', 'Kompresi terbaik, banyak digunakan'],
|
|
133
|
+
['WebM', 'WebM', 'Browser modern', 'Kompresi unggul, ukuran kecil'],
|
|
134
|
+
['QuickTime', 'MOV', 'Safari, beberapa aplikasi', 'Standar Apple'],
|
|
135
|
+
['Matroska', 'MKV', 'Browser modern', 'Kontainer fleksibel']
|
|
136
|
+
] },
|
|
137
|
+
|
|
138
|
+
{ type: 'card', title: 'Presisi Satu Frame', html: 'Bergerak satu frame maju atau mundur (±1 frame) sangat penting untuk menangkap momen sempurna: lompatan, senyuman, atau gerakan tertentu. Alat kami memberi Anda kontrol milimeter.' },
|
|
139
|
+
|
|
140
|
+
{ type: 'proscons', items: [
|
|
141
|
+
{
|
|
142
|
+
pro: 'Privasi total: video diproses 100% secara lokal di browser Anda',
|
|
143
|
+
con: 'Terbatas pada ukuran memori RAM yang tersedia (disarankan ~500MB)'
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
pro: 'Resolusi asli dipertahankan: SD, HD, 4K tanpa kompresi ulang',
|
|
147
|
+
con: 'Memerlukan browser modern dengan dukungan Video HTML5'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
pro: 'Ekstraksi batch otomatis pada interval khusus',
|
|
151
|
+
con: 'Untuk pengeditan tingkat lanjut (potong), Anda perlu editor video'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
pro: 'Ekspor frame dalam format WebP yang dioptimalkan atau PNG',
|
|
155
|
+
con: 'Satu frame setiap kali (tidak mengekspor sekuens GIF otomatis)'
|
|
156
|
+
}
|
|
157
|
+
], proTitle: 'Keuntungan', conTitle: 'Keterbatasan' },
|
|
158
|
+
|
|
159
|
+
{ type: 'diagnostic', variant: 'info', title: 'Resolusi dan Frame Rate', icon: 'mdi:information', badge: 'Teknis', html: 'Resolusi frame akhir tergantung pada video aslinya. Kami mempertahankan informasi asli video tanpa upscaling.' },
|
|
160
|
+
|
|
161
|
+
{ type: 'glossary', items: [
|
|
162
|
+
{
|
|
163
|
+
term: 'Frame',
|
|
164
|
+
definition: 'Gambar individual dalam urutan video. Video 24 fps berisi 24 frame per detik.'
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
term: 'FPS (Frames Per Second)',
|
|
168
|
+
definition: 'Frame per detik. Menentukan kelancaran gerakan.'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
term: 'Video Codec',
|
|
172
|
+
definition: 'Algoritma kompresi: H.264, VP9, HEVC. Menentukan ukuran dan kualitas file.'
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
term: 'Bitrate',
|
|
176
|
+
definition: 'Jumlah data yang diproses per detik. Bitrate lebih tinggi = kualitas lebih tinggi.'
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
term: 'Resolusi Video',
|
|
180
|
+
definition: 'Dimensi piksel: 720p, 1080p, 4K, 8K.'
|
|
181
|
+
}
|
|
182
|
+
] },
|
|
183
|
+
|
|
184
|
+
{ type: 'message', title: 'Ekstraksi Frame Profesional', ariaLabel: 'Informasi teknis tentang ekstraksi video', html: 'Anda tidak butuh konverter online yang rumit. Frame sempurna hanya berjarak 3 klik: unggah video, navigasi, tangkap.' },
|
|
185
|
+
|
|
186
|
+
{ type: 'title', text: 'Membekukan Momen Video', level: 3 },
|
|
187
|
+
{ type: 'paragraph', html: 'Setiap video berisi ratusan frame. Gunakan alat ini untuk mengekstrak momen-momen sempurna tersebut tanpa mengurangi kualitas atau privasi.' }
|
|
188
|
+
];
|
|
189
|
+
|
|
190
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
191
|
+
'@context': 'https://schema.org',
|
|
192
|
+
'@type': 'FAQPage',
|
|
193
|
+
mainEntity: faq.map((item) => ({
|
|
194
|
+
'@type': 'Question',
|
|
195
|
+
name: item.question,
|
|
196
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
197
|
+
})),
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
const howToSchema: WithContext<HowTo> = {
|
|
201
|
+
'@context': 'https://schema.org',
|
|
202
|
+
'@type': 'HowTo',
|
|
203
|
+
name: title,
|
|
204
|
+
description,
|
|
205
|
+
step: howTo.map((step) => ({
|
|
206
|
+
'@type': 'HowToStep',
|
|
207
|
+
name: step.name,
|
|
208
|
+
text: step.text,
|
|
209
|
+
})),
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
213
|
+
'@context': 'https://schema.org',
|
|
214
|
+
'@type': 'SoftwareApplication',
|
|
215
|
+
name: title,
|
|
216
|
+
description,
|
|
217
|
+
applicationCategory: 'UtilitiesApplication',
|
|
218
|
+
operatingSystem: 'Web',
|
|
219
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
220
|
+
inLanguage: 'id',
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
export const content: VideoFrameExtractorLocaleContent = {
|
|
224
|
+
slug,
|
|
225
|
+
title,
|
|
226
|
+
description,
|
|
227
|
+
ui,
|
|
228
|
+
seo,
|
|
229
|
+
faq,
|
|
230
|
+
faqTitle: 'Pertanyaan yang Sering Diajukan tentang Ekstraksi Frame Video',
|
|
231
|
+
bibliography,
|
|
232
|
+
bibliographyTitle: 'Standar Teknis untuk Penangkapan Video',
|
|
233
|
+
howTo,
|
|
234
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
235
|
+
};
|