@jjlmoya/utils-streaming 1.18.0 → 1.20.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 (38) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +4 -1
  4. package/src/index.ts +2 -0
  5. package/src/tests/locale_completeness.test.ts +2 -3
  6. package/src/tests/spanish_leakage.test.ts +25 -3
  7. package/src/tests/tool_validation.test.ts +17 -17
  8. package/src/tool/videoBitratePlanner/bibliography.astro +6 -0
  9. package/src/tool/videoBitratePlanner/bibliography.ts +12 -0
  10. package/src/tool/videoBitratePlanner/component.astro +122 -0
  11. package/src/tool/videoBitratePlanner/controller.ts +134 -0
  12. package/src/tool/videoBitratePlanner/dom-views.ts +77 -0
  13. package/src/tool/videoBitratePlanner/entry.ts +29 -0
  14. package/src/tool/videoBitratePlanner/evaluator.ts +19 -0
  15. package/src/tool/videoBitratePlanner/i18n/de.ts +39 -0
  16. package/src/tool/videoBitratePlanner/i18n/en.ts +202 -0
  17. package/src/tool/videoBitratePlanner/i18n/es.ts +39 -0
  18. package/src/tool/videoBitratePlanner/i18n/fr.ts +39 -0
  19. package/src/tool/videoBitratePlanner/i18n/id.ts +37 -0
  20. package/src/tool/videoBitratePlanner/i18n/it.ts +37 -0
  21. package/src/tool/videoBitratePlanner/i18n/ja.ts +37 -0
  22. package/src/tool/videoBitratePlanner/i18n/ko.ts +37 -0
  23. package/src/tool/videoBitratePlanner/i18n/nl.ts +37 -0
  24. package/src/tool/videoBitratePlanner/i18n/pl.ts +37 -0
  25. package/src/tool/videoBitratePlanner/i18n/pt.ts +37 -0
  26. package/src/tool/videoBitratePlanner/i18n/ru.ts +37 -0
  27. package/src/tool/videoBitratePlanner/i18n/sv.ts +37 -0
  28. package/src/tool/videoBitratePlanner/i18n/tr.ts +37 -0
  29. package/src/tool/videoBitratePlanner/i18n/zh.ts +37 -0
  30. package/src/tool/videoBitratePlanner/index.ts +13 -0
  31. package/src/tool/videoBitratePlanner/locale-content.ts +72 -0
  32. package/src/tool/videoBitratePlanner/logic.test.ts +50 -0
  33. package/src/tool/videoBitratePlanner/logic.ts +158 -0
  34. package/src/tool/videoBitratePlanner/seo.astro +12 -0
  35. package/src/tool/videoBitratePlanner/storage.ts +31 -0
  36. package/src/tool/videoBitratePlanner/ui.ts +50 -0
  37. package/src/tool/videoBitratePlanner/video-bitrate-storage-planner.css +612 -0
  38. package/src/tools.ts +2 -1
