@jjlmoya/utils-audiovisual 1.7.0 → 1.9.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.
Files changed (152) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +198 -0
  3. package/src/category/i18n/id.ts +198 -0
  4. package/src/category/i18n/it.ts +198 -0
  5. package/src/category/i18n/ja.ts +198 -0
  6. package/src/category/i18n/ko.ts +198 -0
  7. package/src/category/i18n/nl.ts +198 -0
  8. package/src/category/i18n/pl.ts +198 -0
  9. package/src/category/i18n/pt.ts +198 -0
  10. package/src/category/i18n/ru.ts +198 -0
  11. package/src/category/i18n/sv.ts +198 -0
  12. package/src/category/i18n/tr.ts +198 -0
  13. package/src/category/i18n/zh.ts +198 -0
  14. package/src/category/index.ts +31 -3
  15. package/src/tests/i18n_coverage.test.ts +36 -0
  16. package/src/tests/slug_uniqueness.test.ts +81 -0
  17. package/src/tool/chromaticLens/i18n/de.ts +246 -0
  18. package/src/tool/chromaticLens/i18n/id.ts +246 -0
  19. package/src/tool/chromaticLens/i18n/it.ts +246 -0
  20. package/src/tool/chromaticLens/i18n/ja.ts +246 -0
  21. package/src/tool/chromaticLens/i18n/ko.ts +246 -0
  22. package/src/tool/chromaticLens/i18n/nl.ts +246 -0
  23. package/src/tool/chromaticLens/i18n/pl.ts +246 -0
  24. package/src/tool/chromaticLens/i18n/pt.ts +246 -0
  25. package/src/tool/chromaticLens/i18n/ru.ts +246 -0
  26. package/src/tool/chromaticLens/i18n/sv.ts +246 -0
  27. package/src/tool/chromaticLens/i18n/tr.ts +246 -0
  28. package/src/tool/chromaticLens/i18n/zh.ts +246 -0
  29. package/src/tool/chromaticLens/index.ts +15 -7
  30. package/src/tool/collageMaker/i18n/de.ts +233 -0
  31. package/src/tool/collageMaker/i18n/id.ts +233 -0
  32. package/src/tool/collageMaker/i18n/it.ts +233 -0
  33. package/src/tool/collageMaker/i18n/ja.ts +233 -0
  34. package/src/tool/collageMaker/i18n/ko.ts +233 -0
  35. package/src/tool/collageMaker/i18n/nl.ts +233 -0
  36. package/src/tool/collageMaker/i18n/pl.ts +233 -0
  37. package/src/tool/collageMaker/i18n/pt.ts +233 -0
  38. package/src/tool/collageMaker/i18n/ru.ts +233 -0
  39. package/src/tool/collageMaker/i18n/sv.ts +233 -0
  40. package/src/tool/collageMaker/i18n/tr.ts +233 -0
  41. package/src/tool/collageMaker/i18n/zh.ts +233 -0
  42. package/src/tool/collageMaker/index.ts +15 -6
  43. package/src/tool/exifCleaner/i18n/de.ts +277 -0
  44. package/src/tool/exifCleaner/i18n/fr.ts +1 -1
  45. package/src/tool/exifCleaner/i18n/id.ts +277 -0
  46. package/src/tool/exifCleaner/i18n/it.ts +277 -0
  47. package/src/tool/exifCleaner/i18n/ja.ts +277 -0
  48. package/src/tool/exifCleaner/i18n/ko.ts +277 -0
  49. package/src/tool/exifCleaner/i18n/nl.ts +277 -0
  50. package/src/tool/exifCleaner/i18n/pl.ts +277 -0
  51. package/src/tool/exifCleaner/i18n/pt.ts +277 -0
  52. package/src/tool/exifCleaner/i18n/ru.ts +277 -0
  53. package/src/tool/exifCleaner/i18n/sv.ts +277 -0
  54. package/src/tool/exifCleaner/i18n/tr.ts +277 -0
  55. package/src/tool/exifCleaner/i18n/zh.ts +277 -0
  56. package/src/tool/exifCleaner/index.ts +16 -8
  57. package/src/tool/imageCompressor/i18n/de.ts +242 -0
  58. package/src/tool/imageCompressor/i18n/en.ts +1 -1
  59. package/src/tool/imageCompressor/i18n/es.ts +1 -1
  60. package/src/tool/imageCompressor/i18n/id.ts +242 -0
  61. package/src/tool/imageCompressor/i18n/it.ts +242 -0
  62. package/src/tool/imageCompressor/i18n/ja.ts +242 -0
  63. package/src/tool/imageCompressor/i18n/ko.ts +242 -0
  64. package/src/tool/imageCompressor/i18n/nl.ts +242 -0
  65. package/src/tool/imageCompressor/i18n/pl.ts +242 -0
  66. package/src/tool/imageCompressor/i18n/pt.ts +242 -0
  67. package/src/tool/imageCompressor/i18n/ru.ts +242 -0
  68. package/src/tool/imageCompressor/i18n/sv.ts +242 -0
  69. package/src/tool/imageCompressor/i18n/tr.ts +242 -0
  70. package/src/tool/imageCompressor/i18n/zh.ts +244 -0
  71. package/src/tool/imageCompressor/index.ts +15 -7
  72. package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
  73. package/src/tool/printQualityCalculator/i18n/fr.ts +1 -1
  74. package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
  75. package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
  76. package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
  77. package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
  78. package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
  79. package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
  80. package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
  81. package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
  82. package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
  83. package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
  84. package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
  85. package/src/tool/printQualityCalculator/index.ts +15 -7
  86. package/src/tool/privacyBlur/i18n/de.ts +238 -0
  87. package/src/tool/privacyBlur/i18n/id.ts +238 -0
  88. package/src/tool/privacyBlur/i18n/it.ts +238 -0
  89. package/src/tool/privacyBlur/i18n/ja.ts +238 -0
  90. package/src/tool/privacyBlur/i18n/ko.ts +238 -0
  91. package/src/tool/privacyBlur/i18n/nl.ts +238 -0
  92. package/src/tool/privacyBlur/i18n/pl.ts +238 -0
  93. package/src/tool/privacyBlur/i18n/pt.ts +238 -0
  94. package/src/tool/privacyBlur/i18n/ru.ts +238 -0
  95. package/src/tool/privacyBlur/i18n/sv.ts +238 -0
  96. package/src/tool/privacyBlur/i18n/tr.ts +238 -0
  97. package/src/tool/privacyBlur/i18n/zh.ts +238 -0
  98. package/src/tool/privacyBlur/index.ts +15 -7
  99. package/src/tool/subtitleSync/i18n/de.ts +241 -0
  100. package/src/tool/subtitleSync/i18n/fr.ts +5 -5
  101. package/src/tool/subtitleSync/i18n/id.ts +241 -0
  102. package/src/tool/subtitleSync/i18n/it.ts +241 -0
  103. package/src/tool/subtitleSync/i18n/ja.ts +241 -0
  104. package/src/tool/subtitleSync/i18n/ko.ts +241 -0
  105. package/src/tool/subtitleSync/i18n/nl.ts +241 -0
  106. package/src/tool/subtitleSync/i18n/pl.ts +241 -0
  107. package/src/tool/subtitleSync/i18n/pt.ts +241 -0
  108. package/src/tool/subtitleSync/i18n/ru.ts +241 -0
  109. package/src/tool/subtitleSync/i18n/sv.ts +241 -0
  110. package/src/tool/subtitleSync/i18n/tr.ts +241 -0
  111. package/src/tool/subtitleSync/i18n/zh.ts +241 -0
  112. package/src/tool/subtitleSync/index.ts +15 -7
  113. package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
  114. package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
  115. package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
  116. package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
  117. package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
  118. package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
  119. package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
  120. package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
  121. package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
  122. package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
  123. package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
  124. package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
  125. package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
  126. package/src/tool/timelapseCalculator/index.ts +16 -8
  127. package/src/tool/tvDistance/i18n/de.ts +223 -0
  128. package/src/tool/tvDistance/i18n/id.ts +223 -0
  129. package/src/tool/tvDistance/i18n/it.ts +223 -0
  130. package/src/tool/tvDistance/i18n/ja.ts +223 -0
  131. package/src/tool/tvDistance/i18n/ko.ts +223 -0
  132. package/src/tool/tvDistance/i18n/nl.ts +223 -0
  133. package/src/tool/tvDistance/i18n/pl.ts +223 -0
  134. package/src/tool/tvDistance/i18n/pt.ts +223 -0
  135. package/src/tool/tvDistance/i18n/ru.ts +223 -0
  136. package/src/tool/tvDistance/i18n/sv.ts +223 -0
  137. package/src/tool/tvDistance/i18n/tr.ts +223 -0
  138. package/src/tool/tvDistance/i18n/zh.ts +223 -0
  139. package/src/tool/tvDistance/index.ts +15 -7
  140. package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
  141. package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
  142. package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
  143. package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
  144. package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
  145. package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
  146. package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
  147. package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
  148. package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
  149. package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
  150. package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
  151. package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
  152. package/src/tool/videoFrameExtractor/index.ts +16 -8
