@jjlmoya/utils-audiovisual 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.
- package/package.json +1 -1
- package/src/category/i18n/de.ts +1 -1
- package/src/category/i18n/fr.ts +1 -1
- package/src/category/i18n/ru.ts +1 -1
- package/src/category/index.ts +2 -0
- package/src/entries.ts +4 -1
- package/src/index.ts +1 -0
- package/src/tests/diacritics_density.test.ts +118 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tests/script_density.test.ts +94 -0
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/chromaticLens/i18n/de.ts +6 -6
- package/src/tool/chromaticLens/i18n/fr.ts +3 -3
- package/src/tool/chromaticLens/i18n/pl.ts +1 -1
- package/src/tool/chromaticLens/i18n/ru.ts +10 -10
- package/src/tool/chromaticLens/i18n/zh.ts +2 -2
- package/src/tool/collageMaker/i18n/de.ts +6 -6
- package/src/tool/collageMaker/i18n/fr.ts +4 -4
- package/src/tool/collageMaker/i18n/pl.ts +5 -5
- package/src/tool/collageMaker/i18n/ru.ts +12 -12
- package/src/tool/collageMaker/i18n/sv.ts +3 -3
- package/src/tool/collageMaker/i18n/zh.ts +1 -1
- package/src/tool/depthOfFieldCalculator/i18n/de.ts +3 -3
- package/src/tool/depthOfFieldCalculator/i18n/en.ts +7 -7
- package/src/tool/depthOfFieldCalculator/i18n/es.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/fr.ts +6 -6
- package/src/tool/depthOfFieldCalculator/i18n/id.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/it.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/ja.ts +1 -1
- package/src/tool/depthOfFieldCalculator/i18n/ko.ts +1 -1
- package/src/tool/depthOfFieldCalculator/i18n/nl.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/pl.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/pt.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/ru.ts +6 -6
- package/src/tool/depthOfFieldCalculator/i18n/sv.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/tr.ts +1 -1
- package/src/tool/depthOfFieldCalculator/i18n/zh.ts +3 -3
- package/src/tool/exifCleaner/i18n/de.ts +8 -8
- package/src/tool/exifCleaner/i18n/fr.ts +11 -11
- package/src/tool/exifCleaner/i18n/pl.ts +6 -6
- package/src/tool/exifCleaner/i18n/ru.ts +14 -14
- package/src/tool/exifCleaner/i18n/zh.ts +3 -3
- package/src/tool/imageCompressor/i18n/de.ts +16 -16
- package/src/tool/imageCompressor/i18n/fr.ts +8 -8
- package/src/tool/imageCompressor/i18n/pl.ts +1 -1
- package/src/tool/imageCompressor/i18n/ru.ts +9 -9
- package/src/tool/imageCompressor/i18n/zh.ts +1 -1
- package/src/tool/printQualityCalculator/component.astro +118 -110
- package/src/tool/printQualityCalculator/i18n/de.ts +5 -5
- package/src/tool/printQualityCalculator/i18n/fr.ts +11 -11
- package/src/tool/printQualityCalculator/i18n/pl.ts +4 -4
- package/src/tool/printQualityCalculator/i18n/ru.ts +11 -11
- package/src/tool/printQualityCalculator/i18n/zh.ts +4 -4
- package/src/tool/printQualityCalculator/print-quality-calculator-pixels-to-cm-dpi.css +193 -40
- package/src/tool/privacyBlur/i18n/de.ts +5 -5
- package/src/tool/privacyBlur/i18n/fr.ts +9 -9
- package/src/tool/privacyBlur/i18n/ru.ts +6 -6
- package/src/tool/subtitleSync/i18n/de.ts +1 -1
- package/src/tool/subtitleSync/i18n/fr.ts +9 -9
- package/src/tool/subtitleSync/i18n/ru.ts +6 -6
- package/src/tool/subtitleSync/i18n/sv.ts +4 -4
- package/src/tool/timelapseCalculator/i18n/fr.ts +6 -6
- package/src/tool/timelapseCalculator/i18n/ru.ts +3 -3
- package/src/tool/timelapseCalculator/i18n/zh.ts +4 -4
- package/src/tool/tvDistance/i18n/fr.ts +2 -2
- package/src/tool/tvDistance/i18n/ru.ts +9 -9
- package/src/tool/tvDistance/i18n/zh.ts +4 -4
- package/src/tool/videoFrameExtractor/i18n/fr.ts +8 -8
- package/src/tool/videoFrameExtractor/i18n/ru.ts +2 -2
- package/src/tool/videoMerger/bibliography.astro +17 -0
- package/src/tool/videoMerger/bibliography.ts +16 -0
- package/src/tool/videoMerger/component.astro +400 -0
- package/src/tool/videoMerger/entry.ts +51 -0
- package/src/tool/videoMerger/i18n/de.ts +205 -0
- package/src/tool/videoMerger/i18n/en.ts +205 -0
- package/src/tool/videoMerger/i18n/es.ts +205 -0
- package/src/tool/videoMerger/i18n/fr.ts +205 -0
- package/src/tool/videoMerger/i18n/id.ts +205 -0
- package/src/tool/videoMerger/i18n/it.ts +205 -0
- package/src/tool/videoMerger/i18n/ja.ts +205 -0
- package/src/tool/videoMerger/i18n/ko.ts +205 -0
- package/src/tool/videoMerger/i18n/nl.ts +205 -0
- package/src/tool/videoMerger/i18n/pl.ts +205 -0
- package/src/tool/videoMerger/i18n/pt.ts +205 -0
- package/src/tool/videoMerger/i18n/ru.ts +205 -0
- package/src/tool/videoMerger/i18n/sv.ts +205 -0
- package/src/tool/videoMerger/i18n/tr.ts +205 -0
- package/src/tool/videoMerger/i18n/zh.ts +205 -0
- package/src/tool/videoMerger/index.ts +11 -0
- package/src/tool/videoMerger/logic.ts +263 -0
- package/src/tool/videoMerger/online-video-merger.css +440 -0
- package/src/tool/videoMerger/seo.astro +15 -0
- package/src/tools.ts +2 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { VideoMergerUI, VideoMergerLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'merge-videos-online';
|
|
6
|
+
const title = 'Merge Videos Online: Join multiple videos fast and free';
|
|
7
|
+
const description = 'Merge and concatenate multiple videos into one for free, online, and locally. No watermarks, no uploads, 100% private in your browser.';
|
|
8
|
+
|
|
9
|
+
const ui: VideoMergerUI = {
|
|
10
|
+
uploadTitle: "Upload your video files",
|
|
11
|
+
uploadFormats: "Drag and drop multiple videos or click to select them",
|
|
12
|
+
privacyNote: "Your videos are processed 100% locally. Nothing is uploaded to the internet.",
|
|
13
|
+
addMoreBtn: "Add more videos",
|
|
14
|
+
mergeBtn: "Merge videos now",
|
|
15
|
+
mergingStatus: "Merging videos...",
|
|
16
|
+
downloadBtn: "Download merged video",
|
|
17
|
+
resetBtn: "Start over",
|
|
18
|
+
emptyList: "Drag or select videos to start merging them.",
|
|
19
|
+
listTitle: "Order of videos to merge",
|
|
20
|
+
optionsTitle: "Output settings",
|
|
21
|
+
optionResolution: "Resolution",
|
|
22
|
+
optionFps: "Frames per second (FPS)",
|
|
23
|
+
optionsQualityNote: "The final resolution will be adjusted while keeping the original aspect ratio using letterbox format if the videos have different dimensions.",
|
|
24
|
+
faqTitle: "Frequently Asked Questions about Video Merging",
|
|
25
|
+
bibliographyTitle: "Bibliography & References",
|
|
26
|
+
resolutionWarning: "Warning: Some videos have different resolutions and will be automatically adapted."
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const faq: VideoMergerLocaleContent['faq'] = [
|
|
30
|
+
{
|
|
31
|
+
question: "Is it safe to upload my videos to this tool?",
|
|
32
|
+
answer: "Yes, it is completely safe. The tool works 100% locally in your browser. Your videos are never transmitted over the internet or saved on any server.",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
question: "What happens if my videos have different dimensions?",
|
|
36
|
+
answer: "Our tool automatically rescales the videos to fit the output resolution you choose. For proportions that do not match exactly, black margins (letterboxing) will be added to preserve the original aspect ratio.",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
question: "Is the audio from the videos preserved when merging?",
|
|
40
|
+
answer: "Yes. The audio tracks from each video are captured and mixed sequentially in perfect synchronization with each image segment.",
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
const howTo: VideoMergerLocaleContent['howTo'] = [
|
|
45
|
+
{
|
|
46
|
+
name: "Select or drag your videos",
|
|
47
|
+
text: "Load all the video files you want to merge directly from your computer or mobile.",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "Arrange the order",
|
|
51
|
+
text: "Order the uploaded videos using the up or down buttons in the list to decide the playback sequence.",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "Adjust options",
|
|
55
|
+
text: "Choose the output resolution and frames per second (FPS) of the merged video.",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "Merge and export",
|
|
59
|
+
text: "Press the merge button. Wait for real-time processing to complete and download the resulting file.",
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const seo: VideoMergerLocaleContent['seo'] = [
|
|
64
|
+
{
|
|
65
|
+
type: 'summary',
|
|
66
|
+
title: '100% Local Professional Video Merging',
|
|
67
|
+
items: [
|
|
68
|
+
'Real-time processing directly in your browser',
|
|
69
|
+
'Supports multiple videos of different sizes and formats (MP4, WEBM, MOV)',
|
|
70
|
+
'Selectable output resolution (720p, 1080p, 2K, 4K)',
|
|
71
|
+
'Audio tracks combined perfectly sequentially'
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{ type: 'title', text: 'Merge Videos Online Free: Unlimited Simplicity and Privacy', level: 2 },
|
|
75
|
+
{ type: 'paragraph', html: 'Wondering <strong>how to merge two videos into one</strong> without complications? You no longer need to download heavy software or paid applications. Our tool to <strong>merge videos online for free</strong> allows you to concatenate and join all the clips you need in a matter of seconds. By working 100% locally, you do not have to upload your files to any server, guaranteeing absolute privacy and allowing you to <strong>merge large videos</strong> without waiting times for uploading.' },
|
|
76
|
+
|
|
77
|
+
{ type: 'title', text: 'Join Videos Without Watermark', level: 3 },
|
|
78
|
+
{ type: 'paragraph', html: 'One of the biggest drawbacks of other applications is that they mess up your content. With us, you can <strong>join videos online without a watermark</strong>. The file you download will be exactly your creation, clean, professional, and ready to share on YouTube, Instagram, TikTok, or for personal use.' },
|
|
79
|
+
|
|
80
|
+
{ type: 'stats', items: [
|
|
81
|
+
{ value: '100%', label: 'Private and Local', icon: 'mdi:shield-check' },
|
|
82
|
+
{ value: '0MB', label: 'No Upload Data', icon: 'mdi:upload-off' },
|
|
83
|
+
{ value: '4K', label: 'Maximum Resolution', icon: 'mdi:video-high-definition' }
|
|
84
|
+
], columns: 3 },
|
|
85
|
+
|
|
86
|
+
{ type: 'title', text: 'Common Use Cases for Merging Videos', level: 3 },
|
|
87
|
+
{ type: 'comparative', items: [
|
|
88
|
+
{
|
|
89
|
+
title: 'Social Media',
|
|
90
|
+
description: 'Fast merging of stories, TikToks, or reels into a single video',
|
|
91
|
+
icon: 'mdi:instagram',
|
|
92
|
+
points: [
|
|
93
|
+
'Join small clips recorded with your mobile',
|
|
94
|
+
'Prepare sequential content for Instagram or YouTube',
|
|
95
|
+
'Merge without annoying watermarks'
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
title: 'Presentations',
|
|
100
|
+
description: 'Join introductions and demo recordings into a single file',
|
|
101
|
+
icon: 'mdi:presentation',
|
|
102
|
+
points: [
|
|
103
|
+
'Merge an animated intro with the body of the presentation',
|
|
104
|
+
'Join short software demos',
|
|
105
|
+
'Clean export in standard MP4/WEBM format'
|
|
106
|
+
],
|
|
107
|
+
highlight: true
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
title: 'Family Compilations',
|
|
111
|
+
description: 'Merge multiple videos from your vacations or celebrations',
|
|
112
|
+
icon: 'mdi:home-heart',
|
|
113
|
+
points: [
|
|
114
|
+
'Create a single video with all the moments of the party',
|
|
115
|
+
'Group travel memories chronologically',
|
|
116
|
+
'Easy to share as it is in a single file'
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
title: 'Educational Videos',
|
|
121
|
+
description: 'Concatenate short training chapters or lessons',
|
|
122
|
+
icon: 'mdi:school',
|
|
123
|
+
points: [
|
|
124
|
+
'Group small independent tutorials',
|
|
125
|
+
'Add a closing clip to your lessons',
|
|
126
|
+
'Structure your course professionally'
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
], columns: 2 },
|
|
130
|
+
|
|
131
|
+
{ type: 'title', text: 'The Best App to Merge Videos from the Browser', level: 2 },
|
|
132
|
+
{ type: 'paragraph', html: 'This is not just another webpage; it is a true <strong>app to merge videos</strong> that operates directly from your browser thanks to modern HTML5 video APIs. You can <strong>merge MP4 videos</strong>, WEBM, and more, mixing resolutions (our system applies automatic letterboxing if dimensions vary) and choosing the frames per second (FPS) of your final export.' },
|
|
133
|
+
|
|
134
|
+
{ type: 'title', text: 'Comparison of Merging Approaches', level: 3 },
|
|
135
|
+
{ type: 'table', headers: ['Features', 'Our Local Tool', 'Classic Online Converters', 'Professional Editors'], rows: [
|
|
136
|
+
['Privacy', 'Total (Processed on your device)', 'Low (Requires uploading files to a server)', 'Total (Installed on your device)'],
|
|
137
|
+
['Network Consumption', 'Zero (No gigabyte uploads)', 'Very high (File upload and download)', 'Zero'],
|
|
138
|
+
['Watermark', 'NO (100% clean)', 'Yes (In free versions)', 'NO (If you buy the license)'],
|
|
139
|
+
['Price', '100% Free', 'Free with limits or subscription', 'Usually expensive'],
|
|
140
|
+
['Learning Curve', 'Very low (Drag, order, and merge)', 'Low', 'Very high (Requires technical training)']
|
|
141
|
+
] },
|
|
142
|
+
|
|
143
|
+
{ type: 'proscons', items: [
|
|
144
|
+
{
|
|
145
|
+
pro: 'Guaranteed privacy: Maximum security as no file leaves your device',
|
|
146
|
+
con: 'Merging speed of large videos depends on your local computer\'s RAM and processor'
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
pro: 'Professional results: 100% free, no registration, and no watermarks',
|
|
150
|
+
con: 'When joining videos with disparate dimensions (vertical vs horizontal), black margins (letterboxing) will be applied'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
pro: 'Versatility: Fast export with efficient encoding optimized for web and social media use',
|
|
154
|
+
con: 'Does not allow adding complex transitions (3D fades) or cinematic visual effects between clips'
|
|
155
|
+
}
|
|
156
|
+
], title: 'Advantages and Considerations' },
|
|
157
|
+
|
|
158
|
+
{ type: 'title', text: 'Start Merging Your Videos Today', level: 2 },
|
|
159
|
+
{ type: 'paragraph', html: 'There are no longer excuses for having hundreds of disorganized video fragments. Upload your files, place them in the desired order, and press the button. Discover the fastest, safest, and most private way to <strong>merge videos online</strong>.' }
|
|
160
|
+
];
|
|
161
|
+
|
|
162
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
163
|
+
'@context': 'https://schema.org',
|
|
164
|
+
'@type': 'FAQPage',
|
|
165
|
+
mainEntity: faq.map((item) => ({
|
|
166
|
+
'@type': 'Question',
|
|
167
|
+
name: item.question,
|
|
168
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
169
|
+
})),
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
const howToSchema: WithContext<HowTo> = {
|
|
173
|
+
'@context': 'https://schema.org',
|
|
174
|
+
'@type': 'HowTo',
|
|
175
|
+
name: title,
|
|
176
|
+
description,
|
|
177
|
+
step: howTo.map((step) => ({
|
|
178
|
+
'@type': 'HowToStep',
|
|
179
|
+
name: step.name,
|
|
180
|
+
text: step.text,
|
|
181
|
+
})),
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
185
|
+
'@context': 'https://schema.org',
|
|
186
|
+
'@type': 'SoftwareApplication',
|
|
187
|
+
name: title,
|
|
188
|
+
description,
|
|
189
|
+
applicationCategory: 'UtilitiesApplication',
|
|
190
|
+
operatingSystem: 'Web',
|
|
191
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
192
|
+
inLanguage: 'en',
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
export const content: VideoMergerLocaleContent = {
|
|
196
|
+
slug,
|
|
197
|
+
title,
|
|
198
|
+
description,
|
|
199
|
+
ui,
|
|
200
|
+
seo,
|
|
201
|
+
faq,
|
|
202
|
+
bibliography,
|
|
203
|
+
howTo,
|
|
204
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
205
|
+
};
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { VideoMergerUI, VideoMergerLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'unir-videos-online';
|
|
6
|
+
const title = 'Unir Vídeos Online: Une múltiples vídeos gratis y rápido';
|
|
7
|
+
const description = 'Une y concatena varios vídeos en uno solo de forma gratuita, online y local. Sin marcas de agua, sin subidas, 100% privado en tu navegador.';
|
|
8
|
+
|
|
9
|
+
const ui: VideoMergerUI = {
|
|
10
|
+
uploadTitle: "Sube tus archivos de vídeo",
|
|
11
|
+
uploadFormats: "Arrastra varios vídeos o haz clic para seleccionarlos",
|
|
12
|
+
privacyNote: "Tus vídeos se procesan 100% de forma local. Nada se sube a internet.",
|
|
13
|
+
addMoreBtn: "Añadir más vídeos",
|
|
14
|
+
mergeBtn: "Unir vídeos ahora",
|
|
15
|
+
mergingStatus: "Uniendo vídeos...",
|
|
16
|
+
downloadBtn: "Descargar vídeo unificado",
|
|
17
|
+
resetBtn: "Comenzar de nuevo",
|
|
18
|
+
emptyList: "Arrastra o selecciona vídeos para empezar a unirlos.",
|
|
19
|
+
listTitle: "Orden de los vídeos a unir",
|
|
20
|
+
optionsTitle: "Configuración de salida",
|
|
21
|
+
optionResolution: "Resolución",
|
|
22
|
+
optionFps: "Fotogramas por segundo (FPS)",
|
|
23
|
+
optionsQualityNote: "La resolución final se ajustará manteniendo la proporción original en formato letterbox si los vídeos tienen tamaños distintos.",
|
|
24
|
+
faqTitle: "Preguntas Frecuentes sobre la Unión de Vídeos",
|
|
25
|
+
bibliographyTitle: "Bibliografía y Referencias",
|
|
26
|
+
resolutionWarning: "Atención: Algunos vídeos tienen distinta resolución y serán adaptados automáticamente."
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const faq: VideoMergerLocaleContent['faq'] = [
|
|
30
|
+
{
|
|
31
|
+
question: "¿Es seguro subir mis vídeos a esta herramienta?",
|
|
32
|
+
answer: "Sí, es completamente seguro. La herramienta funciona de forma 100% local en tu navegador. Tus vídeos nunca se transmiten por internet ni se guardan en ningún servidor.",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
question: "¿Qué pasa si mis vídeos tienen distintas dimensiones?",
|
|
36
|
+
answer: "Nuestra herramienta se encarga de reescalar automáticamente los vídeos para que se adapten a la resolución de salida que elijas. Para las proporciones que no coincidan exactamente, se añadirán márgenes negros (letterboxing) preservando la relación de aspecto original.",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
question: "¿Se conserva el audio de los vídeos al unirlos?",
|
|
40
|
+
answer: "Sí. Las pistas de audio de cada vídeo se capturan y se mezclan de forma secuencial en perfecta sincronía con cada tramo de la imagen.",
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
const howTo: VideoMergerLocaleContent['howTo'] = [
|
|
45
|
+
{
|
|
46
|
+
name: "Selecciona o arrastra tus vídeos",
|
|
47
|
+
text: "Carga todos los archivos de vídeo que quieres fusionar directamente desde tu ordenador o móvil.",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "Organiza el orden",
|
|
51
|
+
text: "Ordena los vídeos subidos usando los botones de subir o bajar en la lista para decidir la secuencia de reproducción.",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "Ajusta las opciones",
|
|
55
|
+
text: "Elige la resolución de salida y los fotogramas por segundo (FPS) del vídeo unificado.",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "Une y exporta",
|
|
59
|
+
text: "Pulsa el botón de unir. Espera a que se complete el procesamiento en tiempo real y descarga el archivo resultante.",
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const seo: VideoMergerLocaleContent['seo'] = [
|
|
64
|
+
{
|
|
65
|
+
type: 'summary',
|
|
66
|
+
title: 'Unión Profesional de Vídeos 100% Local',
|
|
67
|
+
items: [
|
|
68
|
+
'Procesamiento en tiempo real directamente en tu navegador',
|
|
69
|
+
'Soporta múltiples vídeos de distintos tamaños y formatos (MP4, WEBM, MOV)',
|
|
70
|
+
'Resolución de salida seleccionable (720p, 1080p, 2K, 4K)',
|
|
71
|
+
'Pistas de audio combinadas de forma perfectamente secuencial'
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{ type: 'title', text: 'Unir Vídeos Online Gratis: Sencillez y Privacidad sin Límites', level: 2 },
|
|
75
|
+
{ type: 'paragraph', html: '¿Te preguntas <strong>cómo unir dos vídeos en uno solo</strong> sin complicaciones? Ya no necesitas descargar programas pesados ni aplicaciones de pago. Nuestra herramienta para <strong>unir vídeos online gratis</strong> te permite concatenar y fusionar todos los clips que necesites en cuestión de segundos. Al funcionar de forma 100% local, no tienes que subir tus archivos a ningún servidor, garantizando privacidad absoluta y permitiéndote <strong>unir vídeos pesados</strong> sin tiempos de espera en la subida.' },
|
|
76
|
+
|
|
77
|
+
{ type: 'title', text: 'Juntar Vídeos sin Marca de Agua', level: 3 },
|
|
78
|
+
{ type: 'paragraph', html: 'Uno de los mayores inconvenientes de otras aplicaciones es que ensucian tu contenido. Con nosotros, puedes <strong>juntar vídeos online sin marca de agua</strong>. El archivo que descargues será exactamente tu creación, limpia, profesional y lista para compartir en YouTube, Instagram, TikTok o para uso personal.' },
|
|
79
|
+
|
|
80
|
+
{ type: 'stats', items: [
|
|
81
|
+
{ value: '100%', label: 'Privado y Local', icon: 'mdi:shield-check' },
|
|
82
|
+
{ value: '0MB', label: 'Sin Datos de Subida', icon: 'mdi:upload-off' },
|
|
83
|
+
{ value: '4K', label: 'Resolución Máxima', icon: 'mdi:video-high-definition' }
|
|
84
|
+
], columns: 3 },
|
|
85
|
+
|
|
86
|
+
{ type: 'title', text: 'Casos de Uso Comunes para Fusionar Vídeos', level: 3 },
|
|
87
|
+
{ type: 'comparative', items: [
|
|
88
|
+
{
|
|
89
|
+
title: 'Redes Sociales',
|
|
90
|
+
description: 'Fusión rápida de stories, tiktoks o reels en un único vídeo',
|
|
91
|
+
icon: 'mdi:instagram',
|
|
92
|
+
points: [
|
|
93
|
+
'Une pequeños clips grabados con el móvil',
|
|
94
|
+
'Prepara contenido secuencial para Instagram o YouTube',
|
|
95
|
+
'Fusión sin marcas de agua molestas'
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
title: 'Presentaciones',
|
|
100
|
+
description: 'Une introducciones y grabaciones de demostración en un solo archivo',
|
|
101
|
+
icon: 'mdi:presentation',
|
|
102
|
+
points: [
|
|
103
|
+
'Fusiona intro animada con el cuerpo de la presentación',
|
|
104
|
+
'Une demos cortas de software',
|
|
105
|
+
'Exportación limpia en formato estándar MP4/WEBM'
|
|
106
|
+
],
|
|
107
|
+
highlight: true
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
title: 'Compilaciones Familiares',
|
|
111
|
+
description: 'Funde múltiples vídeos de tus vacaciones o celebraciones',
|
|
112
|
+
icon: 'mdi:home-heart',
|
|
113
|
+
points: [
|
|
114
|
+
'Crea un único vídeo con todos los momentos de la fiesta',
|
|
115
|
+
'Agrupa memorias de viajes de manera cronológica',
|
|
116
|
+
'Fácil de compartir al estar en un solo archivo'
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
title: 'Vídeos Educativos',
|
|
121
|
+
description: 'Concatena capítulos o lecciones cortas de formación',
|
|
122
|
+
icon: 'mdi:school',
|
|
123
|
+
points: [
|
|
124
|
+
'Agrupa pequeños tutoriales independientes',
|
|
125
|
+
'Añade un clip de cierre a tus lecciones',
|
|
126
|
+
'Estructura tu curso de forma profesional'
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
], columns: 2 },
|
|
130
|
+
|
|
131
|
+
{ type: 'title', text: 'La Mejor App para Unir Vídeos desde el Navegador', level: 2 },
|
|
132
|
+
{ type: 'paragraph', html: 'Esta no es solo otra página web; es una auténtica <strong>app para unir vídeos</strong> que opera directamente desde tu navegador gracias a la tecnología moderna de APIs de vídeo de HTML5. Puedes <strong>fusionar vídeos MP4</strong>, WEBM y más, mezclando resoluciones (nuestro sistema aplica letterboxing automático si las dimensiones varían) y eligiendo los fotogramas por segundo (FPS) de tu exportación final.' },
|
|
133
|
+
|
|
134
|
+
{ type: 'title', text: 'Comparativa de Enfoques de Unión', level: 3 },
|
|
135
|
+
{ type: 'table', headers: ['Características', 'Nuestra Herramienta Local', 'Convertidores Online Clásicos', 'Editores Profesionales'], rows: [
|
|
136
|
+
['Privacidad', 'Total (Procesado en tu equipo)', 'Baja (Requiere subir archivos al servidor)', 'Total (Instalado en tu equipo)'],
|
|
137
|
+
['Consumo de Red', 'Cero (Sin subidas de gigabytes)', 'Muy alto (Subida y bajada del archivo)', 'Cero'],
|
|
138
|
+
['Marca de Agua', 'NO (100% limpio)', 'Sí (En versiones gratuitas)', 'NO (Si compras la licencia)'],
|
|
139
|
+
['Precio', '100% Gratis', 'Gratis con límites o suscripción', 'Suelen ser costosos'],
|
|
140
|
+
['Curva de Aprendizaje', 'Muy baja (Arrastrar, ordenar y unir)', 'Baja', 'Muy alta (Requiere formación técnica)']
|
|
141
|
+
] },
|
|
142
|
+
|
|
143
|
+
{ type: 'proscons', items: [
|
|
144
|
+
{
|
|
145
|
+
pro: 'Privacidad garantizada: Seguridad máxima al no salir ningún archivo de tu dispositivo',
|
|
146
|
+
con: 'La velocidad de unión de vídeos pesados depende de la memoria RAM y procesador de tu equipo local'
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
pro: 'Resultados profesionales: 100% gratuito, sin registros y sin marcas de agua',
|
|
150
|
+
con: 'Al juntar vídeos con dimensiones dispares (vertical vs horizontal), se aplicarán márgenes negros (letterboxing)'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
pro: 'Versatilidad: Exportación rápida con codificación eficiente optimizada para uso en web y redes sociales',
|
|
154
|
+
con: 'No permite añadir transiciones complejas (fundidos en 3D) ni efectos visuales cinematográficos entre clips'
|
|
155
|
+
}
|
|
156
|
+
], title: 'Ventajas y Consideraciones' },
|
|
157
|
+
|
|
158
|
+
{ type: 'title', text: 'Empieza a Unir tus Vídeos Hoy Mismo', level: 2 },
|
|
159
|
+
{ type: 'paragraph', html: 'Ya no hay excusas para tener cientos de fragmentos de vídeo desorganizados. Sube tus archivos, colócalos en el orden deseado y presiona el botón. Descubre la forma más rápida, segura y privada de <strong>unir vídeos online</strong>.' }
|
|
160
|
+
];
|
|
161
|
+
|
|
162
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
163
|
+
'@context': 'https://schema.org',
|
|
164
|
+
'@type': 'FAQPage',
|
|
165
|
+
mainEntity: faq.map((item) => ({
|
|
166
|
+
'@type': 'Question',
|
|
167
|
+
name: item.question,
|
|
168
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
169
|
+
})),
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
const howToSchema: WithContext<HowTo> = {
|
|
173
|
+
'@context': 'https://schema.org',
|
|
174
|
+
'@type': 'HowTo',
|
|
175
|
+
name: title,
|
|
176
|
+
description,
|
|
177
|
+
step: howTo.map((step) => ({
|
|
178
|
+
'@type': 'HowToStep',
|
|
179
|
+
name: step.name,
|
|
180
|
+
text: step.text,
|
|
181
|
+
})),
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
185
|
+
'@context': 'https://schema.org',
|
|
186
|
+
'@type': 'SoftwareApplication',
|
|
187
|
+
name: title,
|
|
188
|
+
description,
|
|
189
|
+
applicationCategory: 'UtilitiesApplication',
|
|
190
|
+
operatingSystem: 'Web',
|
|
191
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
192
|
+
inLanguage: 'es',
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
export const content: VideoMergerLocaleContent = {
|
|
196
|
+
slug,
|
|
197
|
+
title,
|
|
198
|
+
description,
|
|
199
|
+
ui,
|
|
200
|
+
seo,
|
|
201
|
+
faq,
|
|
202
|
+
bibliography,
|
|
203
|
+
howTo,
|
|
204
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
205
|
+
};
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { VideoMergerUI, VideoMergerLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'fusionner-videos-en-ligne';
|
|
6
|
+
const title = 'Fusionner des vidéos en ligne: Joignez plusieurs vidéos gratuitement et rapidement';
|
|
7
|
+
const description = 'Fusionnez et concaténez plusieurs vidéos en une seule, gratuitement, en ligne et localement. Sans filigrane, sans téléchargement, 100% privé dans votre navigateur.';
|
|
8
|
+
|
|
9
|
+
const ui: VideoMergerUI = {
|
|
10
|
+
uploadTitle: "Téléchargez vos fichiers vidéo",
|
|
11
|
+
uploadFormats: "Glissez-déposez plusieurs vidéos ou cliquez pour les sélectionner",
|
|
12
|
+
privacyNote: "Vos vidéos sont traitées 100% localement. Rien n'est téléchargé sur Internet.",
|
|
13
|
+
addMoreBtn: "Ajouter d'autres vidéos",
|
|
14
|
+
mergeBtn: "Fusionner les vidéos maintenant",
|
|
15
|
+
mergingStatus: "Fusion des vidéos en cours...",
|
|
16
|
+
downloadBtn: "Télécharger la vidéo fusionnée",
|
|
17
|
+
resetBtn: "Recommencer",
|
|
18
|
+
emptyList: "Glissez ou sélectionnez des vidéos pour commencer à les fusionner.",
|
|
19
|
+
listTitle: "Ordre des vidéos à fusionner",
|
|
20
|
+
optionsTitle: "Paramètres de sortie",
|
|
21
|
+
optionResolution: "Résolution",
|
|
22
|
+
optionFps: "Images par seconde (FPS)",
|
|
23
|
+
optionsQualityNote: "La résolution finale sera ajustée en conservant le format d'origine avec des bandes noires (letterbox) si les vidéos ont des dimensions différentes.",
|
|
24
|
+
faqTitle: "Foire aux questions sur la fusion de vidéos",
|
|
25
|
+
bibliographyTitle: "Bibliographie & Références",
|
|
26
|
+
resolutionWarning: "Attention: Certaines vidéos ont des résolutions différentes et seront automatiquement adaptées."
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const faq: VideoMergerLocaleContent['faq'] = [
|
|
30
|
+
{
|
|
31
|
+
question: "Est-il sûr de télécharger mes vidéos sur cet outil ?",
|
|
32
|
+
answer: "Oui, c'est totalement sûr. L'outil fonctionne 100% localement dans votre navigateur. Vos vidéos ne sont jamais transmises sur Internet ni enregistrées sur un serveur.",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
question: "Que se passe-t-il si mes vidéos ont des dimensions différentes ?",
|
|
36
|
+
answer: "Notre outil met automatiquement à l'échelle les vidéos pour les adapter à la résolution de sortie choisie. Pour les proportions qui ne correspondent pas exactement, des marges noires (letterboxing) seront ajoutées pour préserver le format d'origine.",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
question: "L'audio des vidéos est-il conservé lors de la fusion ?",
|
|
40
|
+
answer: "Oui. Les pistes audio de chaque vidéo sont capturées et mixées de manière séquentielle, en parfaite synchronisation avec chaque segment d'image.",
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
const howTo: VideoMergerLocaleContent['howTo'] = [
|
|
45
|
+
{
|
|
46
|
+
name: "Sélectionnez ou glissez vos vidéos",
|
|
47
|
+
text: "Chargez tous les fichiers vidéo que vous souhaitez fusionner directement depuis votre ordinateur ou votre mobile.",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "Organisez l'ordre",
|
|
51
|
+
text: "Ordonnez les vidéos téléchargées à l'aide des boutons haut et bas de la liste pour décider de la séquence de lecture.",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "Ajustez les options",
|
|
55
|
+
text: "Choisissez la résolution de sortie et les images par seconde (FPS) de la vidéo fusionnée.",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "Fusionner et exporter",
|
|
59
|
+
text: "Appuyez sur le bouton de fusion. Attendez que le traitement en temps réel se termine et téléchargez le fichier résultant.",
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const seo: VideoMergerLocaleContent['seo'] = [
|
|
64
|
+
{
|
|
65
|
+
type: 'summary',
|
|
66
|
+
title: 'Fusion professionnelle de vidéos 100% locale',
|
|
67
|
+
items: [
|
|
68
|
+
'Traitement en temps réel directement dans votre navigateur',
|
|
69
|
+
'Prend en charge plusieurs vidéos de tailles et de formats différents (MP4, WEBM, MOV)',
|
|
70
|
+
'Résolution de sortie sélectionnable (720p, 1080p, 2K, 4K)',
|
|
71
|
+
'Pistes audio combinées de manière parfaitement séquentielle'
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{ type: 'title', text: 'Fusionner des vidéos en ligne gratuitement: Simplicité et confidentialité sans limites', level: 2 },
|
|
75
|
+
{ type: 'paragraph', html: 'Vous vous demandez <strong>comment fusionner deux vidéos en une seule</strong> sans complications ? Vous n\'avez plus besoin de télécharger des logiciels lourds ou des applications payantes. Notre outil pour <strong>fusionner des vidéos en ligne gratuitement</strong> vous permet de concaténer et de joindre tous les clips dont vous avez besoin en quelques secondes. En fonctionnant 100% localement, vous n\'avez pas besoin de télécharger vos fichiers sur un serveur, ce qui garantit une confidentialité absolue et vous permet de <strong>fusionner des vidéos lourdes</strong> sans temps d\'attente de téléchargement.' },
|
|
76
|
+
|
|
77
|
+
{ type: 'title', text: 'Joindre des vidéos sans filigrane', level: 3 },
|
|
78
|
+
{ type: 'paragraph', html: 'L\'un des plus grands inconvénients des autres applications est qu\'elles gâchent votre contenu. Avec nous, vous pouvez <strong>joindre des vidéos en ligne sans filigrane</strong>. Le fichier que vous téléchargez sera exactement votre création, propre, professionnelle et prête à être partagée sur YouTube, Instagram, TikTok ou pour un usage personnel.' },
|
|
79
|
+
|
|
80
|
+
{ type: 'stats', items: [
|
|
81
|
+
{ value: '100%', label: 'Privé et Local', icon: 'mdi:shield-check' },
|
|
82
|
+
{ value: '0MB', label: 'Aucune donnée de téléchargement', icon: 'mdi:upload-off' },
|
|
83
|
+
{ value: '4K', label: 'Résolution maximale', icon: 'mdi:video-high-definition' }
|
|
84
|
+
], columns: 3 },
|
|
85
|
+
|
|
86
|
+
{ type: 'title', text: 'Cas d\'utilisation courants pour la fusion de vidéos', level: 3 },
|
|
87
|
+
{ type: 'comparative', items: [
|
|
88
|
+
{
|
|
89
|
+
title: 'Réseaux Sociaux',
|
|
90
|
+
description: 'Fusion rapide de stories, TikToks ou reels en une seule vidéo',
|
|
91
|
+
icon: 'mdi:instagram',
|
|
92
|
+
points: [
|
|
93
|
+
'Joindre de petits clips enregistrés avec le mobile',
|
|
94
|
+
'Préparer du contenu séquentiel pour Instagram ou YouTube',
|
|
95
|
+
'Fusion sans filigranes gênants'
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
title: 'Présentations',
|
|
100
|
+
description: 'Joindre des introductions et des enregistrements de démonstration',
|
|
101
|
+
icon: 'mdi:presentation',
|
|
102
|
+
points: [
|
|
103
|
+
'Fusionner une intro animée avec le corps de la présentation',
|
|
104
|
+
'Joindre de courtes démos de logiciels',
|
|
105
|
+
'Exportation propre au format standard MP4/WEBM'
|
|
106
|
+
],
|
|
107
|
+
highlight: true
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
title: 'Compilations familiales',
|
|
111
|
+
description: 'Fusionner plusieurs vidéos de vacances ou de célébrations',
|
|
112
|
+
icon: 'mdi:home-heart',
|
|
113
|
+
points: [
|
|
114
|
+
'Créer une seule vidéo avec tous les moments de la fête',
|
|
115
|
+
'Regrouper les souvenirs de voyage chronologiquement',
|
|
116
|
+
'Facile à partager en un seul fichier'
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
title: 'Vidéos éducatives',
|
|
121
|
+
description: 'Concaténer de courts chapitres ou leçons',
|
|
122
|
+
icon: 'mdi:school',
|
|
123
|
+
points: [
|
|
124
|
+
'Regrouper de petits tutoriels indépendants',
|
|
125
|
+
'Ajouter un clip de clôture à vos leçons',
|
|
126
|
+
'Structurer votre cours de manière professionnelle'
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
], columns: 2 },
|
|
130
|
+
|
|
131
|
+
{ type: 'title', text: 'La meilleure application pour fusionner des vidéos depuis le navigateur', level: 2 },
|
|
132
|
+
{ type: 'paragraph', html: 'Ce n\'est pas juste une autre page web ; c\'est une véritable <strong>application pour fusionner des vidéos</strong> qui fonctionne directement depuis votre navigateur grâce aux API vidéo modernes HTML5. Vous pouvez <strong>fusionner des vidéos MP4</strong>, WEBM et plus encore, en mélangeant les résolutions (notre système applique un letterboxing automatique si les dimensions varient) et en choisissant les images par seconde (FPS) de votre exportation finale.' },
|
|
133
|
+
|
|
134
|
+
{ type: 'title', text: 'Comparaison des approches de fusion', level: 3 },
|
|
135
|
+
{ type: 'table', headers: ['Caractéristiques', 'Notre outil local', 'Convertisseurs en ligne classiques', 'Éditeurs professionnels'], rows: [
|
|
136
|
+
['Confidentialité', 'Totale (Traitement sur votre appareil)', 'Faible (Nécessite le téléchargement de fichiers)', 'Totale (Installé sur votre appareil)'],
|
|
137
|
+
['Consommation réseau', 'Zéro (Pas de téléchargement de gigaoctets)', 'Très élevée (Téléchargement de fichiers)', 'Zéro'],
|
|
138
|
+
['Filigrane', 'NON (100% propre)', 'Oui (Dans les versions gratuites)', 'NON (Si vous achetez la licence)'],
|
|
139
|
+
['Prix', '100% Gratuit', 'Gratuit avec limites ou abonnement', 'Généralement coûteux'],
|
|
140
|
+
['Courbe d\'apprentissage', 'Très faible (Glisser, ordonner et fusionner)', 'Faible', 'Très élevée (Nécessite une formation technique)']
|
|
141
|
+
] },
|
|
142
|
+
|
|
143
|
+
{ type: 'proscons', items: [
|
|
144
|
+
{
|
|
145
|
+
pro: 'Confidentialité garantie: Sécurité maximale car aucun fichier ne quitte votre appareil',
|
|
146
|
+
con: 'La vitesse de fusion de vidéos lourdes dépend de la RAM et du processeur de votre ordinateur local'
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
pro: 'Résultats professionnels: 100% gratuit, sans inscription et sans filigrane',
|
|
150
|
+
con: 'Lors de la fusion de vidéos aux dimensions disparates (vertical vs horizontal), des marges noires seront appliquées'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
pro: 'Polyvalence: Exportation rapide avec encodage efficace optimisé pour le web et les réseaux sociaux',
|
|
154
|
+
con: 'Ne permet pas d\'ajouter des transitions complexes (fondus 3D) ou des effets visuels cinématographiques'
|
|
155
|
+
}
|
|
156
|
+
], title: 'Avantages et considérations' },
|
|
157
|
+
|
|
158
|
+
{ type: 'title', text: 'Commencez à fusionner vos vidéos dès aujourd\'hui', level: 2 },
|
|
159
|
+
{ type: 'paragraph', html: 'Il n\'y a plus d\'excuses pour avoir des centaines de fragments vidéo désorganisés. Téléchargez vos fichiers, placez-les dans l\'ordre souhaité et appuyez sur le bouton. Découvrez le moyen le plus rapide, le plus sûr et le plus privé de <strong>fusionner des vidéos en ligne</strong>.' }
|
|
160
|
+
];
|
|
161
|
+
|
|
162
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
163
|
+
'@context': 'https://schema.org',
|
|
164
|
+
'@type': 'FAQPage',
|
|
165
|
+
mainEntity: faq.map((item) => ({
|
|
166
|
+
'@type': 'Question',
|
|
167
|
+
name: item.question,
|
|
168
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
169
|
+
})),
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
const howToSchema: WithContext<HowTo> = {
|
|
173
|
+
'@context': 'https://schema.org',
|
|
174
|
+
'@type': 'HowTo',
|
|
175
|
+
name: title,
|
|
176
|
+
description,
|
|
177
|
+
step: howTo.map((step) => ({
|
|
178
|
+
'@type': 'HowToStep',
|
|
179
|
+
name: step.name,
|
|
180
|
+
text: step.text,
|
|
181
|
+
})),
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
185
|
+
'@context': 'https://schema.org',
|
|
186
|
+
'@type': 'SoftwareApplication',
|
|
187
|
+
name: title,
|
|
188
|
+
description,
|
|
189
|
+
applicationCategory: 'UtilitiesApplication',
|
|
190
|
+
operatingSystem: 'Web',
|
|
191
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
192
|
+
inLanguage: 'fr',
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
export const content: VideoMergerLocaleContent = {
|
|
196
|
+
slug,
|
|
197
|
+
title,
|
|
198
|
+
description,
|
|
199
|
+
ui,
|
|
200
|
+
seo,
|
|
201
|
+
faq,
|
|
202
|
+
bibliography,
|
|
203
|
+
howTo,
|
|
204
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
205
|
+
};
|