@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.
Files changed (95) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/fr.ts +1 -1
  4. package/src/category/i18n/ru.ts +1 -1
  5. package/src/category/index.ts +2 -0
  6. package/src/entries.ts +4 -1
  7. package/src/index.ts +1 -0
  8. package/src/tests/diacritics_density.test.ts +118 -0
  9. package/src/tests/inverted_punctuation.test.ts +84 -0
  10. package/src/tests/locale_completeness.test.ts +2 -2
  11. package/src/tests/no_en_dash.test.ts +70 -0
  12. package/src/tests/script_density.test.ts +94 -0
  13. package/src/tests/tool_validation.test.ts +2 -2
  14. package/src/tool/chromaticLens/i18n/de.ts +6 -6
  15. package/src/tool/chromaticLens/i18n/fr.ts +3 -3
  16. package/src/tool/chromaticLens/i18n/pl.ts +1 -1
  17. package/src/tool/chromaticLens/i18n/ru.ts +10 -10
  18. package/src/tool/chromaticLens/i18n/zh.ts +2 -2
  19. package/src/tool/collageMaker/i18n/de.ts +6 -6
  20. package/src/tool/collageMaker/i18n/fr.ts +4 -4
  21. package/src/tool/collageMaker/i18n/pl.ts +5 -5
  22. package/src/tool/collageMaker/i18n/ru.ts +12 -12
  23. package/src/tool/collageMaker/i18n/sv.ts +3 -3
  24. package/src/tool/collageMaker/i18n/zh.ts +1 -1
  25. package/src/tool/depthOfFieldCalculator/i18n/de.ts +3 -3
  26. package/src/tool/depthOfFieldCalculator/i18n/en.ts +7 -7
  27. package/src/tool/depthOfFieldCalculator/i18n/es.ts +2 -2
  28. package/src/tool/depthOfFieldCalculator/i18n/fr.ts +6 -6
  29. package/src/tool/depthOfFieldCalculator/i18n/id.ts +2 -2
  30. package/src/tool/depthOfFieldCalculator/i18n/it.ts +2 -2
  31. package/src/tool/depthOfFieldCalculator/i18n/ja.ts +1 -1
  32. package/src/tool/depthOfFieldCalculator/i18n/ko.ts +1 -1
  33. package/src/tool/depthOfFieldCalculator/i18n/nl.ts +2 -2
  34. package/src/tool/depthOfFieldCalculator/i18n/pl.ts +2 -2
  35. package/src/tool/depthOfFieldCalculator/i18n/pt.ts +2 -2
  36. package/src/tool/depthOfFieldCalculator/i18n/ru.ts +6 -6
  37. package/src/tool/depthOfFieldCalculator/i18n/sv.ts +2 -2
  38. package/src/tool/depthOfFieldCalculator/i18n/tr.ts +1 -1
  39. package/src/tool/depthOfFieldCalculator/i18n/zh.ts +3 -3
  40. package/src/tool/exifCleaner/i18n/de.ts +8 -8
  41. package/src/tool/exifCleaner/i18n/fr.ts +11 -11
  42. package/src/tool/exifCleaner/i18n/pl.ts +6 -6
  43. package/src/tool/exifCleaner/i18n/ru.ts +14 -14
  44. package/src/tool/exifCleaner/i18n/zh.ts +3 -3
  45. package/src/tool/imageCompressor/i18n/de.ts +16 -16
  46. package/src/tool/imageCompressor/i18n/fr.ts +8 -8
  47. package/src/tool/imageCompressor/i18n/pl.ts +1 -1
  48. package/src/tool/imageCompressor/i18n/ru.ts +9 -9
  49. package/src/tool/imageCompressor/i18n/zh.ts +1 -1
  50. package/src/tool/printQualityCalculator/component.astro +118 -110
  51. package/src/tool/printQualityCalculator/i18n/de.ts +5 -5
  52. package/src/tool/printQualityCalculator/i18n/fr.ts +11 -11
  53. package/src/tool/printQualityCalculator/i18n/pl.ts +4 -4
  54. package/src/tool/printQualityCalculator/i18n/ru.ts +11 -11
  55. package/src/tool/printQualityCalculator/i18n/zh.ts +4 -4
  56. package/src/tool/printQualityCalculator/print-quality-calculator-pixels-to-cm-dpi.css +193 -40
  57. package/src/tool/privacyBlur/i18n/de.ts +5 -5
  58. package/src/tool/privacyBlur/i18n/fr.ts +9 -9
  59. package/src/tool/privacyBlur/i18n/ru.ts +6 -6
  60. package/src/tool/subtitleSync/i18n/de.ts +1 -1
  61. package/src/tool/subtitleSync/i18n/fr.ts +9 -9
  62. package/src/tool/subtitleSync/i18n/ru.ts +6 -6
  63. package/src/tool/subtitleSync/i18n/sv.ts +4 -4
  64. package/src/tool/timelapseCalculator/i18n/fr.ts +6 -6
  65. package/src/tool/timelapseCalculator/i18n/ru.ts +3 -3
  66. package/src/tool/timelapseCalculator/i18n/zh.ts +4 -4
  67. package/src/tool/tvDistance/i18n/fr.ts +2 -2
  68. package/src/tool/tvDistance/i18n/ru.ts +9 -9
  69. package/src/tool/tvDistance/i18n/zh.ts +4 -4
  70. package/src/tool/videoFrameExtractor/i18n/fr.ts +8 -8
  71. package/src/tool/videoFrameExtractor/i18n/ru.ts +2 -2
  72. package/src/tool/videoMerger/bibliography.astro +17 -0
  73. package/src/tool/videoMerger/bibliography.ts +16 -0
  74. package/src/tool/videoMerger/component.astro +400 -0
  75. package/src/tool/videoMerger/entry.ts +51 -0
  76. package/src/tool/videoMerger/i18n/de.ts +205 -0
  77. package/src/tool/videoMerger/i18n/en.ts +205 -0
  78. package/src/tool/videoMerger/i18n/es.ts +205 -0
  79. package/src/tool/videoMerger/i18n/fr.ts +205 -0
  80. package/src/tool/videoMerger/i18n/id.ts +205 -0
  81. package/src/tool/videoMerger/i18n/it.ts +205 -0
  82. package/src/tool/videoMerger/i18n/ja.ts +205 -0
  83. package/src/tool/videoMerger/i18n/ko.ts +205 -0
  84. package/src/tool/videoMerger/i18n/nl.ts +205 -0
  85. package/src/tool/videoMerger/i18n/pl.ts +205 -0
  86. package/src/tool/videoMerger/i18n/pt.ts +205 -0
  87. package/src/tool/videoMerger/i18n/ru.ts +205 -0
  88. package/src/tool/videoMerger/i18n/sv.ts +205 -0
  89. package/src/tool/videoMerger/i18n/tr.ts +205 -0
  90. package/src/tool/videoMerger/i18n/zh.ts +205 -0
  91. package/src/tool/videoMerger/index.ts +11 -0
  92. package/src/tool/videoMerger/logic.ts +263 -0
  93. package/src/tool/videoMerger/online-video-merger.css +440 -0
  94. package/src/tool/videoMerger/seo.astro +15 -0
  95. 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 = 'gabung-video-online';
