@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 = 'ekstrakcja-klatek-wideo-online-przechwytywanie-stills-hd';
|
|
5
|
+
const title = 'Ekstrakcja klatek wideo: Przechwytywanie obrazów HD';
|
|
6
|
+
const description = 'Wyodrębniaj poszczególne obrazy z filmów z precyzją co do klatki. Przechwytuj idealne momenty w HD lokalnie i za darmo.';
|
|
7
|
+
|
|
8
|
+
const ui: VideoFrameExtractorUI = {
|
|
9
|
+
uploadTitle: "Prześlij plik wideo",
|
|
10
|
+
uploadFormats: "MP4, WebM, MOV lub MKV (Maks. 500MB)",
|
|
11
|
+
privacyNote: "Wideo nie jest przesyłane do Internetu, jest przetwarzane w Twojej przeglądarce.",
|
|
12
|
+
playLabel: "Odtwórz",
|
|
13
|
+
pauseLabel: "Pauza",
|
|
14
|
+
captureBtn: "Przechwyć klatkę",
|
|
15
|
+
prevFrame: "-1F",
|
|
16
|
+
nextFrame: "+1F",
|
|
17
|
+
batchTitle: "Automatyczna ekstrakcja",
|
|
18
|
+
batchEvery: "Co",
|
|
19
|
+
batchStart: "Rozpocznij sekwencję",
|
|
20
|
+
batchProcessing: "Wyodrębnianie...",
|
|
21
|
+
galleryTitle: "Przechwycone klatki",
|
|
22
|
+
galleryEmpty: "Przechwycone obrazy pojawią się tutaj.",
|
|
23
|
+
downloadAll: "Pobierz wszystko",
|
|
24
|
+
downloadHD: "Pobierz obraz HD",
|
|
25
|
+
resetBtn: "Prześlij inne wideo"
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const faq: VideoFrameExtractorLocaleContent['faq'] = [
|
|
29
|
+
{
|
|
30
|
+
question: "Czy mogę wyodrębniać klatki z długich filmów?",
|
|
31
|
+
answer: "Tak, o ile Twoja przeglądarka ma wystarczającą ilość pamięci RAM, aby załadować wideo. Zalecamy pliki do 500 MB dla optymalnej wydajności.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: "W jakiej rozdzielczości są zapisywane obrazy?",
|
|
35
|
+
answer: "Zrzuty są wykonywane w natywnej rozdzielczości oryginalnego wideo. Jeśli Twój film ma jakość 4K, otrzymasz wysokiej jakości obraz 4K.",
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: VideoFrameExtractorLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: "Prześlij swoje wideo",
|
|
42
|
+
text: "Wybierz plik wideo ze swojego urządzenia. Nie będziemy go przesyłać na żaden serwer.",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "Przejdź do dokładnego momentu",
|
|
46
|
+
text: "Użyj paska osi czasu lub przycisków ±1 klatka dla chirurgicznej precyzji.",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Przechwyć klatkę",
|
|
50
|
+
text: "Naciśnij przycisk przechwytywania, aby zapisać dany moment w galerii poniżej.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Pobierz w wysokiej jakości",
|
|
54
|
+
text: "Pobierz pojedyncze zrzuty lub całą sesję w zoptymalizowanym formacie WebP.",
|
|
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: 'Profesjonalna ekstrakcja klatek wideo',
|
|
69
|
+
items: [
|
|
70
|
+
'Precyzja co do jednej klatki (±1 klatka) dla idealnego ujęcia',
|
|
71
|
+
'Obsługa MP4, WebM, MOV, MKV do 500MB',
|
|
72
|
+
'Zachowanie natywnej rozdzielczości wideo (SD, HD, 4K)',
|
|
73
|
+
'Automatyczna ekstrakcja seryjna w niestandardowych odstępach'
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{ type: 'title', text: 'Ekstrakcja klatek: Zamrażanie czasu w wideo', level: 2 },
|
|
77
|
+
{ type: 'paragraph', html: 'Czasami obraz jest wart więcej niż tysiąc słów. Nasze narzędzie wykorzystuje lokalną moc przeglądarki do precyzyjnego wyodrębniania klatek bez potrzeby posiadania profesjonalnego oprogramowania.' },
|
|
78
|
+
|
|
79
|
+
{ type: 'stats', items: [
|
|
80
|
+
{ value: '±1', label: 'Precyzja klatki', icon: 'mdi:target' },
|
|
81
|
+
{ value: '100%', label: 'Natywna rozdzielczość', icon: 'mdi:video-high-definition' },
|
|
82
|
+
{ value: '500MB', label: 'Obsługiwane pliki', icon: 'mdi:file-video' }
|
|
83
|
+
], columns: 3 },
|
|
84
|
+
|
|
85
|
+
{ type: 'title', text: 'Profesjonalne zastosowania', level: 3 },
|
|
86
|
+
{ type: 'comparative', items: [
|
|
87
|
+
{
|
|
88
|
+
title: 'Kino i fotografia',
|
|
89
|
+
description: 'Przechwytywanie klatek jako referencja wizualna lub kompozycja',
|
|
90
|
+
icon: 'mdi:film',
|
|
91
|
+
points: [
|
|
92
|
+
'Ekstrakcja fotosów do marketingu filmowego',
|
|
93
|
+
'Referencje do kompozycji scen',
|
|
94
|
+
'Analiza klatka po klatce'
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
title: 'Content cyfrowy',
|
|
99
|
+
description: 'Tworzenie miniatur i okładek do mediów społecznościowych',
|
|
100
|
+
icon: 'mdi:youtube',
|
|
101
|
+
points: [
|
|
102
|
+
'Miniatury YouTube w wysokiej rozdzielczości',
|
|
103
|
+
'Okładki do mediów społecznościowych',
|
|
104
|
+
'Obrazy do prezentacji'
|
|
105
|
+
],
|
|
106
|
+
highlight: true
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Dokumentacja techniczna',
|
|
110
|
+
description: 'Wyodrębnianie klatek z samouczków i demonstracji',
|
|
111
|
+
icon: 'mdi:book-open',
|
|
112
|
+
points: [
|
|
113
|
+
'Zrzuty ekranu z filmów instruktażowych',
|
|
114
|
+
'Wizualna dokumentacja krok po kroku',
|
|
115
|
+
'Analiza ruchu w czasie rzeczywistym'
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
title: 'Sport i akcja',
|
|
120
|
+
description: 'Przechwytywanie precyzyjnego momentu maksymalnej akcji',
|
|
121
|
+
icon: 'mdi:dumbbell',
|
|
122
|
+
points: [
|
|
123
|
+
'Analiza techniki sportowej klatka po klatce',
|
|
124
|
+
'Przechwytywanie heroicznych momentów',
|
|
125
|
+
'Studium ruchu'
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
], columns: 2 },
|
|
129
|
+
|
|
130
|
+
{ type: 'title', text: 'Obsługiwane formaty wideo', level: 3 },
|
|
131
|
+
{ type: 'table', headers: ['Format', 'Rozszerzenie', 'Kompatybilność', 'Uwagi'], rows: [
|
|
132
|
+
['MPEG-4', 'MP4', 'Uniwersalna (100%)', 'Najlepsza kompresja, powszechnie używany'],
|
|
133
|
+
['WebM', 'WebM', 'Nowoczesne przeglądarki', 'Doskonała kompresja, mniejszy rozmiar'],
|
|
134
|
+
['QuickTime', 'MOV', 'Safari, niektóre odtwarzacze', 'Standard Apple'],
|
|
135
|
+
['Matroska', 'MKV', 'Nowoczesne przeglądarki', 'Elastyczny kontener']
|
|
136
|
+
] },
|
|
137
|
+
|
|
138
|
+
{ type: 'card', title: 'Precyzja co do klatki', html: 'Przesunięcie o jedną klatkę do przodu lub do tyłu (±1 klatka) jest kluczowe dla uchwycenia idealnego momentu: skoku, uśmiechu, gestu. Nasze narzędzie zapewnia milimetrową kontrolę.' },
|
|
139
|
+
|
|
140
|
+
{ type: 'proscons', items: [
|
|
141
|
+
{
|
|
142
|
+
pro: 'Całkowita prywatność: wideo jest przetwarzane w 100% lokalnie w przeglądarce',
|
|
143
|
+
con: 'Ograniczone do dostępnego rozmiaru pamięci RAM (~500MB zalecane)'
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
pro: 'Zachowanie natywnej rozdzielczości: SD, HD, 4K bez rekompresji',
|
|
147
|
+
con: 'Wymaga nowoczesnej przeglądarki z obsługą HTML5 Video'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
pro: 'Automatyczna ekstrakcja seryjna w odstępach',
|
|
151
|
+
con: 'Do zaawansowanej edycji wymagany jest edytor wideo'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
pro: 'Eksport klatek w zoptymalizowanym WebP lub PNG',
|
|
155
|
+
con: 'Jedna klatka na raz (brak eksportu zautomatyzowanych sekwencji GIF)'
|
|
156
|
+
}
|
|
157
|
+
], proTitle: 'Zalety', conTitle: 'Ograniczenia' },
|
|
158
|
+
|
|
159
|
+
{ type: 'diagnostic', variant: 'info', title: 'Rozdzielczość i liczba klatek', icon: 'mdi:information', badge: 'Techniczne', html: 'Ostateczna rozdzielczość klatki zależy od oryginalnego wideo. Zachowujemy natywne informacje bez upscalingu.' },
|
|
160
|
+
|
|
161
|
+
{ type: 'glossary', items: [
|
|
162
|
+
{
|
|
163
|
+
term: 'Klatka',
|
|
164
|
+
definition: 'Pojedynczy obraz w sekwencji wideo. Film 24 kl./s zawiera 24 klatki na sekundę.'
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
term: 'FPS (Frames Per Second)',
|
|
168
|
+
definition: 'Klatki na sekundę. Określa płynność ruchu.'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
term: 'Kodek wideo',
|
|
172
|
+
definition: 'Algorytm kompresji: H.264, VP9, HEVC. Określa rozmiar i jakość pliku.'
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
term: 'Bitrate',
|
|
176
|
+
definition: 'Ilość danych przetwarzanych na sekundę. Wyższy bitrate = wyższa jakość.'
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
term: 'Rozdzielczość wideo',
|
|
180
|
+
definition: 'Wymiary w pikselach: 720p, 1080p, 4K, 8K.'
|
|
181
|
+
}
|
|
182
|
+
] },
|
|
183
|
+
|
|
184
|
+
{ type: 'message', title: 'Profesjonalna ekstrakcja klatek', ariaLabel: 'Informacje techniczne o ekstrakcji wideo', html: 'Nie potrzebujesz skomplikowanych konwerterów. Idealna klatka to tylko 3 kliknięcia: prześlij wideo, nawiguj, przechwyć.' },
|
|
185
|
+
|
|
186
|
+
{ type: 'title', text: 'Zamrażanie momentów wideo', level: 3 },
|
|
187
|
+
{ type: 'paragraph', html: 'Każde wideo zawiera setki klatek. Użyj tego narzędzia, aby wyodrębnić te idealne momenty bez utraty jakości.' }
|
|
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: 'pl',
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
export const content: VideoFrameExtractorLocaleContent = {
|
|
224
|
+
slug,
|
|
225
|
+
title,
|
|
226
|
+
description,
|
|
227
|
+
ui,
|
|
228
|
+
seo,
|
|
229
|
+
faq,
|
|
230
|
+
faqTitle: 'Często zadawane pytania o ekstrakcję klatek',
|
|
231
|
+
bibliography,
|
|
232
|
+
bibliographyTitle: 'Standardy techniczne przechwytywania wideo',
|
|
233
|
+
howTo,
|
|
234
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
235
|
+
};
|
|
@@ -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 = 'extrator-de-fotogramas-video-online-capturar-stills-hd';
|
|
5
|
+
const title = 'Extrator de Fotogramas de Vídeo: Capturar imagens HD';
|
|
6
|
+
const description = 'Extraia imagens individuais dos seus vídeos com precisão milimétrica. Capture momentos perfeitos em HD localmente e de forma gratuita.';
|
|
7
|
+
|
|
8
|
+
const ui: VideoFrameExtractorUI = {
|
|
9
|
+
uploadTitle: "Carregar um ficheiro de vídeo",
|
|
10
|
+
uploadFormats: "MP4, WebM, MOV ou MKV (Máx. 500MB)",
|
|
11
|
+
privacyNote: "O vídeo não é carregado para a Internet, é processado no seu navegador.",
|
|
12
|
+
playLabel: "Reproduzir",
|
|
13
|
+
pauseLabel: "Pausa",
|
|
14
|
+
captureBtn: "Capturar fotograma",
|
|
15
|
+
prevFrame: "-1F",
|
|
16
|
+
nextFrame: "+1F",
|
|
17
|
+
batchTitle: "Extração Automática",
|
|
18
|
+
batchEvery: "A cada",
|
|
19
|
+
batchStart: "Iniciar sequência",
|
|
20
|
+
batchProcessing: "A extrair...",
|
|
21
|
+
galleryTitle: "Fotogramas Capturados",
|
|
22
|
+
galleryEmpty: "As capturas aparecerão aqui à medida que as fizer.",
|
|
23
|
+
downloadAll: "Descarregar tudo",
|
|
24
|
+
downloadHD: "Descarregar imagem HD",
|
|
25
|
+
resetBtn: "Carregar outro vídeo"
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const faq: VideoFrameExtractorLocaleContent['faq'] = [
|
|
29
|
+
{
|
|
30
|
+
question: "Posso extrair fotogramas de vídeos longos?",
|
|
31
|
+
answer: "Sim, desde que o seu navegador tenha RAM suficiente para carregar o vídeo. Recomendamos ficheiros até 500MB para um desempenho ideal.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: "Em que resolução são guardadas as capturas?",
|
|
35
|
+
answer: "Las capturas são feitas na resolução nativa do vídeo original. Se o seu vídeo for 4K, obterá uma imagem 4K de alta qualidade.",
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: VideoFrameExtractorLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: "Carregue o seu vídeo",
|
|
42
|
+
text: "Selecione o ficheiro de vídeo no seu dispositivo. Não o carregaremos para nenhum servidor.",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "Navegue até ao momento exato",
|
|
46
|
+
text: "Use a barra de linha de tempo ou os botões ±1 fotograma para uma precisão cirúrgica.",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Capture o fotograma",
|
|
50
|
+
text: "Pressione o botão de captura para guardar o momento na galeria abaixo.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Descarregue em alta qualidade",
|
|
54
|
+
text: "Descarregue capturas individuais ou a sessão inteira no formato WebP otimizado.",
|
|
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: 'Extração Profissional de Fotogramas de Vídeo',
|
|
69
|
+
items: [
|
|
70
|
+
'Precisão ao fotograma individual (±1 frame) para capturas perfeitas',
|
|
71
|
+
'Suporta MP4, WebM, MOV, MKV até 500MB',
|
|
72
|
+
'Resolução nativa do vídeo preservada (SD, HD, 4K)',
|
|
73
|
+
'Extração automática em lote em intervalos personalizados'
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{ type: 'title', text: 'Extração de Fotogramas: Congelar o Tempo no Vídeo', level: 2 },
|
|
77
|
+
{ type: 'paragraph', html: 'Às vezes, uma imagem vale mais que mil palavras. A nossa ferramenta utiliza o poder local do seu navegador para extrair fotogramas de precisão sem necessidade de software profissional.' },
|
|
78
|
+
|
|
79
|
+
{ type: 'stats', items: [
|
|
80
|
+
{ value: '±1', label: 'Precisão de Fotograma', icon: 'mdi:target' },
|
|
81
|
+
{ value: '100%', label: 'Resolução Nativa', icon: 'mdi:video-high-definition' },
|
|
82
|
+
{ value: '500MB', label: 'Ficheiros Suportados', icon: 'mdi:file-video' }
|
|
83
|
+
], columns: 3 },
|
|
84
|
+
|
|
85
|
+
{ type: 'title', text: 'Casos de Uso Profissionais', level: 3 },
|
|
86
|
+
{ type: 'comparative', items: [
|
|
87
|
+
{
|
|
88
|
+
title: 'Cinema e Fotografia',
|
|
89
|
+
description: 'Capture fotogramas como referência visual ou composição',
|
|
90
|
+
icon: 'mdi:film',
|
|
91
|
+
points: [
|
|
92
|
+
'Extraia stills para marketing de filmes',
|
|
93
|
+
'Referências de composição de cena',
|
|
94
|
+
'Análise fotograma a fotograma'
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
title: 'Conteúdo Digital',
|
|
99
|
+
description: 'Crie miniaturas e capas para redes sociais',
|
|
100
|
+
icon: 'mdi:youtube',
|
|
101
|
+
points: [
|
|
102
|
+
'Miniaturas de YouTube em alta resolução',
|
|
103
|
+
'Capas para redes sociais',
|
|
104
|
+
'Imagens para apresentações'
|
|
105
|
+
],
|
|
106
|
+
highlight: true
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Documentação Técnica',
|
|
110
|
+
description: 'Extraia fotogramas de tutoriais e demonstrações',
|
|
111
|
+
icon: 'mdi:book-open',
|
|
112
|
+
points: [
|
|
113
|
+
'Capturas de ecrã de vídeos tutoriais',
|
|
114
|
+
'Documentação visual passo a passo',
|
|
115
|
+
'Análise de movimento em tempo real'
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
title: 'Desporto e Ação',
|
|
120
|
+
description: 'Capture o instante preciso da máxima ação',
|
|
121
|
+
icon: 'mdi:dumbbell',
|
|
122
|
+
points: [
|
|
123
|
+
'Análise de técnica desportiva fotograma a fotograma',
|
|
124
|
+
'Captura de momentos heróicos',
|
|
125
|
+
'Estudo de movimento'
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
], columns: 2 },
|
|
129
|
+
|
|
130
|
+
{ type: 'title', text: 'Formatos de Vídeo Suportados', level: 3 },
|
|
131
|
+
{ type: 'table', headers: ['Formato', 'Extensão', 'Compatibilidade', 'Notas'], rows: [
|
|
132
|
+
['MPEG-4', 'MP4', 'Universal (100%)', 'Melhor compressão, muito usado'],
|
|
133
|
+
['WebM', 'WebM', 'Navegadores modernos', 'Compressão superior, tamanho menor'],
|
|
134
|
+
['QuickTime', 'MOV', 'Safari, alguns leitores', 'Padrão Apple'],
|
|
135
|
+
['Matroska', 'MKV', 'Navegadores modernos', 'Contentor flexível']
|
|
136
|
+
] },
|
|
137
|
+
|
|
138
|
+
{ type: 'card', title: 'Precisão ao Fotograma Individual', html: 'Mover um único fotograma para a frente ou para trás (±1 frame) é vital para capturar o instante perfeito: um salto, um sorriso, um gesto. A nossa ferramenta dá-lhe um controlo milimétrico.' },
|
|
139
|
+
|
|
140
|
+
{ type: 'proscons', items: [
|
|
141
|
+
{
|
|
142
|
+
pro: 'Privacidade total: o vídeo é processado 100% localmente no seu navegador',
|
|
143
|
+
con: 'Limitado pelo tamanho da memória RAM disponível (~500MB recomendado)'
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
pro: 'Resolução nativa preservada: SD, HD, 4K sem recompressão',
|
|
147
|
+
con: 'Requer navegador moderno com suporte para Vídeo HTML5'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
pro: 'Extração automática em lote em intervalos personalizados',
|
|
151
|
+
con: 'Para edição avançada (cortes), necessita de um editor de vídeo'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
pro: 'Exporte fotogramas em WebP otimizado ou PNG não comprimido',
|
|
155
|
+
con: 'Um fotograma de cada vez (não exporta sequências GIF automatizadas)'
|
|
156
|
+
}
|
|
157
|
+
], proTitle: 'Vantagens', conTitle: 'Limitações' },
|
|
158
|
+
|
|
159
|
+
{ type: 'diagnostic', variant: 'info', title: 'Resolução e Taxa de Fotogramas', icon: 'mdi:information', badge: 'Técnico', html: 'A resolução final do fotograma depende do vídeo original. Preservamos a informação nativa do vídeo sem upscaling.' },
|
|
160
|
+
|
|
161
|
+
{ type: 'glossary', items: [
|
|
162
|
+
{
|
|
163
|
+
term: 'Fotograma (Frame)',
|
|
164
|
+
definition: 'Imagem individual numa sequência de vídeo. Um vídeo de 24 fps contém 24 fotogramas por segundo.'
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
term: 'FPS (Fotogramas Por Segundo)',
|
|
168
|
+
definition: 'Frames por segundo. Determina a fluidez do movimento.'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
term: 'Codec de Vídeo',
|
|
172
|
+
definition: 'Algoritmo de compressão: H.264, VP9, HEVC. Determina o tamanho e qualidade.'
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
term: 'Bitrate',
|
|
176
|
+
definition: 'Quantidade de dados processados por segundo. Bitrate mais alto = qualidade superior.'
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
term: 'Resolução de Vídeo',
|
|
180
|
+
definition: 'Dimensões em píxeis: 720p, 1080p, 4K, 8K.'
|
|
181
|
+
}
|
|
182
|
+
] },
|
|
183
|
+
|
|
184
|
+
{ type: 'message', title: 'Extração de Fotogramas Profissional', ariaLabel: 'Informação técnica sobre extração de vídeo', html: 'Não precisa de conversores complexos. Um fotograma perfeito está à distância de 3 cliques: carregar vídeo, navegar, capturar.' },
|
|
185
|
+
|
|
186
|
+
{ type: 'title', text: 'Congelar Momentos de Vídeo', level: 3 },
|
|
187
|
+
{ type: 'paragraph', html: 'Cada vídeo contém centenas de fotogramas. Use esta ferramenta para extrair esses momentos perfeitos sem comprometer a qualidade ou a privacidade.' }
|
|
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: 'pt',
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
export const content: VideoFrameExtractorLocaleContent = {
|
|
224
|
+
slug,
|
|
225
|
+
title,
|
|
226
|
+
description,
|
|
227
|
+
ui,
|
|
228
|
+
seo,
|
|
229
|
+
faq,
|
|
230
|
+
faqTitle: 'Perguntas Frequentes sobre Extração de Fotogramas de Vídeo',
|
|
231
|
+
bibliography,
|
|
232
|
+
bibliographyTitle: 'Padrões Técnicos para Captura de Vídeo',
|
|
233
|
+
howTo,
|
|
234
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
235
|
+
};
|