@@ -0,0 +1,202 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
3
+ import type { ToolLocaleContent } from '../../../types';
4
+ import type { VideoBitratePlannerUI } from '../ui';
5
+
6
+ const slug = 'video-bitrate-storage-planner';
7
+ const title = 'Video Bitrate and Storage Planner';
8
+ const description = 'Estimate video storage, frame timing, and practical bitrate tiers for streaming or recording scenarios.';
9
+
10
+ const faq = [
11
+ {
12
+ question: 'Does this planner upload or inspect my video?',
13
+ answer: 'No. It only uses the values you enter in the browser. It does not upload files, inspect a camera, or query a streaming service.',
14
+ },
15
+ {
16
+ question: 'How is storage calculated?',
17
+ answer: 'Storage is estimated from bitrate multiplied by duration and divided by eight to convert bits to bytes. The result uses decimal gigabytes, and the copies field multiplies the per-copy estimate.',
18
+ },
19
+ {
20
+ question: 'What does the quality estimate mean?',
21
+ answer: 'It is a rule-of-thumb signal based on pixels, frames per second, bitrate, and a broad codec efficiency factor. It is not a promise of visual quality because motion, grain, scene complexity, and encoder settings also matter.',
22
+ },
23
+ {
24
+ question: 'Why does the same bitrate change with resolution or frame rate?',
25
+ answer: 'A higher resolution has more pixels to describe, and a higher frame rate sends more frames each second. Both increase the amount of visual information competing for the same bitrate.',
26
+ },
27
+ {
28
+ question: 'Can I use the result as a platform requirement?',
29
+ answer: 'Use it for planning capacity and comparing scenarios. Platform requirements vary, so check the current encoder guidance for the destination and leave upload headroom for a live stream.',
30
+ },
31
+ ];
32
+
33
+ const howTo = [
34
+ {
35
+ name: 'Choose the picture shape',
36
+ text: 'Select the output resolution and frame rate that match the stream or recording you plan to make.',
37
+ },
38
+ {
39
+ name: 'Set the encoding signal',
40
+ text: 'Choose the codec and enter the video bitrate in megabits per second. Use a preset as a starting point when you are unsure.',
41
+ },
42
+ {
43
+ name: 'Describe the session',
44
+ text: 'Enter the duration in minutes and the number of copies you expect to keep, edit, or deliver.',
45
+ },
46
+ {
47
+ name: 'Read the tradeoff',
48
+ text: 'Compare the lean, balanced, and crisp tiers to see how storage changes before you commit to a recording or stream setup.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faq.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howTo.map((step, index) => ({
68
+ '@type': 'HowToStep',
69
+ position: index + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
83
+ inLanguage: 'en',
84
+ };
85
+
86
+ const ui: VideoBitratePlannerUI = {
87
+ presetLabel: 'Start with a scene',
88
+ presetFast: 'Fast web stream',
89
+ presetUpload: 'Everyday live',
90
+ presetArchive: '4K archive',
91
+ resolutionLabel: 'Resolution',
92
+ frameRateLabel: 'Frame rate',
93
+ codecLabel: 'Codec',
94
+ bitrateLabel: 'Video bitrate',
95
+ durationLabel: 'Session length',
96
+ copiesLabel: 'Copies kept',
97
+ minutesLabel: 'minutes',
98
+ copiesShort: 'copies',
99
+ h264: 'H.264',
100
+ h265: 'H.265',
101
+ av1: 'AV1',
102
+ codecNote: 'Codec efficiency changes the quality reading, not the storage arithmetic.',
103
+ sceneLabel: 'Signal to storage',
104
+ signalSource: 'Picture',
105
+ codecGate: 'Encoding gate',
106
+ storageReel: 'Storage',
107
+ qualityEstimate: 'Quality reading',
108
+ storageEstimate: 'Estimated storage',
109
+ perCopy: 'One copy',
110
+ allCopies: 'All copies',
111
+ perHour: 'Per hour',
112
+ frameTime: 'Frame time',
113
+ dataPerFrame: 'Data per frame',
114
+ comparisonLabel: 'Storage tradeoff',
115
+ lean: 'Lean',
116
+ balanced: 'Balanced',
117
+ crisp: 'Crisp',
118
+ qualityLean: 'Lean and light',
119
+ qualityBalanced: 'Balanced signal',
120
+ qualityStrong: 'Strong detail',
121
+ qualityExcellent: 'Excellent headroom',
122
+ qualityAggressive: 'Aggressive compression',
123
+ qualityGuidance: 'A visual estimate for comparing settings.',
124
+ capacityLight: 'Light storage footprint',
125
+ capacityMedium: 'Medium storage footprint',
126
+ capacityHeavy: 'Heavy storage footprint',
127
+ capacityNote: 'Capacity badge is based on the total copies shown above.',
128
+ reset: 'Reset values',
129
+ localNote: 'Runs locally in this browser. Nothing is uploaded.',
130
+ assumptionTitle: 'Read the assumptions',
131
+ assumptionText: 'Storage uses decimal gigabytes and the entered video bitrate. It does not add audio, container overhead, variable bitrate peaks, or filesystem padding.',
132
+ warningText: 'The quality tiers are planning heuristics. Motion, grain, keyframes, encoder presets, platform transcoding, and network headroom can change the real result.',
133
+ readyText: 'Adjust a value to redraw the signal.',
134
+ calculateAria: 'Update the video plan',
135
+ };
136
+
137
+ export const content: ToolLocaleContent<VideoBitratePlannerUI> = {
138
+ slug,
139
+ title,
140
+ description,
141
+ ui,
142
+ faq,
143
+ bibliography,
144
+ howTo,
145
+ schemas: [faqSchema as any, howToSchema as any, appSchema as any],
146
+ seo: [
147
+ {
148
+ type: 'title',
149
+ text: 'Estimate video storage before you stream or record',
150
+ level: 2,
151
+ },
152
+ {
153
+ type: 'paragraph',
154
+ html: 'A video bitrate calculator is useful when a recording session needs a realistic storage plan. Enter the bitrate, duration, and number of copies to see the capacity footprint, then compare lean, balanced, and crisp signal tiers for the same picture format.',
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'What the planner calculates',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'list',
163
+ items: [
164
+ '<strong>Storage:</strong> bitrate multiplied by time, converted from bits to decimal gigabytes, then multiplied by the copies you keep.',
165
+ '<strong>Frame timing:</strong> the milliseconds available for each frame at the chosen FPS and an estimate of data carried by each frame.',
166
+ '<strong>Quality reading:</strong> a broad pixels per frame comparison adjusted by a codec efficiency factor so settings can be compared on one screen.',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: 'How resolution and FPS change the tradeoff',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Resolution increases the number of pixels in each frame. Frame rate increases the number of frames sent every second. If bitrate stays fixed while either rises, each frame receives less data and compression becomes more demanding. A faster codec can improve the comparison, but it cannot remove the need to test the real content.',
177
+ },
178
+ {
179
+ type: 'tip',
180
+ title: 'Leave room for a live stream',
181
+ html: 'Treat the entered video bitrate as the payload, not as the full capacity of your connection. Leave practical upload headroom for audio, protocol overhead, and network variation, then test a scene with similar motion to the real broadcast.',
182
+ },
183
+ {
184
+ type: 'title',
185
+ text: 'Use platform guidance for the final setting',
186
+ level: 3,
187
+ },
188
+ {
189
+ type: 'paragraph',
190
+ html: 'This planner is intentionally platform neutral. YouTube publishes bitrate ranges by resolution and frame rate for live encoding and uploads, while also recommending that creators test the actual stream. Use those current destination rules to validate the scenario you model here.',
191
+ },
192
+ {
193
+ type: 'title',
194
+ text: 'Why the storage result is an estimate',
195
+ level: 3,
196
+ },
197
+ {
198
+ type: 'paragraph',
199
+ html: 'A nominal bitrate does not describe every byte in a finished file. Variable bitrate encoders, audio, container metadata, keyframe decisions, platform transcoding, and filesystem units can all move the final size. Keep the assumptions panel open when you need to explain the number to a client or production team.',
200
+ },
201
+ ],
202
+ };
@@ -0,0 +1,39 @@
1
+ import { createLocalizedContent } from '../locale-content';
2
+
3
+ export const content = createLocalizedContent({
4
+ language: 'es',
5
+ slug: 'calculadora-bitrate-almacenamiento-video',
6
+ title: 'Calculadora de Bitrate y Almacenamiento de Video',
7
+ description: 'Estima el almacenamiento de video, el tiempo por fotograma y niveles prácticos de bitrate para streaming o grabación.',
8
+ ui: {
9
+ presetLabel: 'Empieza con una escena', presetFast: 'Stream web rápido', presetUpload: 'Directo diario', presetArchive: 'Archivo 4K',
10
+ resolutionLabel: 'Resolución', frameRateLabel: 'Fotogramas por segundo', codecLabel: 'Códec', bitrateLabel: 'Bitrate de video', durationLabel: 'Duración de la sesión', copiesLabel: 'Copias guardadas', minutesLabel: 'minutos', copiesShort: 'copias',
11
+ h264: 'H.264', h265: 'H.265', av1: 'AV1', codecNote: 'La eficiencia del códec cambia la lectura de calidad, no el cálculo del almacenamiento.', sceneLabel: 'De la señal al almacenamiento', signalSource: 'Imagen', codecGate: 'Codificación', storageReel: 'Almacenamiento', qualityEstimate: 'Lectura de calidad', storageEstimate: 'Almacenamiento estimado', perCopy: 'Una copia', allCopies: 'Todas las copias', perHour: 'Por hora', frameTime: 'Tiempo por fotograma', dataPerFrame: 'Datos por fotograma', comparisonLabel: 'Comparativa de almacenamiento', lean: 'Ligero', balanced: 'Equilibrado', crisp: 'Nítido', qualityLean: 'Ligero y compacto', qualityBalanced: 'Señal equilibrada', qualityStrong: 'Buen detalle', qualityExcellent: 'Mucho margen', qualityAggressive: 'Compresión agresiva', qualityGuidance: 'Una estimación visual para comparar ajustes.', capacityLight: 'Huella de almacenamiento ligera', capacityMedium: 'Huella de almacenamiento media', capacityHeavy: 'Huella de almacenamiento alta', capacityNote: 'El estado depende del total de copias mostrado arriba.', reset: 'Restablecer valores', localNote: 'Funciona localmente en este navegador. No se sube nada.', assumptionTitle: 'Leer los supuestos', assumptionText: 'El almacenamiento usa gigabytes decimales y el bitrate de video introducido. No añade audio, sobrecarga del contenedor, picos de bitrate variable ni relleno del sistema de archivos.', warningText: 'Los niveles de calidad son heurísticas de planificación. El movimiento, el grano, los fotogramas clave, el preset del codificador, la transcodificación y la red pueden cambiar el resultado real.', readyText: 'Cambia un valor para redibujar la señal.', calculateAria: 'Actualizar el plan de video',
12
+ },
13
+ faq: [
14
+ { question: '¿Este planificador sube o inspecciona mi video?', answer: 'No. Solo usa los valores que introduces en el navegador. No sube archivos, no inspecciona una cámara ni consulta ningún servicio de streaming.' },
15
+ { question: '¿Cómo se calcula el almacenamiento?', answer: 'Se multiplica el bitrate por la duración y se divide entre ocho para convertir bits en bytes. El resultado usa gigabytes decimales y el campo de copias multiplica la estimación individual.' },
16
+ { question: '¿Qué significa la lectura de calidad?', answer: 'Es una regla orientativa basada en píxeles, fotogramas por segundo, bitrate y un factor amplio de eficiencia del códec. No promete calidad visual porque también importan el movimiento, el grano y los ajustes del codificador.' },
17
+ { question: '¿Por qué cambia el mismo bitrate con otra resolución o FPS?', answer: 'Una resolución mayor tiene más píxeles y una frecuencia mayor envía más fotogramas cada segundo. Más información visual compite así por el mismo bitrate.' },
18
+ { question: '¿Puedo usar el resultado como requisito de una plataforma?', answer: 'Úsalo para planificar capacidad y comparar escenarios. Los requisitos cambian, así que revisa la guía actual del destino y deja margen de subida para un directo.' },
19
+ ],
20
+ howTo: [
21
+ { name: 'Elige el formato de imagen', text: 'Selecciona la resolución y los fotogramas por segundo que correspondan al directo o grabación que vas a crear.' },
22
+ { name: 'Configura la señal', text: 'Elige el códec e introduce el bitrate de video en megabits por segundo. Usa un preset si necesitas un punto de partida.' },
23
+ { name: 'Describe la sesión', text: 'Indica la duración en minutos y cuántas copias quieres conservar, editar o entregar.' },
24
+ { name: 'Lee la compensación', text: 'Compara los niveles ligero, equilibrado y nítido para ver cómo cambia el almacenamiento antes de grabar.' },
25
+ ],
26
+ seo: [
27
+ { type: 'title', text: 'Calcula el almacenamiento de video antes de emitir o grabar', level: 2 },
28
+ { type: 'paragraph', html: 'Una calculadora de bitrate de video resulta útil cuando una sesión necesita un plan de almacenamiento realista. Introduce bitrate, duración y copias para conocer la capacidad necesaria y compara tres niveles para el mismo formato de imagen.' },
29
+ { type: 'title', text: 'Qué calcula el planificador', level: 3 },
30
+ { type: 'list', items: ['<strong>Almacenamiento:</strong> bitrate por tiempo, convertido de bits a gigabytes decimales y multiplicado por las copias.', '<strong>Tiempo por fotograma:</strong> los milisegundos disponibles según los FPS y una estimación de datos por fotograma.', '<strong>Lectura de calidad:</strong> una comparación de píxeles por fotograma ajustada con un factor de eficiencia del códec.'] },
31
+ { type: 'title', text: 'Cómo cambian la compensación la resolución y los FPS', level: 3 },
32
+ { type: 'paragraph', html: 'La resolución aumenta los píxeles de cada fotograma y los FPS aumentan la cantidad de fotogramas por segundo. Si el bitrate no cambia, cada fotograma recibe menos datos y la compresión tiene más trabajo.' },
33
+ { type: 'tip', title: 'Deja margen en un directo', html: 'Trata el bitrate de video como la carga principal, no como toda la capacidad de conexión. Reserva espacio para audio, protocolo y variaciones de red, y prueba una escena con movimiento parecido.' },
34
+ { type: 'title', text: 'Usa la guía de la plataforma para el ajuste final', level: 3 },
35
+ { type: 'paragraph', html: 'Este planificador es neutral respecto a plataformas. YouTube publica rangos por resolución y frecuencia de fotogramas. Comprueba esas reglas actuales para validar el escenario que has modelado aquí.' },
36
+ { type: 'title', text: 'Por qué el resultado de almacenamiento es una estimación', level: 3 },
37
+ { type: 'paragraph', html: 'Un bitrate nominal no describe todos los bytes del archivo final. El bitrate variable, el audio, los metadatos del contenedor, los fotogramas clave, la transcodificación y las unidades del sistema pueden cambiar el tamaño.' },
38
+ ],
39
+ });
@@ -0,0 +1,39 @@
1
+ import { createLocalizedContent } from '../locale-content';
2
+
3
+ export const content = createLocalizedContent({
4
+ language: 'fr',
5
+ slug: 'calculateur-debit-stockage-video',
6
+ title: 'Calculateur de Débit et de Stockage Vidéo',
7
+ description: 'Estimez le stockage vidéo, le temps par image et des niveaux de débit pratiques pour le streaming ou l enregistrement.',
8
+ ui: {
9
+ presetLabel: 'Commencer avec une scène', presetFast: 'Stream web rapide', presetUpload: 'Direct quotidien', presetArchive: 'Archive 4K',
10
+ resolutionLabel: 'Résolution', frameRateLabel: 'Images par seconde', codecLabel: 'Codec', bitrateLabel: 'Débit vidéo', durationLabel: 'Durée de session', copiesLabel: 'Copies conservées', minutesLabel: 'minutes', copiesShort: 'copies',
11
+ h264: 'H.264', h265: 'H.265', av1: 'AV1', codecNote: 'L efficacité du codec modifie la lecture de qualité, pas le calcul du stockage.', sceneLabel: 'Du signal au stockage', signalSource: 'Image', codecGate: 'Encodage', storageReel: 'Stockage', qualityEstimate: 'Lecture de qualité', storageEstimate: 'Stockage estimé', perCopy: 'Une copie', allCopies: 'Toutes les copies', perHour: 'Par heure', frameTime: 'Temps par image', dataPerFrame: 'Données par image', comparisonLabel: 'Comparaison du stockage', lean: 'Léger', balanced: 'Équilibré', crisp: 'Net', qualityLean: 'Léger et compact', qualityBalanced: 'Signal équilibré', qualityStrong: 'Détails solides', qualityExcellent: 'Marge généreuse', qualityAggressive: 'Compression forte', qualityGuidance: 'Une estimation visuelle pour comparer les réglages.', capacityLight: 'Faible empreinte de stockage', capacityMedium: 'Empreinte moyenne', capacityHeavy: 'Forte empreinte de stockage', capacityNote: 'Le statut dépend du total de copies affiché ci-dessus.', reset: 'Réinitialiser les valeurs', localNote: 'Fonctionne localement dans ce navigateur. Rien n est envoyé.', assumptionTitle: 'Lire les hypothèses', assumptionText: 'Le stockage utilise des gigaoctets décimaux et le débit vidéo saisi. L audio, la surcharge du conteneur, les pics de débit variable et le remplissage du système ne sont pas ajoutés.', warningText: 'Les niveaux de qualité sont des repères de planification. Le mouvement, le grain, les images clés, le preset d encodeur, la transcodification et le réseau peuvent changer le résultat réel.', readyText: 'Modifiez une valeur pour redessiner le signal.', calculateAria: 'Mettre à jour le plan vidéo',
12
+ },
13
+ faq: [
14
+ { question: 'Ce planificateur charge-t-il ou inspecte-t-il ma vidéo ?', answer: 'Non. Il utilise uniquement les valeurs saisies dans le navigateur. Il n envoie aucun fichier, n inspecte pas de caméra et ne consulte aucun service de streaming.' },
15
+ { question: 'Comment le stockage est-il calculé ?', answer: 'Le débit est multiplié par la durée puis divisé par huit pour convertir les bits en octets. Le résultat utilise des gigaoctets décimaux et le nombre de copies multiplie l estimation.' },
16
+ { question: 'Que signifie la lecture de qualité ?', answer: 'C est une règle indicative fondée sur les pixels, les images par seconde, le débit et un facteur général d efficacité du codec. Elle ne garantit pas la qualité car le mouvement, le grain et l encodeur comptent aussi.' },
17
+ { question: 'Pourquoi le même débit change-t-il avec une autre résolution ou fréquence ?', answer: 'Une résolution supérieure contient plus de pixels et une fréquence supérieure envoie plus d images chaque seconde. Davantage d informations visuelles se disputent donc le même débit.' },
18
+ { question: 'Puis-je utiliser le résultat comme exigence de plateforme ?', answer: 'Utilisez-le pour planifier la capacité et comparer des scénarios. Les exigences changent, vérifiez donc les recommandations actuelles de la destination et gardez une marge réseau pour un direct.' },
19
+ ],
20
+ howTo: [
21
+ { name: 'Choisir le format de l image', text: 'Sélectionnez la résolution et la fréquence qui correspondent au stream ou à l enregistrement prévu.' },
22
+ { name: 'Régler le signal', text: 'Choisissez le codec et saisissez le débit vidéo en mégabits par seconde. Utilisez un preset pour commencer rapidement.' },
23
+ { name: 'Décrire la session', text: 'Saisissez la durée en minutes et le nombre de copies à conserver, monter ou livrer.' },
24
+ { name: 'Lire le compromis', text: 'Comparez les niveaux léger, équilibré et net pour voir l évolution du stockage avant la session.' },
25
+ ],
26
+ seo: [
27
+ { type: 'title', text: 'Estimer le stockage vidéo avant de diffuser ou enregistrer', level: 2 },
28
+ { type: 'paragraph', html: 'Un calculateur de débit vidéo aide à préparer un stockage réaliste pour une session. Saisissez le débit, la durée et les copies, puis comparez trois niveaux de signal pour le même format d image.' },
29
+ { type: 'title', text: 'Ce que le planificateur calcule', level: 3 },
30
+ { type: 'list', items: ['<strong>Stockage :</strong> débit multiplié par le temps, converti des bits en gigaoctets décimaux et multiplié par les copies.', '<strong>Temps par image :</strong> les millisecondes disponibles selon la fréquence et une estimation des données par image.', '<strong>Lecture de qualité :</strong> une comparaison des pixels par image ajustée par un facteur d efficacité du codec.'] },
31
+ { type: 'title', text: 'Comment la résolution et la fréquence changent le compromis', level: 3 },
32
+ { type: 'paragraph', html: 'La résolution augmente les pixels de chaque image et la fréquence augmente le nombre d images par seconde. Si le débit reste fixe, chaque image reçoit moins de données et la compression devient plus exigeante.' },
33
+ { type: 'tip', title: 'Garder une marge pour le direct', html: 'Considérez le débit vidéo comme la charge principale, pas comme toute la capacité de la connexion. Gardez de la place pour l audio, le protocole et les variations du réseau, puis testez une scène similaire.' },
34
+ { type: 'title', text: 'Utiliser les recommandations de la plateforme', level: 3 },
35
+ { type: 'paragraph', html: 'Ce planificateur reste indépendant des plateformes. YouTube publie des plages de débit selon la résolution et la fréquence. Vérifiez les règles actuelles de votre destination pour valider le scénario.' },
36
+ { type: 'title', text: 'Pourquoi le résultat reste une estimation', level: 3 },
37
+ { type: 'paragraph', html: 'Un débit nominal ne décrit pas chaque octet du fichier final. Le débit variable, l audio, les métadonnées, les images clés, la transcodification et les unités du système peuvent modifier la taille.' },
38
+ ],
39
+ });
@@ -0,0 +1,37 @@
1
+ import { createLocalizedContent } from '../locale-content';
2
+
3
+ export const content = createLocalizedContent({
4
+ language: 'id',
5
+ slug: 'perencana-bitrate-penyimpanan-video',
6
+ title: 'Perencana Bitrate dan Penyimpanan Video',
7
+ description: 'Perkirakan penyimpanan video, waktu frame, dan tingkat bitrate praktis untuk streaming atau rekaman.',
8
+ ui: {
9
+ presetLabel: 'Mulai dengan sebuah adegan', presetFast: 'Streaming web cepat', presetUpload: 'Live harian', presetArchive: 'Arsip 4K', resolutionLabel: 'Resolusi', frameRateLabel: 'Frame per detik', codecLabel: 'Codec', bitrateLabel: 'Bitrate video', durationLabel: 'Durasi sesi', copiesLabel: 'Salinan yang disimpan', minutesLabel: 'menit', copiesShort: 'salinan', h264: 'H.264', h265: 'H.265', av1: 'AV1', codecNote: 'Efisiensi codec mengubah penilaian kualitas, bukan hitungan penyimpanan.', sceneLabel: 'Sinyal ke penyimpanan', signalSource: 'Gambar', codecGate: 'Encoding', storageReel: 'Penyimpanan', qualityEstimate: 'Penilaian kualitas', storageEstimate: 'Perkiraan penyimpanan', perCopy: 'Satu salinan', allCopies: 'Semua salinan', perHour: 'Per jam', frameTime: 'Waktu frame', dataPerFrame: 'Data per frame', comparisonLabel: 'Perbandingan penyimpanan', lean: 'Ringan', balanced: 'Seimbang', crisp: 'Tajam', qualityLean: 'Ringan dan hemat', qualityBalanced: 'Sinyal seimbang', qualityStrong: 'Detail kuat', qualityExcellent: 'Ruang sangat lega', qualityAggressive: 'Kompresi agresif', qualityGuidance: 'Perkiraan visual untuk membandingkan pengaturan.', capacityLight: 'Jejak penyimpanan ringan', capacityMedium: 'Jejak penyimpanan sedang', capacityHeavy: 'Jejak penyimpanan berat', capacityNote: 'Status kapasitas berdasarkan total salinan di atas.', reset: 'Atur ulang nilai', localNote: 'Berjalan lokal di browser ini. Tidak ada yang diunggah.', assumptionTitle: 'Baca asumsi', assumptionText: 'Penyimpanan memakai gigabyte desimal dan bitrate video yang dimasukkan. Audio, overhead container, lonjakan bitrate variabel, dan padding sistem file tidak ditambahkan.', warningText: 'Tingkat kualitas adalah perkiraan perencanaan. Gerakan, grain, keyframe, preset encoder, transcoding platform, dan cadangan jaringan dapat mengubah hasil nyata.', readyText: 'Ubah nilai untuk menggambar ulang sinyal.', calculateAria: 'Perbarui rencana video',
10
+ },
11
+ faq: [
12
+ { question: 'Apakah perencana ini mengunggah atau memeriksa video saya?', answer: 'Tidak. Perencana hanya memakai nilai yang Anda masukkan di browser. Tidak ada file yang diunggah, kamera yang diperiksa, atau layanan streaming yang dipanggil.' },
13
+ { question: 'Bagaimana penyimpanan dihitung?', answer: 'Bitrate dikalikan durasi lalu dibagi delapan untuk mengubah bit menjadi byte. Hasilnya memakai gigabyte desimal dan dikalikan dengan jumlah salinan.' },
14
+ { question: 'Apa arti penilaian kualitas?', answer: 'Ini adalah aturan praktis berdasarkan piksel, frame per detik, bitrate, dan faktor efisiensi codec yang luas. Ini bukan janji kualitas visual karena gerakan dan pengaturan encoder juga berpengaruh.' },
15
+ { question: 'Mengapa bitrate yang sama berubah saat resolusi atau frame rate berubah?', answer: 'Resolusi lebih tinggi memiliki lebih banyak piksel dan frame rate lebih tinggi mengirim lebih banyak frame tiap detik. Lebih banyak informasi visual memakai bitrate yang sama.' },
16
+ { question: 'Bisakah hasil ini dianggap sebagai syarat platform?', answer: 'Gunakan untuk merencanakan kapasitas dan membandingkan skenario. Syarat platform dapat berubah, jadi periksa panduan encoder terbaru dan sisakan ruang upload untuk live stream.' },
17
+ ],
18
+ howTo: [
19
+ { name: 'Pilih format gambar', text: 'Pilih resolusi dan frame rate yang sesuai dengan streaming atau rekaman yang akan dibuat.' },
20
+ { name: 'Atur sinyal encoding', text: 'Pilih codec lalu masukkan bitrate video dalam megabit per detik. Gunakan preset sebagai titik awal.' },
21
+ { name: 'Jelaskan sesi', text: 'Masukkan durasi dalam menit dan jumlah salinan yang ingin disimpan, diedit, atau dikirim.' },
22
+ { name: 'Baca pertukarannya', text: 'Bandingkan tingkat ringan, seimbang, dan tajam untuk melihat perubahan penyimpanan sebelum mulai.' },
23
+ ],
24
+ seo: [
25
+ { type: 'title', text: 'Perkirakan penyimpanan video sebelum streaming atau merekam', level: 2 },
26
+ { type: 'paragraph', html: 'Kalkulator bitrate video membantu saat sesi rekaman memerlukan rencana penyimpanan yang realistis. Masukkan bitrate, durasi, dan salinan, lalu bandingkan tiga tingkat sinyal untuk format gambar yang sama.' },
27
+ { type: 'title', text: 'Yang dihitung perencana', level: 3 },
28
+ { type: 'list', items: ['<strong>Penyimpanan:</strong> bitrate dikali waktu, diubah dari bit menjadi gigabyte desimal, lalu dikali jumlah salinan.', '<strong>Waktu frame:</strong> milidetik yang tersedia untuk setiap frame pada FPS yang dipilih dan perkiraan data per frame.', '<strong>Penilaian kualitas:</strong> perbandingan piksel per frame yang disesuaikan dengan faktor efisiensi codec.'] },
29
+ { type: 'title', text: 'Bagaimana resolusi dan FPS mengubah pertukaran', level: 3 },
30
+ { type: 'paragraph', html: 'Resolusi menambah jumlah piksel pada setiap frame dan FPS menambah jumlah frame tiap detik. Jika bitrate tetap, setiap frame menerima lebih sedikit data dan kompresi menjadi lebih berat.' },
31
+ { type: 'tip', title: 'Sisakan ruang untuk live stream', html: 'Anggap bitrate video sebagai beban utama, bukan seluruh kapasitas koneksi. Sisakan ruang untuk audio, protokol, dan perubahan jaringan, lalu uji adegan dengan gerakan serupa.' },
32
+ { type: 'title', text: 'Gunakan panduan platform untuk pengaturan akhir', level: 3 },
33
+ { type: 'paragraph', html: 'Perencana ini tidak terikat platform. YouTube menerbitkan rentang bitrate menurut resolusi dan frame rate. Gunakan aturan terbaru tujuan Anda untuk memvalidasi skenario di sini.' },
34
+ { type: 'title', text: 'Mengapa hasil penyimpanan adalah perkiraan', level: 3 },
35
+ { type: 'paragraph', html: 'Bitrate nominal tidak menjelaskan setiap byte file akhir. Bitrate variabel, audio, metadata container, keyframe, transcoding, dan satuan sistem dapat mengubah ukuran akhir.' },
36
+ ],
37
+ });
@@ -0,0 +1,37 @@
1
+ import { createLocalizedContent } from '../locale-content';
2
+
3
+ export const content = createLocalizedContent({
4
+ language: 'it',
5
+ slug: 'pianificatore-bitrate-archiviazione-video',
6
+ title: 'Pianificatore di Bitrate e Archiviazione Video',
7
+ description: 'Stima lo spazio video, il tempo per fotogramma e livelli pratici di bitrate per streaming o registrazioni.',
8
+ ui: {
9
+ presetLabel: 'Inizia da una scena', presetFast: 'Stream web rapido', presetUpload: 'Diretta quotidiana', presetArchive: 'Archivio 4K', resolutionLabel: 'Risoluzione', frameRateLabel: 'Fotogrammi al secondo', codecLabel: 'Codec', bitrateLabel: 'Bitrate video', durationLabel: 'Durata sessione', copiesLabel: 'Copie conservate', minutesLabel: 'minuti', copiesShort: 'copie', h264: 'H.264', h265: 'H.265', av1: 'AV1', codecNote: 'L efficienza del codec cambia la lettura della qualità, non il calcolo dello spazio.', sceneLabel: 'Dal segnale allo spazio', signalSource: 'Immagine', codecGate: 'Codifica', storageReel: 'Archiviazione', qualityEstimate: 'Lettura della qualità', storageEstimate: 'Spazio stimato', perCopy: 'Una copia', allCopies: 'Tutte le copie', perHour: 'All ora', frameTime: 'Tempo fotogramma', dataPerFrame: 'Dati per fotogramma', comparisonLabel: 'Confronto dello spazio', lean: 'Leggero', balanced: 'Bilanciato', crisp: 'Nitido', qualityLean: 'Leggero e compatto', qualityBalanced: 'Segnale bilanciato', qualityStrong: 'Dettaglio solido', qualityExcellent: 'Ampio margine', qualityAggressive: 'Compressione aggressiva', qualityGuidance: 'Una stima visiva per confrontare le impostazioni.', capacityLight: 'Ingombro di archiviazione ridotto', capacityMedium: 'Ingombro medio', capacityHeavy: 'Ingombro elevato', capacityNote: 'Lo stato dipende dal totale delle copie mostrato sopra.', reset: 'Reimposta valori', localNote: 'Funziona localmente nel browser. Nulla viene caricato.', assumptionTitle: 'Leggi le ipotesi', assumptionText: 'Lo spazio usa gigabyte decimali e il bitrate video inserito. Audio, overhead del contenitore, picchi del bitrate variabile e padding del file system non sono inclusi.', warningText: 'I livelli di qualità sono indicativi. Movimento, grana, keyframe, preset dell encoder, transcodifica e margine di rete possono cambiare il risultato reale.', readyText: 'Modifica un valore per ridisegnare il segnale.', calculateAria: 'Aggiorna il piano video',
10
+ },
11
+ faq: [
12
+ { question: 'Questo pianificatore carica o analizza il mio video?', answer: 'No. Usa solo i valori inseriti nel browser. Non carica file, non analizza una videocamera e non interroga servizi di streaming.' },
13
+ { question: 'Come viene calcolato lo spazio?', answer: 'Il bitrate viene moltiplicato per la durata e diviso per otto per convertire i bit in byte. Il risultato usa gigabyte decimali e viene moltiplicato per le copie.' },
14
+ { question: 'Che cosa indica la lettura della qualità?', answer: 'È una regola indicativa basata su pixel, fotogrammi al secondo, bitrate e un fattore generale di efficienza del codec. Non garantisce la qualità perché contano anche movimento e impostazioni dell encoder.' },
15
+ { question: 'Perché lo stesso bitrate cambia con risoluzione o frequenza diverse?', answer: 'Una risoluzione maggiore contiene più pixel e una frequenza maggiore invia più fotogrammi ogni secondo. Più informazioni competono per lo stesso bitrate.' },
16
+ { question: 'Posso usare il risultato come requisito di una piattaforma?', answer: 'Usalo per pianificare lo spazio e confrontare scenari. I requisiti cambiano, quindi controlla la guida aggiornata della destinazione e lascia margine di upload per una diretta.' },
17
+ ],
18
+ howTo: [
19
+ { name: 'Scegli il formato dell immagine', text: 'Seleziona risoluzione e frequenza adatte allo streaming o alla registrazione che vuoi realizzare.' },
20
+ { name: 'Imposta il segnale', text: 'Scegli il codec e inserisci il bitrate video in megabit al secondo. Un preset è un buon punto di partenza.' },
21
+ { name: 'Descrivi la sessione', text: 'Inserisci la durata in minuti e il numero di copie da conservare, montare o consegnare.' },
22
+ { name: 'Leggi il compromesso', text: 'Confronta i livelli leggero, bilanciato e nitido per vedere come cambia lo spazio prima della sessione.' },
23
+ ],
24
+ seo: [
25
+ { type: 'title', text: 'Stima lo spazio video prima di trasmettere o registrare', level: 2 },
26
+ { type: 'paragraph', html: 'Un calcolatore di bitrate video aiuta a preparare uno spazio realistico per una sessione. Inserisci bitrate, durata e copie, poi confronta tre livelli di segnale per lo stesso formato.' },
27
+ { type: 'title', text: 'Che cosa calcola il pianificatore', level: 3 },
28
+ { type: 'list', items: ['<strong>Spazio:</strong> bitrate per tempo, convertito da bit a gigabyte decimali e moltiplicato per le copie.', '<strong>Tempo fotogramma:</strong> millisecondi disponibili in base agli FPS e stima dei dati per fotogramma.', '<strong>Lettura qualità:</strong> confronto dei pixel per fotogramma corretto con un fattore di efficienza del codec.'] },
29
+ { type: 'title', text: 'Come risoluzione e FPS cambiano il compromesso', level: 3 },
30
+ { type: 'paragraph', html: 'La risoluzione aumenta i pixel di ogni fotogramma e gli FPS aumentano i fotogrammi al secondo. Se il bitrate resta fisso, ogni fotogramma riceve meno dati e la compressione diventa più impegnativa.' },
31
+ { type: 'tip', title: 'Lascia margine per una diretta', html: 'Considera il bitrate video come il carico principale, non come tutta la capacità della connessione. Lascia spazio per audio, protocollo e variazioni di rete e prova una scena simile.' },
32
+ { type: 'title', text: 'Usa le indicazioni della piattaforma per il valore finale', level: 3 },
33
+ { type: 'paragraph', html: 'Questo pianificatore è indipendente dalle piattaforme. YouTube pubblica intervalli di bitrate per risoluzione e frequenza. Controlla le regole aggiornate della destinazione per convalidare lo scenario.' },
34
+ { type: 'title', text: 'Perché il risultato è una stima', level: 3 },
35
+ { type: 'paragraph', html: 'Un bitrate nominale non descrive ogni byte del file finale. Bitrate variabile, audio, metadati, keyframe, transcodifica e unità del sistema possono modificare la dimensione.' },
36
+ ],
37
+ });
@@ -0,0 +1,37 @@
1
+ import { createLocalizedContent } from '../locale-content';
2
+
3
+ export const content = createLocalizedContent({
4
+ language: 'ja',
5
+ slug: 'video-bitrate-storage-planner',
6
+ title: '動画ビットレートとストレージ計画',
7
+ description: '配信や録画に必要な動画ストレージ、フレーム時間、実用的なビットレートを見積もります。',
8
+ ui: {
9
+ presetLabel: 'シーンから始める', presetFast: '高速ウェブ配信', presetUpload: '通常のライブ', presetArchive: '4Kアーカイブ', resolutionLabel: '解像度', frameRateLabel: 'フレームレート', codecLabel: 'コーデック', bitrateLabel: '動画ビットレート', durationLabel: 'セッション時間', copiesLabel: '保存するコピー数', minutesLabel: '分', copiesShort: 'コピー', h264: 'H.264', h265: 'H.265', av1: 'AV1', codecNote: 'コーデック効率は品質の読み取りを変えますが、ストレージ計算は変えません。', sceneLabel: '信号からストレージへ', signalSource: '映像', codecGate: 'エンコード', storageReel: 'ストレージ', qualityEstimate: '品質の目安', storageEstimate: '推定ストレージ', perCopy: '1コピー', allCopies: '全コピー', perHour: '1時間あたり', frameTime: 'フレーム時間', dataPerFrame: '1フレームのデータ', comparisonLabel: 'ストレージ比較', lean: '軽量', balanced: 'バランス', crisp: '高精細', qualityLean: '軽量な信号', qualityBalanced: 'バランスした信号', qualityStrong: '細部に強い', qualityExcellent: '余裕が大きい', qualityAggressive: '強い圧縮', qualityGuidance: '設定を比べるための視覚的な目安です。', capacityLight: '軽いストレージ負荷', capacityMedium: '中程度のストレージ負荷', capacityHeavy: '大きなストレージ負荷', capacityNote: '容量バッジは上に表示されたコピーの合計を基にします。', reset: '値をリセット', localNote: 'このブラウザ内で動作します。アップロードはありません。', assumptionTitle: '計算の前提', assumptionText: 'ストレージは10進ギガバイトと入力した動画ビットレートで計算します。音声、コンテナのオーバーヘッド、可変ビットレートのピーク、ファイルシステムの余白は含みません。', warningText: '品質レベルは計画用の目安です。動き、粒状感、キーフレーム、エンコーダ設定、再エンコード、ネットワーク余裕によって実際の結果は変わります。', readyText: '値を変えると信号が描き直されます。', calculateAria: '動画計画を更新',
10
+ },
11
+ faq: [
12
+ { question: 'この計画ツールは動画をアップロードまたは検査しますか?', answer: 'いいえ。ブラウザに入力した値だけを使います。ファイルのアップロード、カメラの検査、配信サービスへの問い合わせは行いません。' },
13
+ { question: 'ストレージはどのように計算されますか?', answer: 'ビットレートに時間を掛け、8で割ってビットをバイトに変換します。10進ギガバイトで表示し、コピー数を掛けます。' },
14
+ { question: '品質の目安は何を意味しますか?', answer: 'ピクセル数、毎秒フレーム数、ビットレート、コーデック効率の大まかな係数による目安です。動きやエンコーダ設定も影響するため、画質を保証するものではありません。' },
15
+ { question: '解像度やフレームレートで同じビットレートの意味が変わるのはなぜですか?', answer: '高い解像度は多くのピクセルを持ち、高いフレームレートは毎秒より多くのフレームを送ります。同じビットレートでより多くの情報を扱うことになります。' },
16
+ { question: '結果を配信サービスの必須条件として使えますか?', answer: '容量計画と設定比較に使ってください。サービスの条件は変わるため、配信先の最新のエンコーダー案内を確認し、ライブ配信には回線の余裕を残してください。' },
17
+ ],
18
+ howTo: [
19
+ { name: '映像形式を選ぶ', text: '作成する配信や録画に合う解像度とフレームレートを選択します。' },
20
+ { name: 'エンコード信号を設定する', text: 'コーデックを選び、動画ビットレートをMbpsで入力します。迷ったらプリセットから始めます。' },
21
+ { name: 'セッションを指定する', text: '時間を分で入力し、保存、編集、納品するコピー数を指定します。' },
22
+ { name: 'トレードオフを読む', text: '軽量、バランス、高精細を比べ、録画前にストレージの変化を確認します。' },
23
+ ],
24
+ seo: [
25
+ { type: 'title', text: '配信や録画の前に動画ストレージを見積もる', level: 2 },
26
+ { type: 'paragraph', html: '動画ビットレート計算ツールは、録画セッションに現実的なストレージ計画が必要なときに役立ちます。ビットレート、時間、コピー数を入力し、同じ映像形式で3つの信号を比較できます。' },
27
+ { type: 'title', text: 'この計画ツールが計算するもの', level: 3 },
28
+ { type: 'list', items: ['<strong>ストレージ:</strong> ビットレートと時間を掛け、ビットから10進ギガバイトに変換してコピー数を掛けます。', '<strong>フレーム時間:</strong> 選択したFPSで1フレームに使えるミリ秒と、フレームごとのデータ量を示します。', '<strong>品質の目安:</strong> コーデック効率を考慮したフレームあたりのピクセル比較です。'] },
29
+ { type: 'title', text: '解像度とFPSがトレードオフを変える仕組み', level: 3 },
30
+ { type: 'paragraph', html: '解像度が上がると1フレームのピクセルが増え、FPSが上がると毎秒のフレーム数が増えます。ビットレートを固定すると1フレームに配分できるデータが減り、圧縮の負荷が高まります。' },
31
+ { type: 'tip', title: 'ライブ配信には余裕を残す', html: '入力した動画ビットレートを回線容量の全てと考えないでください。音声、プロトコル、ネットワーク変動のための余裕を残し、実際の動きに近い映像でテストします。' },
32
+ { type: 'title', text: '最終設定は配信先の案内で確認する', level: 3 },
33
+ { type: 'paragraph', html: 'このツールは特定のサービスに依存しません。YouTubeは解像度とフレームレート別にビットレートの範囲を公開しています。ここで作ったシナリオを最新の配信先ルールで確認してください。' },
34
+ { type: 'title', text: 'ストレージ結果が推定値である理由', level: 3 },
35
+ { type: 'paragraph', html: '公称ビットレートだけでは完成ファイルの全バイトを表せません。可変ビットレート、音声、コンテナ情報、キーフレーム、再エンコード、単位系によって最終サイズは変わります。' },
36
+ ],
37
+ });
@@ -0,0 +1,37 @@
1
+ import { createLocalizedContent } from '../locale-content';
2
+
3
+ export const content = createLocalizedContent({
4
+ language: 'ko',
5
+ slug: 'video-bitrate-storage-planner',
6
+ title: '동영상 비트레이트 및 저장 공간 플래너',
7
+ description: '스트리밍이나 녹화에 필요한 동영상 저장 공간, 프레임 시간, 실용적인 비트레이트를 추정합니다.',
8
+ ui: {
9
+ presetLabel: '장면으로 시작', presetFast: '빠른 웹 스트림', presetUpload: '일상 라이브', presetArchive: '4K 아카이브', resolutionLabel: '해상도', frameRateLabel: '프레임 속도', codecLabel: '코덱', bitrateLabel: '동영상 비트레이트', durationLabel: '세션 길이', copiesLabel: '보관할 사본', minutesLabel: '분', copiesShort: '사본', h264: 'H.264', h265: 'H.265', av1: 'AV1', codecNote: '코덱 효율은 품질 판단을 바꾸지만 저장 공간 계산은 바꾸지 않습니다.', sceneLabel: '신호에서 저장 공간까지', signalSource: '화면', codecGate: '인코딩', storageReel: '저장 공간', qualityEstimate: '품질 판단', storageEstimate: '예상 저장 공간', perCopy: '한 사본', allCopies: '전체 사본', perHour: '시간당', frameTime: '프레임 시간', dataPerFrame: '프레임당 데이터', comparisonLabel: '저장 공간 비교', lean: '가벼움', balanced: '균형', crisp: '선명함', qualityLean: '가볍고 절약됨', qualityBalanced: '균형 잡힌 신호', qualityStrong: '세부 묘사 강함', qualityExcellent: '여유가 큼', qualityAggressive: '강한 압축', qualityGuidance: '설정을 비교하기 위한 시각적 추정입니다.', capacityLight: '낮은 저장 공간 부담', capacityMedium: '중간 저장 공간 부담', capacityHeavy: '높은 저장 공간 부담', capacityNote: '용량 상태는 위에 표시된 사본 전체를 기준으로 합니다.', reset: '값 초기화', localNote: '이 브라우저에서 로컬로 실행됩니다. 업로드하지 않습니다.', assumptionTitle: '가정 읽기', assumptionText: '저장 공간은 10진 기가바이트와 입력한 동영상 비트레이트를 사용합니다. 오디오, 컨테이너 오버헤드, 가변 비트레이트 피크, 파일 시스템 여유 공간은 더하지 않습니다.', warningText: '품질 단계는 계획을 위한 기준입니다. 움직임, 그레인, 키프레임, 인코더 프리셋, 플랫폼 트랜스코딩, 네트워크 여유에 따라 실제 결과가 달라집니다.', readyText: '값을 바꾸면 신호가 다시 그려집니다.', calculateAria: '동영상 계획 업데이트',
10
+ },
11
+ faq: [
12
+ { question: '이 플래너가 내 동영상을 업로드하거나 검사하나요?', answer: '아니요. 브라우저에 입력한 값만 사용합니다. 파일을 업로드하거나 카메라를 검사하거나 스트리밍 서비스에 요청하지 않습니다.' },
13
+ { question: '저장 공간은 어떻게 계산하나요?', answer: '비트레이트에 시간을 곱한 뒤 8로 나누어 비트를 바이트로 바꿉니다. 10진 기가바이트로 표시하고 사본 수를 곱합니다.' },
14
+ { question: '품질 판단은 무엇을 의미하나요?', answer: '픽셀 수, 초당 프레임 수, 비트레이트, 넓은 코덱 효율 계수를 기반으로 한 기준입니다. 움직임과 인코더 설정도 중요하므로 화질을 보장하지 않습니다.' },
15
+ { question: '해상도나 프레임 속도에 따라 같은 비트레이트의 의미가 달라지는 이유는 무엇인가요?', answer: '해상도가 높으면 픽셀이 많아지고 프레임 속도가 높으면 매초 더 많은 프레임을 보냅니다. 같은 비트레이트로 더 많은 화면 정보를 처리해야 합니다.' },
16
+ { question: '결과를 플랫폼 요구 사항으로 사용할 수 있나요?', answer: '용량을 계획하고 시나리오를 비교하는 데 사용하세요. 플랫폼 요구 사항은 바뀔 수 있으므로 최신 인코더 안내를 확인하고 라이브 스트림에는 업로드 여유를 두세요.' },
17
+ ],
18
+ howTo: [
19
+ { name: '화면 형식 선택', text: '만들려는 스트림이나 녹화에 맞는 해상도와 프레임 속도를 선택합니다.' },
20
+ { name: '인코딩 신호 설정', text: '코덱을 선택하고 동영상 비트레이트를 Mbps로 입력합니다. 프리셋으로 시작해도 됩니다.' },
21
+ { name: '세션 설명', text: '시간을 분 단위로 입력하고 보관, 편집, 전달할 사본 수를 입력합니다.' },
22
+ { name: '트레이드오프 확인', text: '가벼움, 균형, 선명함을 비교해 녹화 전에 저장 공간 변화를 확인합니다.' },
23
+ ],
24
+ seo: [
25
+ { type: 'title', text: '스트리밍이나 녹화 전에 동영상 저장 공간 추정하기', level: 2 },
26
+ { type: 'paragraph', html: '동영상 비트레이트 계산기는 녹화 세션에 현실적인 저장 공간 계획이 필요할 때 유용합니다. 비트레이트, 시간, 사본 수를 입력하고 같은 화면 형식에서 세 가지 신호 단계를 비교하세요.' },
27
+ { type: 'title', text: '플래너가 계산하는 항목', level: 3 },
28
+ { type: 'list', items: ['<strong>저장 공간:</strong> 비트레이트와 시간을 곱하고 비트에서 10진 기가바이트로 바꾼 뒤 사본 수를 곱합니다.', '<strong>프레임 시간:</strong> 선택한 FPS에서 프레임 하나에 사용할 수 있는 밀리초와 프레임별 데이터 추정치입니다.', '<strong>품질 판단:</strong> 코덱 효율 계수를 반영한 프레임당 픽셀 비교입니다.'] },
29
+ { type: 'title', text: '해상도와 FPS가 트레이드오프를 바꾸는 방식', level: 3 },
30
+ { type: 'paragraph', html: '해상도는 프레임마다 픽셀 수를 늘리고 FPS는 초당 프레임 수를 늘립니다. 비트레이트가 고정되면 각 프레임에 배분되는 데이터가 줄어 압축 부담이 커집니다.' },
31
+ { type: 'tip', title: '라이브 스트림에 여유 두기', html: '동영상 비트레이트를 회선 전체 용량으로 보지 마세요. 오디오, 프로토콜, 네트워크 변동을 위한 공간을 남기고 실제 장면과 비슷한 움직임으로 테스트하세요.' },
32
+ { type: 'title', text: '최종 설정은 플랫폼 안내로 확인하기', level: 3 },
33
+ { type: 'paragraph', html: '이 플래너는 특정 플랫폼에 종속되지 않습니다. YouTube는 해상도와 프레임 속도별 비트레이트 범위를 공개합니다. 여기서 만든 시나리오를 최신 목적지 규칙으로 확인하세요.' },
34
+ { type: 'title', text: '저장 공간 결과가 추정치인 이유', level: 3 },
35
+ { type: 'paragraph', html: '명목 비트레이트만으로 완성 파일의 모든 바이트를 알 수는 없습니다. 가변 비트레이트, 오디오, 컨테이너 메타데이터, 키프레임, 트랜스코딩, 시스템 단위가 최종 크기를 바꿀 수 있습니다.' },
36
+ ],
37
+ });
@@ -0,0 +1,37 @@
1
+ import { createLocalizedContent } from '../locale-content';
2
+
3
+ export const content = createLocalizedContent({
4
+ language: 'nl',
5
+ slug: 'video-bitrate-opslagplanner',
6
+ title: 'Planner voor Videobitrate en Opslag',
7
+ description: 'Schat video opslag, frametijd en praktische bitrate niveaus voor streaming of opnames.',
8
+ ui: {
9
+ presetLabel: 'Begin met een scène', presetFast: 'Snelle webstream', presetUpload: 'Dagelijkse live', presetArchive: '4K archief', resolutionLabel: 'Resolutie', frameRateLabel: 'Beeldsnelheid', codecLabel: 'Codec', bitrateLabel: 'Videobitrate', durationLabel: 'Sessieduur', copiesLabel: 'Bewaarde kopieën', minutesLabel: 'minuten', copiesShort: 'kopieën', h264: 'H.264', h265: 'H.265', av1: 'AV1', codecNote: 'Codec efficiëntie verandert de kwaliteitslezing, niet de opslagberekening.', sceneLabel: 'Van signaal naar opslag', signalSource: 'Beeld', codecGate: 'Codering', storageReel: 'Opslag', qualityEstimate: 'Kwaliteitslezing', storageEstimate: 'Geschatte opslag', perCopy: 'Eén kopie', allCopies: 'Alle kopieën', perHour: 'Per uur', frameTime: 'Frametijd', dataPerFrame: 'Data per frame', comparisonLabel: 'Opslagvergelijking', lean: 'Zuinig', balanced: 'Gebalanceerd', crisp: 'Scherp', qualityLean: 'Zuinig en compact', qualityBalanced: 'Gebalanceerd signaal', qualityStrong: 'Veel detail', qualityExcellent: 'Veel marge', qualityAggressive: 'Sterke compressie', qualityGuidance: 'Een visuele schatting om instellingen te vergelijken.', capacityLight: 'Lichte opslagvoetafdruk', capacityMedium: 'Gemiddelde opslagvoetafdruk', capacityHeavy: 'Zware opslagvoetafdruk', capacityNote: 'De capaciteitsstatus is gebaseerd op alle hierboven getoonde kopieën.', reset: 'Waarden herstellen', localNote: 'Draait lokaal in deze browser. Er wordt niets geüpload.', assumptionTitle: 'Aannames lezen', assumptionText: 'Opslag gebruikt decimale gigabytes en de ingevoerde videobitrate. Audio, container overhead, pieken van variabele bitrate en bestandssysteemruimte worden niet toegevoegd.', warningText: 'De kwaliteitsniveaus zijn planningsrichtlijnen. Beweging, ruis, keyframes, encoder presets, platformtranscodering en netwerkruimte kunnen het echte resultaat veranderen.', readyText: 'Pas een waarde aan om het signaal opnieuw te tekenen.', calculateAria: 'Videoplan bijwerken',
10
+ },
11
+ faq: [
12
+ { question: 'Uploadt of onderzoekt deze planner mijn video?', answer: 'Nee. Hij gebruikt alleen de waarden die je in de browser invoert. Er worden geen bestanden geüpload, camera s onderzocht of streamingdiensten bevraagd.' },
13
+ { question: 'Hoe wordt opslag berekend?', answer: 'De bitrate wordt vermenigvuldigd met de duur en gedeeld door acht om bits naar bytes om te zetten. Het resultaat gebruikt decimale gigabytes en wordt met het aantal kopieën vermenigvuldigd.' },
14
+ { question: 'Wat betekent de kwaliteitslezing?', answer: 'Het is een vuistregel op basis van pixels, beelden per seconde, bitrate en een brede codec efficiëntiefactor. Het is geen belofte van beeldkwaliteit, want beweging en encoderinstellingen tellen ook mee.' },
15
+ { question: 'Waarom verandert dezelfde bitrate bij een andere resolutie of beeldsnelheid?', answer: 'Een hogere resolutie beschrijft meer pixels en een hogere beeldsnelheid verstuurt meer beelden per seconde. Meer visuele informatie moet dezelfde bitrate delen.' },
16
+ { question: 'Kan ik het resultaat als platformvereiste gebruiken?', answer: 'Gebruik het voor capaciteitsplanning en vergelijkingen. Platformvereisten veranderen, dus controleer de actuele encoderinformatie en houd uploadruimte over voor een livestream.' },
17
+ ],
18
+ howTo: [
19
+ { name: 'Kies het beeldformaat', text: 'Selecteer de resolutie en beeldsnelheid die passen bij je geplande stream of opname.' },
20
+ { name: 'Stel het coderingssignaal in', text: 'Kies de codec en voer de videobitrate in megabit per seconde in. Gebruik een preset als startpunt.' },
21
+ { name: 'Beschrijf de sessie', text: 'Voer de duur in minuten in en het aantal kopieën dat je wilt bewaren, monteren of leveren.' },
22
+ { name: 'Lees de afweging', text: 'Vergelijk zuinige, gebalanceerde en scherpe niveaus om de opslag vóór de sessie te zien veranderen.' },
23
+ ],
24
+ seo: [
25
+ { type: 'title', text: 'Videosopslag schatten voor je gaat streamen of opnemen', level: 2 },
26
+ { type: 'paragraph', html: 'Een videobitrate calculator helpt bij een realistisch opslagplan voor een opnamesessie. Voer bitrate, duur en kopieën in en vergelijk drie signaalniveaus voor hetzelfde beeldformaat.' },
27
+ { type: 'title', text: 'Wat de planner berekent', level: 3 },
28
+ { type: 'list', items: ['<strong>Opslag:</strong> bitrate maal tijd, omgerekend van bits naar decimale gigabytes en vermenigvuldigd met de kopieën.', '<strong>Frametijd:</strong> de milliseconden per frame bij de gekozen FPS en een schatting van data per frame.', '<strong>Kwaliteitslezing:</strong> een vergelijking van pixels per frame met een codec efficiëntiefactor.'] },
29
+ { type: 'title', text: 'Hoe resolutie en FPS de afweging veranderen', level: 3 },
30
+ { type: 'paragraph', html: 'Een hogere resolutie verhoogt het aantal pixels per frame en een hogere FPS verhoogt het aantal frames per seconde. Bij dezelfde bitrate krijgt elk frame minder data en wordt compressie zwaarder.' },
31
+ { type: 'tip', title: 'Houd ruimte over voor een livestream', html: 'Zie de videobitrate als de hoofdlast, niet als de volledige verbindingscapaciteit. Houd ruimte over voor audio, protocol en netwerkschommelingen en test een scène met vergelijkbare beweging.' },
32
+ { type: 'title', text: 'Gebruik platforminformatie voor de definitieve instelling', level: 3 },
33
+ { type: 'paragraph', html: 'Deze planner is platformonafhankelijk. YouTube publiceert bitratebereiken per resolutie en beeldsnelheid. Gebruik de actuele regels van je bestemming om het scenario te controleren.' },
34
+ { type: 'title', text: 'Waarom het opslagresultaat een schatting is', level: 3 },
35
+ { type: 'paragraph', html: 'Een nominale bitrate beschrijft niet elke byte van het eindbestand. Variabele bitrate, audio, containermetadata, keyframes, transcodering en systeemeenheden kunnen de uiteindelijke grootte veranderen.' },
36
+ ],
37
+ });
@@ -0,0 +1,37 @@
1
+ import { createLocalizedContent } from '../locale-content';
2
+
3
+ export const content = createLocalizedContent({
4
+ language: 'pl',
5
+ slug: 'kalkulator-bitrate-magazynowania-wideo',
6
+ title: 'Planer Bitrate i Pamięci dla Wideo',
7
+ description: 'Oszacuj miejsce na wideo, czas klatki i praktyczne poziomy bitrate dla transmisji lub nagrań.',
8
+ ui: {
9
+ presetLabel: 'Zacznij od sceny', presetFast: 'Szybki stream webowy', presetUpload: 'Codzienny live', presetArchive: 'Archiwum 4K', resolutionLabel: 'Rozdzielczość', frameRateLabel: 'Klatki na sekundę', codecLabel: 'Kodek', bitrateLabel: 'Bitrate wideo', durationLabel: 'Długość sesji', copiesLabel: 'Zachowane kopie', minutesLabel: 'min', copiesShort: 'kopie', h264: 'H.264', h265: 'H.265', av1: 'AV1', codecNote: 'Wydajność kodeka zmienia ocenę jakości, ale nie zmienia obliczenia pamięci.', sceneLabel: 'Od sygnału do pamięci', signalSource: 'Obraz', codecGate: 'Kodowanie', storageReel: 'Pamięć', qualityEstimate: 'Ocena jakości', storageEstimate: 'Szacowana pamięć', perCopy: 'Jedna kopia', allCopies: 'Wszystkie kopie', perHour: 'Na godzinę', frameTime: 'Czas klatki', dataPerFrame: 'Dane na klatkę', comparisonLabel: 'Porównanie pamięci', lean: 'Oszczędny', balanced: 'Zrównoważony', crisp: 'Ostry', qualityLean: 'Lekki i oszczędny', qualityBalanced: 'Zrównoważony sygnał', qualityStrong: 'Mocny detal', qualityExcellent: 'Duży zapas', qualityAggressive: 'Mocna kompresja', qualityGuidance: 'Wizualne przybliżenie do porównywania ustawień.', capacityLight: 'Małe zużycie pamięci', capacityMedium: 'Średnie zużycie pamięci', capacityHeavy: 'Duże zużycie pamięci', capacityNote: 'Status pojemności opiera się na łącznej liczbie kopii powyżej.', reset: 'Przywróć wartości', localNote: 'Działa lokalnie w tej przeglądarce. Nic nie jest wysyłane.', assumptionTitle: 'Przeczytaj założenia', assumptionText: 'Pamięć używa dziesiętnych gigabajtów i podanego bitrate wideo. Dźwięk, narzut kontenera, piki zmiennego bitrate i miejsce systemu plików nie są dodawane.', warningText: 'Poziomy jakości są wskazówkami do planowania. Ruch, ziarno, klatki kluczowe, preset kodera, transkodowanie platformy i zapas sieci mogą zmienić wynik.', readyText: 'Zmień wartość, aby narysować sygnał ponownie.', calculateAria: 'Aktualizuj plan wideo',
10
+ },
11
+ faq: [
12
+ { question: 'Czy planer wysyła lub analizuje mój film?', answer: 'Nie. Korzysta tylko z wartości wpisanych w przeglądarce. Nie wysyła plików, nie sprawdza kamery i nie pyta żadnej usługi streamingowej.' },
13
+ { question: 'Jak obliczana jest pamięć?', answer: 'Bitrate mnoży się przez czas i dzieli przez osiem, aby zamienić bity na bajty. Wynik używa dziesiętnych gigabajtów i jest mnożony przez liczbę kopii.' },
14
+ { question: 'Co oznacza ocena jakości?', answer: 'To praktyczna reguła oparta na pikselach, klatkach na sekundę, bitrate i ogólnym współczynniku wydajności kodeka. Nie jest gwarancją jakości obrazu, bo liczą się też ruch i ustawienia kodera.' },
15
+ { question: 'Dlaczego ten sam bitrate zmienia się przy innej rozdzielczości lub liczbie klatek?', answer: 'Większa rozdzielczość ma więcej pikseli, a wyższa liczba klatek wysyła więcej obrazów na sekundę. Więcej informacji wizualnych musi dzielić ten sam bitrate.' },
16
+ { question: 'Czy mogę użyć wyniku jako wymogu platformy?', answer: 'Użyj go do planowania pojemności i porównywania scenariuszy. Wymagania platform się zmieniają, więc sprawdź aktualne zalecenia kodera i zostaw zapas wysyłania dla transmisji na żywo.' },
17
+ ],
18
+ howTo: [
19
+ { name: 'Wybierz format obrazu', text: 'Wybierz rozdzielczość i liczbę klatek pasujące do planowanej transmisji lub nagrania.' },
20
+ { name: 'Ustaw sygnał kodowania', text: 'Wybierz kodek i wpisz bitrate wideo w megabitach na sekundę. Preset może być dobrym początkiem.' },
21
+ { name: 'Opisz sesję', text: 'Wpisz czas w minutach oraz liczbę kopii, które chcesz zachować, montować lub dostarczyć.' },
22
+ { name: 'Odczytaj kompromis', text: 'Porównaj poziomy oszczędny, zrównoważony i ostry, aby zobaczyć zmianę pamięci przed nagraniem.' },
23
+ ],
24
+ seo: [
25
+ { type: 'title', text: 'Oszacuj pamięć wideo przed transmisją lub nagraniem', level: 2 },
26
+ { type: 'paragraph', html: 'Kalkulator bitrate wideo pomaga przygotować realistyczny plan pamięci dla sesji nagraniowej. Wpisz bitrate, czas i liczbę kopii, a następnie porównaj trzy poziomy sygnału dla tego samego formatu.' },
27
+ { type: 'title', text: 'Co oblicza planer', level: 3 },
28
+ { type: 'list', items: ['<strong>Pamięć:</strong> bitrate pomnożony przez czas, przeliczony z bitów na dziesiętne gigabajty i pomnożony przez kopie.', '<strong>Czas klatki:</strong> milisekundy dostępne na klatkę przy wybranym FPS oraz szacunkowe dane na klatkę.', '<strong>Ocena jakości:</strong> porównanie pikseli na klatkę z uwzględnieniem współczynnika wydajności kodeka.'] },
29
+ { type: 'title', text: 'Jak rozdzielczość i FPS zmieniają kompromis', level: 3 },
30
+ { type: 'paragraph', html: 'Rozdzielczość zwiększa liczbę pikseli w klatce, a FPS zwiększa liczbę klatek na sekundę. Gdy bitrate pozostaje stały, każda klatka dostaje mniej danych i kompresja staje się trudniejsza.' },
31
+ { type: 'tip', title: 'Zostaw zapas dla transmisji na żywo', html: 'Traktuj bitrate wideo jako główne obciążenie, a nie całą przepustowość łącza. Zostaw miejsce na dźwięk, protokół i zmienność sieci oraz przetestuj scenę z podobnym ruchem.' },
32
+ { type: 'title', text: 'Sprawdź zalecenia platformy przed wyborem końcowym', level: 3 },
33
+ { type: 'paragraph', html: 'Ten planer jest niezależny od platformy. YouTube publikuje zakresy bitrate według rozdzielczości i liczby klatek. Użyj aktualnych reguł miejsca docelowego, aby sprawdzić swój scenariusz.' },
34
+ { type: 'title', text: 'Dlaczego wynik pamięci jest przybliżeniem', level: 3 },
35
+ { type: 'paragraph', html: 'Nominalny bitrate nie opisuje każdego bajtu gotowego pliku. Zmienny bitrate, dźwięk, metadane kontenera, klatki kluczowe, transkodowanie i jednostki systemowe mogą zmienić końcowy rozmiar.' },
36
+ ],
37
+ });