@@ -0,0 +1,169 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { TimelapseUI, TimelapseLocaleContent } from '../index';
3
+
4
+ const slug = 'kalkulator-timelapse-hyperlapse-idealne-interwaly';
5
+ const title = 'Kalkulator Timelapse i Hyperlapse: Idealne Interwały';
6
+ const description = 'Oblicz dokładny interwał między zdjęciami, całkowity czas trwania i potrzebne miejsce na dysku dla Twoich filmów poklatkowych.';
7
+
8
+ const ui: TimelapseUI = {
9
+ title: "Kalkulator Timelapse",
10
+ paramsTitle: "Parametry",
11
+ eventDuration: "Jak długo trwa prawdziwe wydarzenie?",
12
+ hours: "Godziny",
13
+ minutes: "Minuty",
14
+ videoDuration: "Jak długi ma być wynikowy film?",
15
+ seconds: "Czas trwania (sek)",
16
+ fps: "FPS",
17
+ resultsTitle: "Wyniki",
18
+ intervalLabel: "Ustaw interwałometr na:",
19
+ secondsUnit: "sekund",
20
+ totalPhotos: "Liczba zdjęć",
21
+ speed: "Prędkość",
22
+ shutterSpeed: "Czas naświetlania",
23
+ storage: "Rozmiar (RAW)",
24
+ rule180Info: "Zasada 180° sugeruje czas naświetlania równy połowie interwału dla uzyskania naturalnego rozmycia ruchu.",
25
+ };
26
+
27
+ const faq: TimelapseLocaleContent['faq'] = [
28
+ {
29
+ question: "Jak wybrać odpowiedni interwał dla mojego timelapse?",
30
+ answer: "Zależy to od prędkości ruchu, który filmujesz. Dla szybkich chmur użyj 2-3 sekund. Dla ruchu słońca lub gwiazd - 15-30 sekund. Dla rosnących roślin lub budowy - 5-15 minut.",
31
+ },
32
+ {
33
+ question: "Ile zdjęć potrzebuję na jednominutowy film?",
34
+ answer: "Standardowe wideo ma 24 lub 30 klatek na sekundę (fps). Dla minuty filmu przy 24fps potrzebujesz dokładnie 1440 zdjęć (60 sekund * 24 zdjęcia/sekundę).",
35
+ },
36
+ {
37
+ question: "Co to jest 'Flicker' i jak go uniknąć?",
38
+ answer: "To irytujące migotanie spowodowane małymi różnicami w ekspozycji między zdjęciami. Aby go uniknąć, zawsze używaj trybu manualnego (M), stałego balansu bieli i obiektywów z manualnym pierścieniem przysłony.",
39
+ },
40
+ {
41
+ question: "Dlaczego czas naświetlania jest ważny?",
42
+ answer: "Aby ruch wyglądał płynnie (zasada 180°), czas naświetlania powinien wynosić około połowy interwału. Na przykład, jeśli interwał wynosi 2 sekundy, spróbuj fotografować z czasem 1 sekundy.",
43
+ },
44
+ ];
45
+
46
+ const howTo: TimelapseLocaleContent['howTo'] = [
47
+ {
48
+ name: "Określ czas trwania filmu",
49
+ text: "Wskaż, ile sekund lub minut ma trwać wynikowe wideo (np. 10 sekund na Instagram).",
50
+ },
51
+ {
52
+ name: "Wybierz klatkaż (FPS)",
53
+ text: "Wybierz płynność filmu: 24 (kino), 30 (internet) lub 60 (płynne zwolnione tempo).",
54
+ },
55
+ {
56
+ name: "Dostosuj interwał fotografowania",
57
+ text: "Skonfiguruj, co ile sekund aparat ma robić zdjęcie, zależnie od prędkości sceny.",
58
+ },
59
+ {
60
+ name: "Sprawdź miejsce na karcie",
61
+ text: "Kalkulator powie Ci, ile gigabajtów zajmie sesja. Upewnij się, że masz wystarczająco dużo miejsca.",
62
+ },
63
+ ];
64
+
65
+ const bibliography: TimelapseLocaleContent['bibliography'] = [
66
+ {
67
+ name: "Timescapes Forum - Digital Timelapse Acquisition & Processing",
68
+ url: "https://timescapes.org/phpBB3/viewforum.php?f=4",
69
+ },
70
+ {
71
+ name: "Magic Lantern - Auto ETTR & Bulb Ramping Algorithms",
72
+ url: "https://wiki.magiclantern.fm/ettr",
73
+ },
74
+ {
75
+ name: "LRTimelapse - Visual Deflicker & Holy Grail Workflow",
76
+ url: "https://lrtimelapse.com/tutorial/advanced/",
77
+ },
78
+ {
79
+ name: "PhotoPills - Advanced Timelapse Calculator & NPF Rule",
80
+ url: "https://www.photopills.com/calculators/timelapse",
81
+ },
82
+ ];
83
+
84
+ const seo: TimelapseLocaleContent['seo'] = [
85
+ { type: 'title', text: 'Ostateczny przewodnik po interwałach do Timelapse i Hyperlapse', level: 2 },
86
+ { type: 'paragraph', html: 'Różnica między amatorskim przyspieszonym filmem a <strong>kinowym timelapse</strong> matematycznie sprowadza się do jednego czynnika: <strong>interwału</strong>. Ten kalkulator pozwala precyzyjnie zaplanować sesję.' },
87
+
88
+ { type: 'title', text: 'Tabela zalecanych interwałów (Cheat Sheet)', level: 3 },
89
+ { type: 'paragraph', html: 'Skorzystaj z tej tabeli, aby ustawić interwałometr zależnie od fotografowanego tematu.' },
90
+ { type: 'table', headers: ['Temat / Scena', 'Sugerowany interwał', 'Czas trwania (minimum)'], rows: [
91
+ ['Szybkie chmury / Burze', '1 - 2 sekundy', '20 - 30 min'],
92
+ ['Ruch miejski / Ludzie (rozmycie)', '0.5 - 2 sekundy', '15 - 20 min'],
93
+ ['Zachód / Wschód słońca (Holy Grail)', '5 - 10 sekund', '1.5 - 2.5 godz'],
94
+ ['Wolne chmury / Cienie', '10 - 15 sekund', '2 - 3 godz'],
95
+ ['Gwiazdy / Droga Mleczna (Astro)', '15 - 30 sekund*', '3 - 5 godz'],
96
+ ['Budowa / Rosnące rośliny', '5 - 15 minut', 'Dni / Tygodnie']
97
+ ]},
98
+ { type: 'tip', title: 'Uwaga dla Astro', html: 'Interwał jest zazwyczaj narzucony przez czas ekspozycji (zasada 500) + 1-2 sekundy bufora na zapis na kartę.' },
99
+
100
+ { type: 'title', text: 'Zasada 180° (Motion Blur)', level: 3 },
101
+ { type: 'paragraph', html: 'Częstym błędem w timelapse jest uzyskanie "szarpanego" efektu. Aby uzyskać płynny wygląd, potrzebujesz <strong>rozmycia ruchu</strong>.' },
102
+ { type: 'card', title: 'Zasada', icon: 'mdi:information', html: 'Czas naświetlania powinien wynosić połowę interwału. <br /><br /> <em>Przykład:</em> Jeśli robisz zdjęcie co <strong>4 sekundy</strong>, ekspozycja powinna trwać <strong>2 sekundy</strong>.' },
103
+
104
+ { type: 'title', text: 'Flicker i manualna przysłona', level: 3 },
105
+ { type: 'paragraph', html: '"Flicker" to irytujące migotanie spowodowane mikro-wahaniami otwarcia przysłony między klatkami.' },
106
+ { type: 'list', items: [
107
+ '<strong>Lens Twist:</strong> Lekko odkręć obiektyw w lustrzankach, aby przerwać styk elektroniczny i zablokować przysłonę mechanicznie.',
108
+ '<strong>Wszystko Manualnie:</strong> ISO, Balans bieli i Ostrość muszą być stałe.',
109
+ '<strong>Rób zdjęcia w RAW:</strong> Niezbędne do korekcji ekspozycji i koloru w postprodukcji.'
110
+ ]},
111
+
112
+ { type: 'diagnostic', variant: 'success', title: 'Technika zaawansowana: "Holy Grail"', icon: 'mdi:crown', badge: 'Technika Pro', html: '"Holy Grail" (Święty Graal) to płynne przejście z dnia do nocy (lub odwrotnie). To najtrudniejsze wyzwanie techniczne.' },
113
+
114
+ { type: 'stats', columns: 3, items: [
115
+ { label: 'Bulb Ramping', value: 'Ekspozycja płynna', icon: 'mdi:brightness-6' },
116
+ { label: 'Post-Pro', value: 'LRTimelapse', icon: 'mdi:television-guide' },
117
+ { label: 'Strategia', value: 'Interwał nocny', icon: 'mdi:weather-night' }
118
+ ]},
119
+
120
+ { type: 'title', text: 'Podsumowanie: Zen prostej mechaniki', level: 3 },
121
+ { type: 'paragraph', html: 'Mistrzostwo w timelapse zaczyna się od zrozumienia matematyki Twojego interwałometru.' }
122
+ ];
123
+
124
+ const faqSchema: WithContext<FAQPage> = {
125
+ '@context': 'https://schema.org',
126
+ '@type': 'FAQPage',
127
+ mainEntity: faq.map((item) => ({
128
+ '@type': 'Question',
129
+ name: item.question,
130
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
131
+ })),
132
+ };
133
+
134
+ const howToSchema: WithContext<HowTo> = {
135
+ '@context': 'https://schema.org',
136
+ '@type': 'HowTo',
137
+ name: title,
138
+ description,
139
+ step: howTo.map((step) => ({
140
+ '@type': 'HowToStep',
141
+ name: step.name,
142
+ text: step.text,
143
+ })),
144
+ };
145
+
146
+ const appSchema: WithContext<SoftwareApplication> = {
147
+ '@context': 'https://schema.org',
148
+ '@type': 'SoftwareApplication',
149
+ name: title,
150
+ description,
151
+ applicationCategory: 'UtilitiesApplication',
152
+ operatingSystem: 'Web',
153
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
154
+ inLanguage: 'pl',
155
+ };
156
+
157
+ export const content: TimelapseLocaleContent = {
158
+ slug,
159
+ title,
160
+ description,
161
+ ui,
162
+ seo,
163
+ faq,
164
+ faqTitle: 'Często zadawane pytania o produkcję Timelapse',
165
+ bibliography,
166
+ bibliographyTitle: 'Teoria i zasoby Timelapse',
167
+ howTo,
168
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
169
+ };
@@ -0,0 +1,169 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { TimelapseUI, TimelapseLocaleContent } from '../index';
3
+
4
+ const slug = 'calculadora-timelapse-hyperlapse-intervalos-perfeitos';
5
+ const title = 'Calculadora de Timelapse e Hyperlapse: Intervalos Perfeitos';
6
+ const description = 'Calcule o intervalo exato entre fotos, a duração total e o armazenamento para os seus timelapses. Ferramenta essencial para fotógrafos.';
7
+
8
+ const ui: TimelapseUI = {
9
+ title: "Calculadora de Timelapse",
10
+ paramsTitle: "Parâmetros",
11
+ eventDuration: "Qual a duração do evento real?",
12
+ hours: "Horas",
13
+ minutes: "Minutos",
14
+ videoDuration: "Que vídeo final deseja?",
15
+ seconds: "Duração (seg)",
16
+ fps: "FPS",
17
+ resultsTitle: "Resultados",
18
+ intervalLabel: "Configure o seu intervalómetro para:",
19
+ secondsUnit: "segundos",
20
+ totalPhotos: "Total de Fotos",
21
+ speed: "Velocidade",
22
+ shutterSpeed: "Velocidade do Obturador",
23
+ storage: "Tamanho (RAW)",
24
+ rule180Info: "A regra dos 180° sugere uma velocidade de obturação de metade do intervalo para uma desfocagem de movimento suave.",
25
+ };
26
+
27
+ const faq: TimelapseLocaleContent['faq'] = [
28
+ {
29
+ question: "Como escolho o intervalo correto para o meu timelapse?",
30
+ answer: "Depende da velocidade do movimento que está a capturar. Para nuvens rápidas, use 2-3 segundos. Para o movimento do sol ou estrelas, 15-30 segundos. Para crescimento de plantas ou obras, 5-15 minutos.",
31
+ },
32
+ {
33
+ question: "Quantas fotos preciso para um vídeo de um minuto?",
34
+ answer: "Um vídeo padrão tem 24 ou 30 fotogramas por segundo (fps). Para um minuto de vídeo a 24fps, precisa de exatamente 1440 fotografias (60 segundos * 24 fotos/segundo).",
35
+ },
36
+ {
37
+ question: "O que é o 'Flicker' e como posso evitá-lo?",
38
+ answer: "É uma oscilação irritante causada por pequenas variações na exposição entre as fotos. Para evitá-lo, use sempre o modo manual (M), balanço de brancos fixo e prefira lentes com anel de abertura manual.",
39
+ },
40
+ {
41
+ question: "Por que a velocidade do obturador é importante?",
42
+ answer: "Para que o movimento pareça fluido (regra dos 180°), a velocidade do obturador deve ser aproximadamente metade do intervalo. Por exemplo, se o intervalo for de 2 segundos, tente disparar a 1 segundo.",
43
+ },
44
+ ];
45
+
46
+ const howTo: TimelapseLocaleContent['howTo'] = [
47
+ {
48
+ name: "Defina a duração do vídeo final",
49
+ text: "Indique quantos segundos ou minutos deseja que o vídeo resultante dure (ex: 10 segundos para o Instagram).",
50
+ },
51
+ {
52
+ name: "Selecione os FPS de saída",
53
+ text: "Escolha a fluidez do vídeo: 24 (cinema), 30 (web) ou 60 (slow motion fluido).",
54
+ },
55
+ {
56
+ name: "Ajuste o intervalo de captura",
57
+ text: "Configure de quantos em quantos segundos a sua câmara irá disparar de acordo com a velocidade da cena.",
58
+ },
59
+ {
60
+ name: "Verifique o espaço de armazenamento",
61
+ text: "A calculadora dir lhe á quantos Gigabytes a sessão ocupará. Certifique se de que o seu cartão SD tem espaço suficiente.",
62
+ },
63
+ ];
64
+
65
+ const bibliography: TimelapseLocaleContent['bibliography'] = [
66
+ {
67
+ name: "Timescapes Forum - Digital Timelapse Acquisition & Processing",
68
+ url: "https://timescapes.org/phpBB3/viewforum.php?f=4",
69
+ },
70
+ {
71
+ name: "Magic Lantern - Auto ETTR & Bulb Ramping Algorithms",
72
+ url: "https://wiki.magiclantern.fm/ettr",
73
+ },
74
+ {
75
+ name: "LRTimelapse - Visual Deflicker & Holy Grail Workflow",
76
+ url: "https://lrtimelapse.com/tutorial/advanced/",
77
+ },
78
+ {
79
+ name: "PhotoPills - Advanced Timelapse Calculator & NPF Rule",
80
+ url: "https://www.photopills.com/calculators/timelapse",
81
+ },
82
+ ];
83
+
84
+ const seo: TimelapseLocaleContent['seo'] = [
85
+ { type: 'title', text: 'Guia Definitivo de Intervalos para Timelapse e Hyperlapse', level: 2 },
86
+ { type: 'paragraph', html: 'A diferença entre um vídeo rápido amador e um <strong>timelapse cinematográfico</strong> reside matematicamente num único fator: <strong>o intervalo</strong>. Esta calculadora elimina as dúvidas, permitindo-lhe planear com precisão as suas capturas.' },
87
+
88
+ { type: 'title', text: 'Tabela de Intervalos Recomendados (Cheat Sheet)', level: 3 },
89
+ { type: 'paragraph', html: 'Use esta tabela de referência rápida para configurar o seu intervalómetro de acordo com o tema.' },
90
+ { type: 'table', headers: ['Tema / Cena', 'Intervalo Sugerido', 'Duração do Evento (Mínima)'], rows: [
91
+ ['Nuvens Rápidas / Tempestades', '1 - 2 segundos', '20 - 30 min'],
92
+ ['Tráfego Urbano / Pessoas (Blur)', '0.5 - 2 segundos', '15 - 20 min'],
93
+ ['Pôr-do-sol / Nascer-do-sol (Holy Grail)', '5 - 10 segundos', '1.5 - 2.5 horas'],
94
+ ['Nuvens Lentas / Sombras', '10 - 15 segundos', '2 - 3 horas'],
95
+ ['Estrelas / Via Láctea (Astro)', '15 - 30 segundos*', '3 - 5 horas'],
96
+ ['Construção / Crescimento Plantas', '5 - 15 minutos', 'Dias / Semanas']
97
+ ]},
98
+ { type: 'tip', title: 'Nota para Astro', html: 'O intervalo é geralmente ditado pelo tempo de exposição necessário (regra 500) + 1 ou 2 segundos de margem.' },
99
+
100
+ { type: 'title', text: 'A Regra dos 180° (Motion Blur)', level: 3 },
101
+ { type: 'paragraph', html: 'Um erro comum no timelapse é obter um vídeo "tremido". Para obter aquele aspeto cinematográfico fluido, precisa de <strong>motion blur</strong>.' },
102
+ { type: 'card', title: 'A Regra', icon: 'mdi:information', html: 'A sua Velocidade do Obturador deve ser metade do seu intervalo. <br /><br /> <em>Exemplo:</em> Se dispara a cada <strong>4 segundos</strong>, a sua exposição deve ser de <strong>2 segundos</strong>.' },
103
+
104
+ { type: 'title', text: 'Flicker e Abertura Manual', level: 3 },
105
+ { type: 'paragraph', html: 'O "Flicker" é a oscilação irritante causada por micro-variações na abertura do diafragma entre as fotos.' },
106
+ { type: 'list', items: [
107
+ '<strong>Lens Twist:</strong> Desbloqueie ligeiramente a lente em DSLRs para quebrar a ligação eletrónica e fixar a abertura mecanicamente.',
108
+ '<strong>Tudo Manual:</strong> ISO, Balanço de Brancos e Foco devem ser fixos.',
109
+ '<strong>Fotografe em RAW:</strong> Essencial para corrigir exposição e cor na pós-produção.'
110
+ ]},
111
+
112
+ { type: 'diagnostic', variant: 'success', title: 'Técnica Avançada: O "Santo Graal"', icon: 'mdi:crown', badge: 'Técnica Pro', html: 'O "Santo Graal" refere-se à transição suave do dia para a noite (ou vice-versa). É o desafio técnico mais difícil.' },
113
+
114
+ { type: 'stats', columns: 3, items: [
115
+ { label: 'Bulb Ramping', value: 'Exposição Gradual', icon: 'mdi:brightness-6' },
116
+ { label: 'Post-Pro', value: 'LRTimelapse', icon: 'mdi:television-guide' },
117
+ { label: 'Estratégia', value: 'Intervalo Noite', icon: 'mdi:weather-night' }
118
+ ]},
119
+
120
+ { type: 'title', text: 'Conclusão: O Zen da Mecânica Simples', level: 3 },
121
+ { type: 'paragraph', html: 'Dominar o seu timelapse começa por entender a matemática do seu intervalómetro.' }
122
+ ];
123
+
124
+ const faqSchema: WithContext<FAQPage> = {
125
+ '@context': 'https://schema.org',
126
+ '@type': 'FAQPage',
127
+ mainEntity: faq.map((item) => ({
128
+ '@type': 'Question',
129
+ name: item.question,
130
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
131
+ })),
132
+ };
133
+
134
+ const howToSchema: WithContext<HowTo> = {
135
+ '@context': 'https://schema.org',
136
+ '@type': 'HowTo',
137
+ name: title,
138
+ description,
139
+ step: howTo.map((step) => ({
140
+ '@type': 'HowToStep',
141
+ name: step.name,
142
+ text: step.text,
143
+ })),
144
+ };
145
+
146
+ const appSchema: WithContext<SoftwareApplication> = {
147
+ '@context': 'https://schema.org',
148
+ '@type': 'SoftwareApplication',
149
+ name: title,
150
+ description,
151
+ applicationCategory: 'UtilitiesApplication',
152
+ operatingSystem: 'Web',
153
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
154
+ inLanguage: 'pt',
155
+ };
156
+
157
+ export const content: TimelapseLocaleContent = {
158
+ slug,
159
+ title,
160
+ description,
161
+ ui,
162
+ seo,
163
+ faq,
164
+ faqTitle: 'Perguntas Frequentes sobre Produção de Timelapse',
165
+ bibliography,
166
+ bibliographyTitle: 'Teoria e Recursos para Timelapse',
167
+ howTo,
168
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
169
+ };
@@ -0,0 +1,169 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { TimelapseUI, TimelapseLocaleContent } from '../index';
3
+
4
+ const slug = 'kalkulyator-timelaps-giperlaps-idealnye-intervaly';
5
+ const title = 'Калькулятор таймлапса и гиперлапса: Идеальные интервалы';
6
+ const description = 'Рассчитайте точный интервал между фото, общую продолжительность и объем памяти для ваших таймлапсов. Незаменимый инструмент для фотографов.';
7
+
8
+ const ui: TimelapseUI = {
9
+ title: "Калькулятор таймлапса",
10
+ paramsTitle: "Параметры",
11
+ eventDuration: "Как долго длится реальное событие?",
12
+ hours: "Часы",
13
+ minutes: "Минуты",
14
+ videoDuration: "Какова длительность итогового видео?",
15
+ seconds: "Продолж. (сек)",
16
+ fps: "FPS",
17
+ resultsTitle: "Результаты",
18
+ intervalLabel: "Настройте интервалометр на:",
19
+ secondsUnit: "секунд",
20
+ totalPhotos: "Всего фото",
21
+ speed: "Скорость",
22
+ shutterSpeed: "Выдержка",
23
+ storage: "Объем (RAW)",
24
+ rule180Info: "Правило 180° рекомендует выдержку в половину интервала для плавного размытия движения.",
25
+ };
26
+
27
+ const faq: TimelapseLocaleContent['faq'] = [
28
+ {
29
+ question: "Как выбрать правильный интервал для моего таймлапса?",
30
+ answer: "Это зависит от скорости движения, которое вы снимаете. Для быстро движущихся облаков используйте 2-3 секунды. Для движения солнца или звезд — 15-30 секунд. Для роста растений или строительства — 5-15 минут.",
31
+ },
32
+ {
33
+ question: "Сколько фотографий мне нужно для минутного видео?",
34
+ answer: "Стандартное видео имеет частоту 24 или 30 кадров в секунду (fps). Для одной минуты видео при 24fps вам потребуется ровно 1440 фотографий (60 секунд * 24 фото/сек).",
35
+ },
36
+ {
37
+ question: "Что такое 'Flicker' и как его избежать?",
38
+ answer: "Это неприятное мерцание, вызванное небольшими колебаниями экспозиции между кадрами. Чтобы избежать его, всегда используйте ручной режим (M), фиксированный баланс белого и объективы с ручным кольцом диафрагмы.",
39
+ },
40
+ {
41
+ question: "Почему важна выдержка?",
42
+ answer: "Чтобы движение выглядело плавным (правило 180°), выдержка должна составлять примерно половину интервала. Например, если интервал 2 секунды, попробуйте снимать на 1 секунде.",
43
+ },
44
+ ];
45
+
46
+ const howTo: TimelapseLocaleContent['howTo'] = [
47
+ {
48
+ name: "Определите длину итогового видео",
49
+ text: "Укажите, сколько секунд или минут должен длиться результирующий ролик (например, 10 секунд для Instagram).",
50
+ },
51
+ {
52
+ name: "Выберите выходной FPS",
53
+ text: "Выберите плавность видео: 24 (кино), 30 (веб) или 60 (плавное замедленное движение).",
54
+ },
55
+ {
56
+ name: "Настройте интервал съемки",
57
+ text: "Настройте, через сколько секунд камера будет делать снимок в зависимости от скорости сцены.",
58
+ },
59
+ {
60
+ name: "Проверьте объем памяти",
61
+ text: "Калькулятор подскажет, сколько гигабайт займет сессия. Убедитесь, что на вашей SD карте достаточно места.",
62
+ },
63
+ ];
64
+
65
+ const bibliography: TimelapseLocaleContent['bibliography'] = [
66
+ {
67
+ name: "Timescapes Forum - Digital Timelapse Acquisition & Processing",
68
+ url: "https://timescapes.org/phpBB3/viewforum.php?f=4",
69
+ },
70
+ {
71
+ name: "Magic Lantern - Auto ETTR & Bulb Ramping Algorithms",
72
+ url: "https://wiki.magiclantern.fm/ettr",
73
+ },
74
+ {
75
+ name: "LRTimelapse - Visual Deflicker & Holy Grail Workflow",
76
+ url: "https://lrtimelapse.com/tutorial/advanced/",
77
+ },
78
+ {
79
+ name: "PhotoPills - Advanced Timelapse Calculator & NPF Rule",
80
+ url: "https://www.photopills.com/calculators/timelapse",
81
+ },
82
+ ];
83
+
84
+ const seo: TimelapseLocaleContent['seo'] = [
85
+ { type: 'title', text: 'Полное руководство по интервалам таймлапса и гиперлапса', level: 2 },
86
+ { type: 'paragraph', html: 'Математическая разница между любительским ускоренным видео и <strong>кинематографичным таймлапсом</strong> заключается в одном факторе: <strong>интервале</strong>. Этот калькулятор избавляет от догадок, позволяя точно спланировать съемку.' },
87
+
88
+ { type: 'title', text: 'Таблица рекомендуемых интервалов (шпаргалка)', level: 3 },
89
+ { type: 'paragraph', html: 'Используйте эту справочную таблицу для настройки интервалометра в зависимости от объекта съемки.' },
90
+ { type: 'table', headers: ['Объект / Сцена', 'Рекомендуемый интервал', 'Длительность события (минимум)'], rows: [
91
+ ['Быстрые облака / Шторм', '1 - 2 секунды', '20 - 30 мин'],
92
+ ['Городской трафик / Люди (Blur)', '0.5 - 2 секунды', '15 - 20 мин'],
93
+ ['Закат / Рассвет (Holy Grail)', '5 - 10 секунд', '1.5 - 2.5 часа'],
94
+ ['Медленные облака / Тени', '10 - 15 секунд', '2 - 3 часа'],
95
+ ['Звезды / Млечный Путь (Astro)', '15 - 30 секунд*', '3 - 5 часов'],
96
+ ['Стройка / Рост растений', '5 - 15 минут', 'Дни / Недели']
97
+ ]},
98
+ { type: 'tip', title: 'Заметка для астрофото', html: 'Интервал обычно диктуется временем экспозиции (правило 500) + 1 или 2 секунды буфера для записи на карту.' },
99
+
100
+ { type: 'title', text: 'Правило 180° (Motion Blur)', level: 3 },
101
+ { type: 'paragraph', html: 'Частая ошибка в таймлапсе — получение "дерганого" видео. Для плавного киношного вида вам нужно <strong>размытие движения (motion blur)</strong>.' },
102
+ { type: 'card', title: 'Правило', icon: 'mdi:information', html: 'Ваша выдержка должна составлять половину от интервала. <br /><br /> <em>Пример:</em> Если вы снимаете каждые <strong>4 секунды</strong>, экспозиция должна быть <strong>2 секунды</strong>.' },
103
+
104
+ { type: 'title', text: 'Мерцание (Flicker) и ручная диафрагма', level: 3 },
105
+ { type: 'paragraph', html: '"Flicker" — это раздражающее мерцание, вызванное микроколебаниями в раскрытии диафрагмы между снимками.' },
106
+ { type: 'list', items: [
107
+ '<strong>Lens Twist:</strong> Приоткройте замок объектива на зеркалках, чтобы прервать электронную связь и зафиксировать диафрагму механически.',
108
+ '<strong>Все в ручном режиме:</strong> ISO, баланс белого и фокус должны быть фиксированы.',
109
+ '<strong>Снимайте в RAW:</strong> Необходимо для коррекции экспозиции и цвета при постобработке.'
110
+ ]},
111
+
112
+ { type: 'diagnostic', variant: 'success', title: 'Продвинутая техника: "Святой Грааль"', icon: 'mdi:crown', badge: 'Pro-техника', html: '"Святой Грааль" (Holy Grail) относится к плавному переходу от дня к ночи (или наоборот). Это сложнейшая техническая задача.' },
113
+
114
+ { type: 'stats', columns: 3, items: [
115
+ { label: 'Bulb Ramping', value: 'Постепенная экспозиция', icon: 'mdi:brightness-6' },
116
+ { label: 'Post-Pro', value: 'LRTimelapse', icon: 'mdi:television-guide' },
117
+ { label: 'Стратегия', value: 'Ночной интервал', icon: 'mdi:weather-night' }
118
+ ]},
119
+
120
+ { type: 'title', text: 'Заключение: Дзен простой механики', level: 3 },
121
+ { type: 'paragraph', html: 'Освоение таймлапса начинается с понимания математики вашего интервалометра.' }
122
+ ];
123
+
124
+ const faqSchema: WithContext<FAQPage> = {
125
+ '@context': 'https://schema.org',
126
+ '@type': 'FAQPage',
127
+ mainEntity: faq.map((item) => ({
128
+ '@type': 'Question',
129
+ name: item.question,
130
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
131
+ })),
132
+ };
133
+
134
+ const howToSchema: WithContext<HowTo> = {
135
+ '@context': 'https://schema.org',
136
+ '@type': 'HowTo',
137
+ name: title,
138
+ description,
139
+ step: howTo.map((step) => ({
140
+ '@type': 'HowToStep',
141
+ name: step.name,
142
+ text: step.text,
143
+ })),
144
+ };
145
+
146
+ const appSchema: WithContext<SoftwareApplication> = {
147
+ '@context': 'https://schema.org',
148
+ '@type': 'SoftwareApplication',
149
+ name: title,
150
+ description,
151
+ applicationCategory: 'UtilitiesApplication',
152
+ operatingSystem: 'Web',
153
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
154
+ inLanguage: 'ru',
155
+ };
156
+
157
+ export const content: TimelapseLocaleContent = {
158
+ slug,
159
+ title,
160
+ description,
161
+ ui,
162
+ seo,
163
+ faq,
164
+ faqTitle: 'Часто задаваемые вопросы о производстве таймлапсов',
165
+ bibliography,
166
+ bibliographyTitle: 'Теория и ресурсы таймлапса',
167
+ howTo,
168
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
169
+ };