6
+ const title = 'Gabung Video Online: Satukan banyak video dengan cepat dan gratis';
7
+ const description = 'Gabungkan dan satukan banyak video menjadi satu secara gratis, online, dan lokal. Tanpa watermark, tanpa unggah, 100% pribadi di browser Anda.';
8
+
9
+ const ui: VideoMergerUI = {
10
+ uploadTitle: "Unggah file video Anda",
11
+ uploadFormats: "Seret dan lepas beberapa video atau klik untuk memilihnya",
12
+ privacyNote: "Video Anda diproses 100% secara lokal. Tidak ada yang diunggah ke internet.",
13
+ addMoreBtn: "Tambah video lagi",
14
+ mergeBtn: "Gabungkan video sekarang",
15
+ mergingStatus: "Menggabungkan video...",
16
+ downloadBtn: "Unduh video gabungan",
17
+ resetBtn: "Mulai dari awal",
18
+ emptyList: "Seret atau pilih video untuk mulai menggabungkannya.",
19
+ listTitle: "Urutan video untuk digabungkan",
20
+ optionsTitle: "Pengaturan keluaran",
21
+ optionResolution: "Resolusi",
22
+ optionFps: "Bingkai per detik (FPS)",
23
+ optionsQualityNote: "Resolusi akhir akan disesuaikan dengan tetap menjaga rasio aspek asli menggunakan format letterbox jika video memiliki dimensi yang berbeda.",
24
+ faqTitle: "Pertanyaan yang Sering Diajukan tentang Penggabungan Video",
25
+ bibliographyTitle: "Bibliografi & Referensi",
26
+ resolutionWarning: "Peringatan: Beberapa video memiliki resolusi berbeda dan akan disesuaikan secara otomatis."
27
+ };
28
+
29
+ const faq: VideoMergerLocaleContent['faq'] = [
30
+ {
31
+ question: "Apakah aman mengunggah video saya ke alat ini?",
32
+ answer: "Ya, ini sepenuhnya aman. Alat ini bekerja 100% secara lokal di browser Anda. Video Anda tidak pernah dikirimkan melalui internet atau disimpan di server mana pun.",
33
+ },
34
+ {
35
+ question: "Apa yang terjadi jika video saya memiliki dimensi yang berbeda?",
36
+ answer: "Alat kami secara otomatis mengubah ukuran video agar sesuai dengan resolusi keluaran yang Anda pilih. Untuk proporsi yang tidak sama persis, margin hitam (letterboxing) akan ditambahkan untuk mempertahankan rasio aspek asli.",
37
+ },
38
+ {
39
+ question: "Apakah audio dari video dipertahankan saat digabungkan?",
40
+ answer: "Ya. Trek audio dari setiap video ditangkap dan digabungkan secara berurutan dalam sinkronisasi sempurna dengan setiap segmen gambar.",
41
+ },
42
+ ];
43
+
44
+ const howTo: VideoMergerLocaleContent['howTo'] = [
45
+ {
46
+ name: "Pilih atau seret video Anda",
47
+ text: "Muat semua file video yang ingin Anda gabungkan langsung dari komputer atau ponsel Anda.",
48
+ },
49
+ {
50
+ name: "Atur urutan",
51
+ text: "Urutkan video yang diunggah menggunakan tombol atas atau bawah dalam daftar untuk menentukan urutan pemutaran.",
52
+ },
53
+ {
54
+ name: "Sesuaikan opsi",
55
+ text: "Pilih resolusi keluaran dan bingkai per detik (FPS) dari video yang digabungkan.",
56
+ },
57
+ {
58
+ name: "Gabung dan ekspor",
59
+ text: "Tekan tombol gabung. Tunggu hingga pemrosesan waktu nyata selesai dan unduh file yang dihasilkan.",
60
+ },
61
+ ];
62
+
63
+ const seo: VideoMergerLocaleContent['seo'] = [
64
+ {
65
+ type: 'summary',
66
+ title: 'Penggabungan Video Profesional 100% Lokal',
67
+ items: [
68
+ 'Pemrosesan waktu nyata langsung di browser Anda',
69
+ 'Mendukung beberapa video dengan berbagai ukuran dan format (MP4, WEBM, MOV)',
70
+ 'Resolusi keluaran yang dapat dipilih (720p, 1080p, 2K, 4K)',
71
+ 'Trek audio digabungkan secara berurutan dengan sempurna'
72
+ ]
73
+ },
74
+ { type: 'title', text: 'Gabungkan Video Online Gratis: Kesederhanaan dan Privasi Tanpa Batas', level: 2 },
75
+ { type: 'paragraph', html: 'Bertanya-tanya <strong>bagaimana cara menggabungkan dua video menjadi satu</strong> tanpa kerumitan? Anda tidak perlu lagi mengunduh perangkat lunak berat atau aplikasi berbayar. Alat kami untuk <strong>menggabungkan video online secara gratis</strong> memungkinkan Anda menyambung dan menggabungkan semua klip yang Anda perlukan dalam hitungan detik. Dengan bekerja 100% secara lokal, Anda tidak perlu mengunggah file ke server mana pun, menjamin privasi mutlak dan memungkinkan Anda <strong>menggabungkan video berukuran besar</strong> tanpa waktu tunggu untuk mengunggah.' },
76
+
77
+ { type: 'title', text: 'Gabung Video Tanpa Watermark', level: 3 },
78
+ { type: 'paragraph', html: 'Salah satu kelemahan terbesar dari aplikasi lain adalah mereka mengacaukan konten Anda. Bersama kami, Anda dapat <strong>menggabungkan video online tanpa watermark</strong>. File yang Anda unduh akan menjadi kreasi Anda sepenuhnya, bersih, profesional, dan siap dibagikan di YouTube, Instagram, TikTok, atau untuk penggunaan pribadi.' },
79
+
80
+ { type: 'stats', items: [
81
+ { value: '100%', label: 'Pribadi dan Lokal', icon: 'mdi:shield-check' },
82
+ { value: '0MB', label: 'Tanpa Data Unggahan', icon: 'mdi:upload-off' },
83
+ { value: '4K', label: 'Resolusi Maksimal', icon: 'mdi:video-high-definition' }
84
+ ], columns: 3 },
85
+
86
+ { type: 'title', text: 'Kasus Penggunaan Umum untuk Menggabungkan Video', level: 3 },
87
+ { type: 'comparative', items: [
88
+ {
89
+ title: 'Media Sosial',
90
+ description: 'Penggabungan cepat stories, TikTok, atau reel menjadi satu video',
91
+ icon: 'mdi:instagram',
92
+ points: [
93
+ 'Gabungkan klip kecil yang direkam dengan ponsel Anda',
94
+ 'Siapkan konten berurutan untuk Instagram atau YouTube',
95
+ 'Penggabungan tanpa watermark yang mengganggu'
96
+ ]
97
+ },
98
+ {
99
+ title: 'Presentasi',
100
+ description: 'Gabungkan perkenalan dan rekaman demo menjadi satu file',
101
+ icon: 'mdi:presentation',
102
+ points: [
103
+ 'Gabungkan intro animasi dengan badan presentasi',
104
+ 'Gabungkan demo perangkat lunak pendek',
105
+ 'Ekspor bersih dalam format standar MP4/WEBM'
106
+ ],
107
+ highlight: true
108
+ },
109
+ {
110
+ title: 'Kompilasi Keluarga',
111
+ description: 'Gabungkan beberapa video dari liburan atau perayaan Anda',
112
+ icon: 'mdi:home-heart',
113
+ points: [
114
+ 'Buat satu video dengan semua momen pesta',
115
+ 'Kelompokkan kenangan perjalanan secara kronologis',
116
+ 'Mudah dibagikan karena berada dalam satu file'
117
+ ]
118
+ },
119
+ {
120
+ title: 'Video Edukasi',
121
+ description: 'Sambung bab pelatihan atau pelajaran singkat',
122
+ icon: 'mdi:school',
123
+ points: [
124
+ 'Kelompokkan tutorial kecil yang independen',
125
+ 'Tambahkan klip penutup ke pelajaran Anda',
126
+ 'Susun kursus Anda secara profesional'
127
+ ]
128
+ }
129
+ ], columns: 2 },
130
+
131
+ { type: 'title', text: 'Aplikasi Terbaik untuk Menggabungkan Video dari Browser', level: 2 },
132
+ { type: 'paragraph', html: 'Ini bukan sekadar halaman web biasa; ini adalah <strong>aplikasi sejati untuk menggabungkan video</strong> yang beroperasi langsung dari browser Anda berkat API video HTML5 modern. Anda dapat <strong>menggabungkan video MP4</strong>, WEBM, dan lainnya, mencampur resolusi (sistem kami menerapkan letterboxing secara otomatis jika dimensi bervariasi) dan memilih bingkai per detik (FPS) dari ekspor akhir Anda.' },
133
+
134
+ { type: 'title', text: 'Perbandingan Pendekatan Penggabungan', level: 3 },
135
+ { type: 'table', headers: ['Fitur', 'Alat Lokal Kami', 'Konverter Online Klasik', 'Editor Profesional'], rows: [
136
+ ['Privasi', 'Total (Diproses di perangkat Anda)', 'Rendah (Harus mengunggah file ke server)', 'Total (Diinstal di perangkat Anda)'],
137
+ ['Konsumsi Jaringan', 'Nol (Tidak ada unggahan gigabyte)', 'Sangat tinggi (Unggah dan unduh)', 'Nol'],
138
+ ['Watermark', 'TIDAK (100% bersih)', 'Ya (Dalam versi gratis)', 'TIDAK (Jika Anda membeli lisensi)'],
139
+ ['Harga', '100% Gratis', 'Gratis dengan batasan atau langganan', 'Biasanya mahal'],
140
+ ['Kurva Pembelajaran', 'Sangat rendah (Seret, urutkan, dan gabung)', 'Rendah', 'Sangat tinggi (Membutuhkan pelatihan teknis)']
141
+ ] },
142
+
143
+ { type: 'proscons', items: [
144
+ {
145
+ pro: 'Privasi terjamin: Keamanan maksimum karena tidak ada file yang keluar dari perangkat Anda',
146
+ con: 'Kecepatan penggabungan video berukuran besar bergantung pada RAM dan prosesor komputer lokal Anda'
147
+ },
148
+ {
149
+ pro: 'Hasil profesional: 100% gratis, tanpa registrasi, dan tanpa watermark',
150
+ con: 'Saat menggabungkan video dengan dimensi berbeda (vertikal vs horizontal), margin hitam (letterboxing) akan diterapkan'
151
+ },
152
+ {
153
+ pro: 'Keserbagunaan: Ekspor cepat dengan pengkodean efisien yang dioptimalkan untuk penggunaan web dan media sosial',
154
+ con: 'Tidak memungkinkan penambahan transisi yang kompleks (fade 3D) atau efek visual sinematik di antara klip'
155
+ }
156
+ ], title: 'Keuntungan dan Pertimbangan' },
157
+
158
+ { type: 'title', text: 'Mulai Menggabungkan Video Anda Hari Ini', level: 2 },
159
+ { type: 'paragraph', html: 'Tidak ada lagi alasan untuk memiliki ratusan fragmen video yang tidak terorganisir. Unggah file Anda, letakkan dalam urutan yang diinginkan, dan tekan tombol. Temukan cara tercepat, teraman, dan paling pribadi untuk <strong>menggabungkan video secara 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: 'id',
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 = 'unire-video-online';
6
+ const title = 'Unire Video Online: Unisci più video gratis e velocemente';
7
+ const description = 'Unisci e concatena più video in uno solo gratuitamente, online e localmente. Nessun watermark, nessun caricamento, 100% privato nel tuo browser.';
8
+
9
+ const ui: VideoMergerUI = {
10
+ uploadTitle: "Carica i tuoi file video",
11
+ uploadFormats: "Trascina più video o fai clic per selezionarli",
12
+ privacyNote: "I tuoi video vengono elaborati al 100% localmente. Nulla viene caricato su Internet.",
13
+ addMoreBtn: "Aggiungi altri video",
14
+ mergeBtn: "Unisci i video ora",
15
+ mergingStatus: "Unione dei video in corso...",
16
+ downloadBtn: "Scarica il video unito",
17
+ resetBtn: "Ricomincia",
18
+ emptyList: "Trascina o seleziona i video per iniziare a unirli.",
19
+ listTitle: "Ordine dei video da unire",
20
+ optionsTitle: "Impostazioni di output",
21
+ optionResolution: "Risoluzione",
22
+ optionFps: "Fotogrammi al secondo (FPS)",
23
+ optionsQualityNote: "La risoluzione finale verrà regolata mantenendo le proporzioni originali nel formato letterbox se i video hanno dimensioni diverse.",
24
+ faqTitle: "Domande frequenti sull'unione di video",
25
+ bibliographyTitle: "Bibliografia e Riferimenti",
26
+ resolutionWarning: "Attenzione: Alcuni video hanno risoluzioni diverse e verranno adattati automaticamente."
27
+ };
28
+
29
+ const faq: VideoMergerLocaleContent['faq'] = [
30
+ {
31
+ question: "È sicuro caricare i miei video in questo strumento?",
32
+ answer: "Sì, è completamente sicuro. Lo strumento funziona al 100% localmente nel tuo browser. I tuoi video non vengono mai trasmessi su Internet o salvati su alcun server.",
33
+ },
34
+ {
35
+ question: "Cosa succede se i miei video hanno dimensioni diverse?",
36
+ answer: "Il nostro strumento ridimensiona automaticamente i video per adattarli alla risoluzione di output scelta. Per le proporzioni che non corrispondono esattamente, verranno aggiunti margini neri (letterboxing) per preservare le proporzioni originali.",
37
+ },
38
+ {
39
+ question: "L'audio dei video viene preservato durante l'unione?",
40
+ answer: "Sì. Le tracce audio di ogni video vengono acquisite e mixate in sequenza in perfetta sincronizzazione con ogni segmento di immagine.",
41
+ },
42
+ ];
43
+
44
+ const howTo: VideoMergerLocaleContent['howTo'] = [
45
+ {
46
+ name: "Seleziona o trascina i tuoi video",
47
+ text: "Carica tutti i file video che desideri unire direttamente dal tuo computer o dispositivo mobile.",
48
+ },
49
+ {
50
+ name: "Organizza l'ordine",
51
+ text: "Ordina i video caricati utilizzando i pulsanti su e giù nell'elenco per decidere la sequenza di riproduzione.",
52
+ },
53
+ {
54
+ name: "Regola le opzioni",
55
+ text: "Scegli la risoluzione di output e i fotogrammi al secondo (FPS) del video unito.",
56
+ },
57
+ {
58
+ name: "Unisci ed esporta",
59
+ text: "Premi il pulsante unisci. Attendi il completamento dell'elaborazione in tempo reale e scarica il file risultante.",
60
+ },
61
+ ];
62
+
63
+ const seo: VideoMergerLocaleContent['seo'] = [
64
+ {
65
+ type: 'summary',
66
+ title: 'Unione professionale di video 100% locale',
67
+ items: [
68
+ 'Elaborazione in tempo reale direttamente nel tuo browser',
69
+ 'Supporta più video di dimensioni e formati diversi (MP4, WEBM, MOV)',
70
+ 'Risoluzione di output selezionabile (720p, 1080p, 2K, 4K)',
71
+ 'Tracce audio combinate in modo perfettamente sequenziale'
72
+ ]
73
+ },
74
+ { type: 'title', text: 'Unire video online gratis: Semplicità e privacy senza limiti', level: 2 },
75
+ { type: 'paragraph', html: 'Ti chiedi <strong>come unire due video in uno solo</strong> senza complicazioni? Non è più necessario scaricare software pesanti o applicazioni a pagamento. Il nostro strumento per <strong>unire video online gratis</strong> ti consente di concatenare e unire tutti i clip di cui hai bisogno in pochi secondi. Funzionando al 100% localmente, non devi caricare i tuoi file su alcun server, garantendo assoluta privacy e permettendoti di <strong>unire video pesanti</strong> senza tempi di attesa per il caricamento.' },
76
+
77
+ { type: 'title', text: 'Unire video senza watermark', level: 3 },
78
+ { type: 'paragraph', html: 'Uno dei maggiori svantaggi di altre applicazioni è che rovinano i tuoi contenuti. Con noi, puoi <strong>unire video online senza watermark</strong>. Il file che scaricherai sarà esattamente la tua creazione, pulita, professionale e pronta da condividere su YouTube, Instagram, TikTok o per uso personale.' },
79
+
80
+ { type: 'stats', items: [
81
+ { value: '100%', label: 'Privato e Locale', icon: 'mdi:shield-check' },
82
+ { value: '0MB', label: 'Nessun dato di caricamento', icon: 'mdi:upload-off' },
83
+ { value: '4K', label: 'Risoluzione massima', icon: 'mdi:video-high-definition' }
84
+ ], columns: 3 },
85
+
86
+ { type: 'title', text: 'Casi d\'uso comuni per l\'unione di video', level: 3 },
87
+ { type: 'comparative', items: [
88
+ {
89
+ title: 'Social Media',
90
+ description: 'Unione rapida di storie, TikTok o reel in un unico video',
91
+ icon: 'mdi:instagram',
92
+ points: [
93
+ 'Unisci piccoli clip registrati con il cellulare',
94
+ 'Prepara contenuti sequenziali per Instagram o YouTube',
95
+ 'Unione senza fastidiosi watermark'
96
+ ]
97
+ },
98
+ {
99
+ title: 'Presentazioni',
100
+ description: 'Unisci introduzioni e registrazioni dimostrative',
101
+ icon: 'mdi:presentation',
102
+ points: [
103
+ 'Unisci un\'introduzione animata al corpo della presentazione',
104
+ 'Unisci brevi demo software',
105
+ 'Esportazione pulita in formato standard MP4/WEBM'
106
+ ],
107
+ highlight: true
108
+ },
109
+ {
110
+ title: 'Compilation familiari',
111
+ description: 'Unisci più video delle tue vacanze o feste',
112
+ icon: 'mdi:home-heart',
113
+ points: [
114
+ 'Crea un unico video con tutti i momenti della festa',
115
+ 'Raggruppa i ricordi di viaggio cronologicamente',
116
+ 'Facile da condividere in un unico file'
117
+ ]
118
+ },
119
+ {
120
+ title: 'Video educativi',
121
+ description: 'Concatena brevi capitoli di formazione o lezioni',
122
+ icon: 'mdi:school',
123
+ points: [
124
+ 'Raggruppa piccoli tutorial indipendenti',
125
+ 'Aggiungi un clip di chiusura alle tue lezioni',
126
+ 'Struttura il tuo corso in modo professionale'
127
+ ]
128
+ }
129
+ ], columns: 2 },
130
+
131
+ { type: 'title', text: 'La migliore app per unire video dal browser', level: 2 },
132
+ { type: 'paragraph', html: 'Questa non è solo un\'altra pagina web; è una vera e propria <strong>app per unire video</strong> che opera direttamente dal tuo browser grazie alle moderne API video HTML5. Puoi <strong>fusionare video MP4</strong>, WEBM e altro ancora, miscelando risoluzioni (il nostro sistema applica automaticamente il letterboxing se le dimensioni variano) e scegliendo i fotogrammi al secondo (FPS) della tua esportazione finale.' },
133
+
134
+ { type: 'title', text: 'Confronto degli approcci di unione', level: 3 },
135
+ { type: 'table', headers: ['Caratteristiche', 'Il nostro strumento locale', 'Convertitori online classici', 'Editor professionali'], rows: [
136
+ ['Privacy', 'Totale (Elaborato sul tuo dispositivo)', 'Bassa (Richiede il caricamento su server)', 'Totale (Installato sul tuo dispositivo)'],
137
+ ['Consumo di rete', 'Zero (Nessun caricamento di gigabyte)', 'Molto alto (Caricamento e download)', 'Zero'],
138
+ ['Watermark', 'NO (100% pulito)', 'Sì (Nelle versioni gratuite)', 'NO (Se acquisti la licenza)'],
139
+ ['Prezzo', '100% Gratis', 'Gratis con limiti o abbonamento', 'Di solito costosi'],
140
+ ['Curva di apprendimento', 'Molto bassa (Trascina, ordina e unisci)', 'Bassa', 'Molto alta (Richiede formazione)']
141
+ ] },
142
+
143
+ { type: 'proscons', items: [
144
+ {
145
+ pro: 'Privacy garantita: Massima sicurezza poiché nessun file lascia il tuo dispositivo',
146
+ con: 'La velocità di unione di video pesanti dipende dalla RAM e dal processore del tuo computer locale'
147
+ },
148
+ {
149
+ pro: 'Risultati professionali: 100% gratuito, senza registrazione e senza watermark',
150
+ con: 'Quando si uniscono video con dimensioni diverse (verticali vs orizzontali), verranno applicati margini neri'
151
+ },
152
+ {
153
+ pro: 'Versatilità: Esportazione rapida con codifica efficiente ottimizzata per web e social media',
154
+ con: 'Non consente di aggiungere transizioni complesse (dissolvenze 3D) o effetti visivi cinematografici'
155
+ }
156
+ ], title: 'Vantaggi e considerazioni' },
157
+
158
+ { type: 'title', text: 'Inizia a unire i tuoi video oggi', level: 2 },
159
+ { type: 'paragraph', html: 'Non ci sono più scuse per avere centinaia di frammenti video disorganizzati. Carica i tuoi file, posizionali nell\'ordine desiderato e premi il pulsante. Scopri il modo più veloce, sicuro e privato per <strong>unire video 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: 'it',
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 = 'merge-videos-online';
6
+ const title = '動画結合オンライン:複数の動画を素早く無料で結合';
7
+ const description = '複数の動画を1つに無料でオンラインかつローカルで結合します。透かしなし、アップロードなし、ブラウザ内で100%プライベートに処理されます。';
8
+
9
+ const ui: VideoMergerUI = {
10
+ uploadTitle: "動画ファイルをアップロード",
11
+ uploadFormats: "複数の動画をドラッグ&ドロップするか、クリックして選択",
12
+ privacyNote: "動画は100%ローカルで処理されます。インターネットには一切アップロードされません。",
13
+ addMoreBtn: "動画を追加",
14
+ mergeBtn: "今すぐ動画を結合",
15
+ mergingStatus: "動画を結合中...",
16
+ downloadBtn: "結合した動画をダウンロード",
17
+ resetBtn: "最初からやり直す",
18
+ emptyList: "動画をドラッグまたは選択して結合を開始してください。",
19
+ listTitle: "結合する動画の順序",
20
+ optionsTitle: "出力設定",
21
+ optionResolution: "解像度",
22
+ optionFps: "フレームレート(FPS)",
23
+ optionsQualityNote: "動画のサイズが異なる場合、最終的な解像度は元の縦横比を維持しながらレターボックス形式で調整されます。",
24
+ faqTitle: "動画結合に関するよくある質問",
25
+ bibliographyTitle: "参考文献とリンク",
26
+ resolutionWarning: "注意:一部の動画の解像度が異なるため、自動的に調整されます。"
27
+ };
28
+
29
+ const faq: VideoMergerLocaleContent['faq'] = [
30
+ {
31
+ question: "このツールに動画をアップロードするのは安全ですか?",
32
+ answer: "はい、完全に安全です。このツールはブラウザ内で100%ローカルに動作します。動画がインターネット経由で送信されたり、サーバーに保存されたりすることはありません。",
33
+ },
34
+ {
35
+ question: "動画のサイズが異なる場合はどうなりますか?",
36
+ answer: "選択した出力解像度に合わせて、動画が自動的にスケーリングされます。比率が完全に一致しない場合は、元の縦横比を維持するために黒い余白(レターボックス)が追加されます。",
37
+ },
38
+ {
39
+ question: "結合時に動画の音声は保持されますか?",
40
+ answer: "はい。各動画のオーディオトラックが抽出され、各映像セグメントと完全に同期して順番にミックスされます。",
41
+ },
42
+ ];
43
+
44
+ const howTo: VideoMergerLocaleContent['howTo'] = [
45
+ {
46
+ name: "動画を選択またはドラッグ",
47
+ text: "結合したいすべての動画ファイルを、パソコンやスマートフォンから直接読み込みます。",
48
+ },
49
+ {
50
+ name: "順序を整理する",
51
+ text: "リストの上下ボタンを使用してアップロードした動画を並べ替え、再生順序を決定します。",
52
+ },
53
+ {
54
+ name: "オプションを調整する",
55
+ text: "結合した動画の出力解像度とフレームレート(FPS)を選択します。",
56
+ },
57
+ {
58
+ name: "結合してエクスポート",
59
+ text: "結合ボタンを押します。リアルタイム処理が完了するのを待ち、結果のファイルをダウンロードします。",
60
+ },
61
+ ];
62
+
63
+ const seo: VideoMergerLocaleContent['seo'] = [
64
+ {
65
+ type: 'summary',
66
+ title: '100%ローカルでプロフェッショナルな動画結合',
67
+ items: [
68
+ 'ブラウザ内で直接リアルタイム処理',
69
+ '異なるサイズやフォーマット(MP4、WEBM、MOV)の複数の動画に対応',
70
+ '選択可能な出力解像度(720p、1080p、2K、4K)',
71
+ 'オーディオトラックを完璧に順番に結合'
72
+ ]
73
+ },
74
+ { type: 'title', text: '動画を無料でオンライン結合:無限のシンプルさとプライバシー', level: 2 },
75
+ { type: 'paragraph', html: '<strong>2つの動画を1つに結合する方法</strong>をお探しですか? 重いソフトウェアや有料アプリをダウンロードする必要はもうありません。私たちの<strong>無料で動画をオンライン結合</strong>するツールを使えば、必要なすべてのクリップを数秒でつなぎ合わせることができます。100%ローカルで動作するため、ファイルをサーバーにアップロードする必要がなく、絶対的なプライバシーが保証されます。また、アップロードの待ち時間なしで<strong>大容量の動画を結合</strong>できます。' },
76
+
77
+ { type: 'title', text: '透かしなしで動画を結合', level: 3 },
78
+ { type: 'paragraph', html: '他のアプリの最大の欠点の1つは、コンテンツに透かしが入ってしまうことです。私たちのツールでは、<strong>透かしなしで動画をオンライン結合</strong>できます。ダウンロードしたファイルは完全にあなたの作品であり、クリーンでプロフェッショナルな状態のまま、YouTube、Instagram、TikTokで共有したり、個人的に使用したりできます。' },
79
+
80
+ { type: 'stats', items: [
81
+ { value: '100%', label: 'プライベート&ローカル', icon: 'mdi:shield-check' },
82
+ { value: '0MB', label: 'アップロードデータなし', icon: 'mdi:upload-off' },
83
+ { value: '4K', label: '最大解像度', icon: 'mdi:video-high-definition' }
84
+ ], columns: 3 },
85
+
86
+ { type: 'title', text: '動画結合の一般的な使用例', level: 3 },
87
+ { type: 'comparative', items: [
88
+ {
89
+ title: 'ソーシャルメディア',
90
+ description: 'ストーリー、TikTok、リールを1つの動画にすばやく結合',
91
+ icon: 'mdi:instagram',
92
+ points: [
93
+ 'スマートフォンで撮影した短いクリップを結合',
94
+ 'InstagramやYouTube用の連続したコンテンツを準備',
95
+ '煩わしい透かしなしで結合'
96
+ ]
97
+ },
98
+ {
99
+ title: 'プレゼンテーション',
100
+ description: 'イントロとデモ録画を1つのファイルに結合',
101
+ icon: 'mdi:presentation',
102
+ points: [
103
+ 'アニメーションのイントロをプレゼンテーション本体と結合',
104
+ '短いソフトウェアのデモを結合',
105
+ '標準的なMP4/WEBM形式でのクリーンなエクスポート'
106
+ ],
107
+ highlight: true
108
+ },
109
+ {
110
+ title: '家族の思い出まとめ',
111
+ description: '休暇やお祝いの複数の動画を結合',
112
+ icon: 'mdi:home-heart',
113
+ points: [
114
+ 'パーティーのすべての瞬間を1つの動画に',
115
+ '旅行の思い出を時系列でグループ化',
116
+ '1つのファイルになるため共有が簡単'
117
+ ]
118
+ },
119
+ {
120
+ title: '教育ビデオ',
121
+ description: '短いトレーニングチャプターやレッスンをつなぎ合わせる',
122
+ icon: 'mdi:school',
123
+ points: [
124
+ '小さな独立したチュートリアルをグループ化',
125
+ 'レッスンに終了クリップを追加',
126
+ 'コースをプロフェッショナルに構成する'
127
+ ]
128
+ }
129
+ ], columns: 2 },
130
+
131
+ { type: 'title', text: 'ブラウザから動画を結合するのに最適なアプリ', level: 2 },
132
+ { type: 'paragraph', html: 'これは単なるウェブページではありません。最新のHTML5ビデオAPIのおかげで、ブラウザから直接動作する真の<strong>動画結合アプリ</strong>です。<strong>MP4動画</strong>、WEBMなどを結合し、解像度を混在させ(サイズが異なる場合、システムが自動的にレターボックスを適用します)、最終的なエクスポートのフレームレート(FPS)を選択できます。' },
133
+
134
+ { type: 'title', text: '結合アプローチの比較', level: 3 },
135
+ { type: 'table', headers: ['機能', '私たちのローカルツール', '従来のオンラインコンバーター', 'プロフェッショナル向けエディター'], rows: [
136
+ ['プライバシー', '完全(デバイス上で処理)', '低い(サーバーへのアップロードが必要)', '完全(デバイスにインストール)'],
137
+ ['ネットワーク消費', 'ゼロ(GBのアップロードなし)', '非常に高い(アップロードとダウンロード)', 'ゼロ'],
138
+ ['透かし', 'なし(100%クリーン)', 'あり(無料版の場合)', 'なし(ライセンス購入時)'],
139
+ ['価格', '100%無料', '制限付きで無料、またはサブスクリプション', '通常は高価'],
140
+ ['学習曲線', '非常に低い(ドラッグ、並べ替え、結合)', '低い', '非常に高い(トレーニングが必要)']
141
+ ] },
142
+
143
+ { type: 'proscons', items: [
144
+ {
145
+ pro: '保証されたプライバシー:ファイルがデバイスから離れることがないため、セキュリティは最高です',
146
+ con: '大容量の動画を結合する速度は、ローカルコンピューターのRAMとプロセッサに依存します'
147
+ },
148
+ {
149
+ pro: 'プロフェッショナルな結果:100%無料で登録不要、透かしもありません',
150
+ con: '縦向きと横向きなど、寸法の異なる動画を結合する場合は、黒い余白(レターボックス)が適用されます'
151
+ },
152
+ {
153
+ pro: '汎用性:ウェブやソーシャルメディア向けに最適化された効率的なエンコーディングによる高速エクスポート',
154
+ con: 'クリップ間に複雑なトランジション(3Dフェード)や映画のような視覚効果を追加することはできません'
155
+ }
156
+ ], title: '利点と考慮事項' },
157
+
158
+ { type: 'title', text: '今すぐ動画の結合を始めましょう', level: 2 },
159
+ { type: 'paragraph', html: 'バラバラの動画フラグメントが何百もある言い訳はもう通用しません。ファイルをアップロードし、希望の順序に並べ、ボタンを押すだけです。<strong>オンラインで動画を結合</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: 'ja',
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
+ };