@jjlmoya/utils-audiovisual 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +59 -58
- package/src/category/i18n/de.ts +198 -0
- package/src/category/i18n/fr.ts +1 -1
- package/src/category/i18n/id.ts +198 -0
- package/src/category/i18n/it.ts +198 -0
- package/src/category/i18n/ja.ts +198 -0
- package/src/category/i18n/ko.ts +198 -0
- package/src/category/i18n/nl.ts +198 -0
- package/src/category/i18n/pl.ts +198 -0
- package/src/category/i18n/pt.ts +198 -0
- package/src/category/i18n/ru.ts +198 -0
- package/src/category/i18n/sv.ts +198 -0
- package/src/category/i18n/tr.ts +198 -0
- package/src/category/i18n/zh.ts +198 -0
- package/src/category/index.ts +31 -3
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/chromaticLens/i18n/de.ts +246 -0
- package/src/tool/chromaticLens/i18n/en.ts +1 -1
- package/src/tool/chromaticLens/i18n/es.ts +1 -1
- package/src/tool/chromaticLens/i18n/fr.ts +1 -1
- package/src/tool/chromaticLens/i18n/id.ts +246 -0
- package/src/tool/chromaticLens/i18n/it.ts +246 -0
- package/src/tool/chromaticLens/i18n/ja.ts +246 -0
- package/src/tool/chromaticLens/i18n/ko.ts +246 -0
- package/src/tool/chromaticLens/i18n/nl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pt.ts +246 -0
- package/src/tool/chromaticLens/i18n/ru.ts +246 -0
- package/src/tool/chromaticLens/i18n/sv.ts +246 -0
- package/src/tool/chromaticLens/i18n/tr.ts +246 -0
- package/src/tool/chromaticLens/i18n/zh.ts +246 -0
- package/src/tool/chromaticLens/index.ts +15 -7
- package/src/tool/collageMaker/i18n/de.ts +233 -0
- package/src/tool/collageMaker/i18n/en.ts +1 -1
- package/src/tool/collageMaker/i18n/es.ts +1 -1
- package/src/tool/collageMaker/i18n/fr.ts +1 -1
- package/src/tool/collageMaker/i18n/id.ts +233 -0
- package/src/tool/collageMaker/i18n/it.ts +233 -0
- package/src/tool/collageMaker/i18n/ja.ts +233 -0
- package/src/tool/collageMaker/i18n/ko.ts +233 -0
- package/src/tool/collageMaker/i18n/nl.ts +233 -0
- package/src/tool/collageMaker/i18n/pl.ts +233 -0
- package/src/tool/collageMaker/i18n/pt.ts +233 -0
- package/src/tool/collageMaker/i18n/ru.ts +233 -0
- package/src/tool/collageMaker/i18n/sv.ts +233 -0
- package/src/tool/collageMaker/i18n/tr.ts +233 -0
- package/src/tool/collageMaker/i18n/zh.ts +233 -0
- package/src/tool/collageMaker/index.ts +15 -6
- package/src/tool/exifCleaner/i18n/de.ts +277 -0
- package/src/tool/exifCleaner/i18n/en.ts +2 -2
- package/src/tool/exifCleaner/i18n/es.ts +2 -2
- package/src/tool/exifCleaner/i18n/fr.ts +4 -4
- package/src/tool/exifCleaner/i18n/id.ts +277 -0
- package/src/tool/exifCleaner/i18n/it.ts +277 -0
- package/src/tool/exifCleaner/i18n/ja.ts +277 -0
- package/src/tool/exifCleaner/i18n/ko.ts +277 -0
- package/src/tool/exifCleaner/i18n/nl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pt.ts +277 -0
- package/src/tool/exifCleaner/i18n/ru.ts +277 -0
- package/src/tool/exifCleaner/i18n/sv.ts +277 -0
- package/src/tool/exifCleaner/i18n/tr.ts +277 -0
- package/src/tool/exifCleaner/i18n/zh.ts +277 -0
- package/src/tool/exifCleaner/index.ts +16 -8
- package/src/tool/imageCompressor/i18n/de.ts +242 -0
- package/src/tool/imageCompressor/i18n/en.ts +2 -2
- package/src/tool/imageCompressor/i18n/es.ts +2 -2
- package/src/tool/imageCompressor/i18n/id.ts +242 -0
- package/src/tool/imageCompressor/i18n/it.ts +242 -0
- package/src/tool/imageCompressor/i18n/ja.ts +242 -0
- package/src/tool/imageCompressor/i18n/ko.ts +242 -0
- package/src/tool/imageCompressor/i18n/nl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pt.ts +242 -0
- package/src/tool/imageCompressor/i18n/ru.ts +242 -0
- package/src/tool/imageCompressor/i18n/sv.ts +242 -0
- package/src/tool/imageCompressor/i18n/tr.ts +242 -0
- package/src/tool/imageCompressor/i18n/zh.ts +244 -0
- package/src/tool/imageCompressor/index.ts +15 -7
- package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/en.ts +2 -2
- package/src/tool/printQualityCalculator/i18n/es.ts +3 -3
- package/src/tool/printQualityCalculator/i18n/fr.ts +3 -3
- package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
- package/src/tool/printQualityCalculator/index.ts +15 -7
- package/src/tool/privacyBlur/i18n/de.ts +238 -0
- package/src/tool/privacyBlur/i18n/en.ts +1 -1
- package/src/tool/privacyBlur/i18n/es.ts +1 -1
- package/src/tool/privacyBlur/i18n/fr.ts +1 -1
- package/src/tool/privacyBlur/i18n/id.ts +238 -0
- package/src/tool/privacyBlur/i18n/it.ts +238 -0
- package/src/tool/privacyBlur/i18n/ja.ts +238 -0
- package/src/tool/privacyBlur/i18n/ko.ts +238 -0
- package/src/tool/privacyBlur/i18n/nl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pt.ts +238 -0
- package/src/tool/privacyBlur/i18n/ru.ts +238 -0
- package/src/tool/privacyBlur/i18n/sv.ts +238 -0
- package/src/tool/privacyBlur/i18n/tr.ts +238 -0
- package/src/tool/privacyBlur/i18n/zh.ts +238 -0
- package/src/tool/privacyBlur/index.ts +15 -7
- package/src/tool/subtitleSync/i18n/de.ts +241 -0
- package/src/tool/subtitleSync/i18n/en.ts +1 -1
- package/src/tool/subtitleSync/i18n/es.ts +1 -1
- package/src/tool/subtitleSync/i18n/fr.ts +8 -8
- package/src/tool/subtitleSync/i18n/id.ts +241 -0
- package/src/tool/subtitleSync/i18n/it.ts +241 -0
- package/src/tool/subtitleSync/i18n/ja.ts +241 -0
- package/src/tool/subtitleSync/i18n/ko.ts +241 -0
- package/src/tool/subtitleSync/i18n/nl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pt.ts +241 -0
- package/src/tool/subtitleSync/i18n/ru.ts +241 -0
- package/src/tool/subtitleSync/i18n/sv.ts +241 -0
- package/src/tool/subtitleSync/i18n/tr.ts +241 -0
- package/src/tool/subtitleSync/i18n/zh.ts +241 -0
- package/src/tool/subtitleSync/index.ts +15 -7
- package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
- package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
- package/src/tool/timelapseCalculator/index.ts +16 -8
- package/src/tool/tvDistance/i18n/de.ts +223 -0
- package/src/tool/tvDistance/i18n/en.ts +1 -1
- package/src/tool/tvDistance/i18n/es.ts +1 -1
- package/src/tool/tvDistance/i18n/fr.ts +1 -1
- package/src/tool/tvDistance/i18n/id.ts +223 -0
- package/src/tool/tvDistance/i18n/it.ts +223 -0
- package/src/tool/tvDistance/i18n/ja.ts +223 -0
- package/src/tool/tvDistance/i18n/ko.ts +223 -0
- package/src/tool/tvDistance/i18n/nl.ts +223 -0
- package/src/tool/tvDistance/i18n/pl.ts +223 -0
- package/src/tool/tvDistance/i18n/pt.ts +223 -0
- package/src/tool/tvDistance/i18n/ru.ts +223 -0
- package/src/tool/tvDistance/i18n/sv.ts +223 -0
- package/src/tool/tvDistance/i18n/tr.ts +223 -0
- package/src/tool/tvDistance/i18n/zh.ts +223 -0
- package/src/tool/tvDistance/index.ts +15 -7
- package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/en.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/es.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/fr.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
- package/src/tool/videoFrameExtractor/index.ts +16 -8
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { TimelapseUI, TimelapseLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'timelapse-hyperlapse-calculator-intervals-china';
|
|
5
|
+
const title = '延时摄影与大范围延时摄影计算器:寻找完美拍摄间隔';
|
|
6
|
+
const description = '精确计算照片拍摄间隔、总时长以及拍摄所需的存储空间。摄影师必备的延时摄影工具。';
|
|
7
|
+
|
|
8
|
+
const ui: TimelapseUI = {
|
|
9
|
+
title: "延时摄影计算器",
|
|
10
|
+
paramsTitle: "参数设置",
|
|
11
|
+
eventDuration: "实际事件持续多久?",
|
|
12
|
+
hours: "小时",
|
|
13
|
+
minutes: "分钟",
|
|
14
|
+
videoDuration: "您想要的最终视频时长?",
|
|
15
|
+
seconds: "视频时长 (秒)",
|
|
16
|
+
fps: "FPS (帧率)",
|
|
17
|
+
resultsTitle: "计算结果",
|
|
18
|
+
intervalLabel: "请将您的快门线/间隔拍摄器设置为:",
|
|
19
|
+
secondsUnit: "秒",
|
|
20
|
+
totalPhotos: "照片总数",
|
|
21
|
+
speed: "倍速",
|
|
22
|
+
shutterSpeed: "快门速度",
|
|
23
|
+
storage: "容量占用 (RAW)",
|
|
24
|
+
rule180Info: "180° 快门法则建议将快门速度设置为拍摄间隔的一半,以获得流畅的动态模糊效果。",
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const faq: TimelapseLocaleContent['faq'] = [
|
|
28
|
+
{
|
|
29
|
+
question: "如何为我的延时摄影选择正确的拍摄间隔?",
|
|
30
|
+
answer: "这取决于您捕捉的运动速度。快速移动的云:2-3 秒;太阳或星星的移动:15-30 秒;植物生长或建筑施工:5-15 分钟。",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: "制作一分钟视频需要多少张照片?",
|
|
34
|
+
answer: "标准视频通常为每秒 24 或 30 帧 (fps)。对于一部 24fps 的一分钟视频,您恰好需要 1440 张照片(60 秒 * 24 张/秒)。",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
question: "什么是“闪烁”(Flicker) 以及如何避免?",
|
|
38
|
+
answer: "这是由于照片之间微小的曝光差异导致的令人不快的闪烁感。要避免它,请始终使用手动模式 (M)、固定白平衡,并优先使用带有手动光圈环的镜头。",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
question: "为什么快门速度很重要?",
|
|
42
|
+
answer: "为了使运动看起来流畅(180° 法则),快门速度应约为拍摄间隔的一半。例如,如果间隔为 2 秒,尝试以 1 秒的快门进行拍摄,以产生自然的动态模糊。",
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
const howTo: TimelapseLocaleContent['howTo'] = [
|
|
47
|
+
{
|
|
48
|
+
name: "定义最终视频时长",
|
|
49
|
+
text: "输入您希望生成的视频持续多少秒或多少分钟(例如,针对 Instagram 设置为 10 秒)。",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "选择输出 FPS",
|
|
53
|
+
text: "选择视频的流畅度:24(电影级)、30(网页标准)或 60(流畅慢动作)。",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "调整拍摄间隔",
|
|
57
|
+
text: "根据场景的运动速度,配置相机每隔多少秒触发一次快门。",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: "核对存储空间",
|
|
61
|
+
text: "计算器会告知您拍摄任务将占用多少 GB。在开始之前确保您的 SD 卡有足够的空间。",
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const bibliography: TimelapseLocaleContent['bibliography'] = [
|
|
66
|
+
{
|
|
67
|
+
name: "Timescapes Forum - Digital Timelapse Acquisition & Processing",
|
|
68
|
+
url: "https://timescapes.org/phpBB3/viewforum.php?f=4",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "Magic Lantern - Auto ETTR & Bulb Ramping Algorithms",
|
|
72
|
+
url: "https://wiki.magiclantern.fm/ettr",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "LRTimelapse - Visual Deflicker & Holy Grail Workflow",
|
|
76
|
+
url: "https://lrtimelapse.com/tutorial/advanced/",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "PhotoPills - Advanced Timelapse Calculator & NPF Rule",
|
|
80
|
+
url: "https://www.photopills.com/calculators/timelapse",
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
const seo: TimelapseLocaleContent['seo'] = [
|
|
85
|
+
{ type: 'title', text: '延时摄影与大范围延时摄影拍摄间隔权威指南', level: 2 },
|
|
86
|
+
{ type: 'paragraph', html: '业余快进视频与<strong>电影级延时摄影</strong>在数学上的区别仅在于一个因素:<strong>拍摄间隔</strong>。本计算器消除了不确定性,让您精准计划快门线拍摄任务。' },
|
|
87
|
+
|
|
88
|
+
{ type: 'title', text: '推荐拍摄间隔表(快速参考)', level: 3 },
|
|
89
|
+
{ type: 'paragraph', html: '使用此快速参考表,根据拍摄主体设置您的快门线。目标是捕捉足够的运动,使其可感知但又保持流畅。' },
|
|
90
|
+
{ type: 'table', headers: ['拍摄主体 / 场景', '建议间隔', '事件时长(建议最小拍摄时间)'], rows: [
|
|
91
|
+
['快云 / 风暴', '1 - 2 秒', '20 - 30 分钟'],
|
|
92
|
+
['城市交通 / 人群 (模糊效果)', '0.5 - 2 秒', '15 - 20 分钟'],
|
|
93
|
+
['日落 / 日出 (Holy Grail 圣杯拍摄)', '5 - 10 秒', '1.5 - 2.5 小时'],
|
|
94
|
+
['慢云 / 投影移动', '10 - 15 秒', '2 - 3 小时'],
|
|
95
|
+
['星星 / 银河 (天文)', '15 - 30 秒*', '3 - 5 小时'],
|
|
96
|
+
['建筑施工 / 植物生长', '5 - 15 分钟', '数天 / 数周']
|
|
97
|
+
]},
|
|
98
|
+
{ type: 'tip', title: '天文拍摄注記', html: '拍摄间隔通常受限于捕捉光线所需的曝光时间(500 法则) + 1 或 2 秒的存储写入缓冲时间。' },
|
|
99
|
+
|
|
100
|
+
{ type: 'title', text: '180° 快门法则(动态模糊)', level: 3 },
|
|
101
|
+
{ type: 'paragraph', html: '延时摄影中一个常见的错误是视频看起来“顿挫”或有频闪感。为了获得流畅的电影感,您需要 <strong>动态模糊 (Motion Blur)</strong>。' },
|
|
102
|
+
{ type: 'card', title: '核心法则', icon: 'mdi:information', html: '您的快门速度应该是拍摄间隔的一半。<br /><br /> <em>例如:</em>如果您每隔 <strong>4 秒</strong> 拍摄一次,您的曝光时间应为 <strong>2 秒</strong>。' },
|
|
103
|
+
|
|
104
|
+
{ type: 'title', text: '闪烁 (Flicker) 与手动光圈', level: 3 },
|
|
105
|
+
{ type: 'paragraph', html: '“闪烁”是由于每次拍摄之间光圈叶片收缩的微小差异导致的图像亮度抖动。' },
|
|
106
|
+
{ type: 'list', items: [
|
|
107
|
+
'<strong>镜头微松法 (Lens Twist):</strong> 在单反相机上稍微拧松镜头以断开电子触点,使光圈机械固定。',
|
|
108
|
+
'<strong>全手动设置:</strong> ISO、白平衡和对焦必须固定。切勿使用自动模式。',
|
|
109
|
+
'<strong>通过 RAW 拍摄:</strong> 这对于在后期修正曝光和色彩而又不破坏画质至关重要。'
|
|
110
|
+
]},
|
|
111
|
+
|
|
112
|
+
{ type: 'diagnostic', variant: 'success', title: '进阶技术:日夜转换 (The "Holy Grail")', icon: 'mdi:crown', badge: '专家技法', html: '“圣杯拍摄”是指昼夜之间(或反之)的平滑过渡。这是难度最高的技术挑战之一。' },
|
|
113
|
+
|
|
114
|
+
{ type: 'stats', columns: 3, items: [
|
|
115
|
+
{ label: 'Bulb Ramping', value: '渐变曝光', icon: 'mdi:brightness-6' },
|
|
116
|
+
{ label: 'Post-Pro', value: 'LRTimelapse 流程', icon: 'mdi:television-guide' },
|
|
117
|
+
{ label: 'Strategy', value: '夜间拍摄间隔', icon: 'mdi:weather-night' }
|
|
118
|
+
]},
|
|
119
|
+
|
|
120
|
+
{ type: 'title', text: '总结:极简力学的艺术', level: 3 },
|
|
121
|
+
{ type: 'paragraph', html: '掌握延时摄影从理解快门线背后的数学规律开始。不要让错误的间隔设置毁掉您的辛苦拍摄。' }
|
|
122
|
+
];
|
|
123
|
+
|
|
124
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
125
|
+
'@context': 'https://schema.org',
|
|
126
|
+
'@type': 'FAQPage',
|
|
127
|
+
mainEntity: faq.map((item) => ({
|
|
128
|
+
'@type': 'Question',
|
|
129
|
+
name: item.question,
|
|
130
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
131
|
+
})),
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
const howToSchema: WithContext<HowTo> = {
|
|
135
|
+
'@context': 'https://schema.org',
|
|
136
|
+
'@type': 'HowTo',
|
|
137
|
+
name: title,
|
|
138
|
+
description,
|
|
139
|
+
step: howTo.map((step) => ({
|
|
140
|
+
'@type': 'HowToStep',
|
|
141
|
+
name: step.name,
|
|
142
|
+
text: step.text,
|
|
143
|
+
})),
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
147
|
+
'@context': 'https://schema.org',
|
|
148
|
+
'@type': 'SoftwareApplication',
|
|
149
|
+
name: title,
|
|
150
|
+
description,
|
|
151
|
+
applicationCategory: 'UtilitiesApplication',
|
|
152
|
+
operatingSystem: 'Web',
|
|
153
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
154
|
+
inLanguage: 'zh',
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
export const content: TimelapseLocaleContent = {
|
|
158
|
+
slug,
|
|
159
|
+
title,
|
|
160
|
+
description,
|
|
161
|
+
ui,
|
|
162
|
+
seo,
|
|
163
|
+
faq,
|
|
164
|
+
faqTitle: '关于延时摄影制作的常见问题',
|
|
165
|
+
bibliography,
|
|
166
|
+
bibliographyTitle: '延时摄影理论与资源',
|
|
167
|
+
howTo,
|
|
168
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
169
|
+
};
|
|
@@ -25,20 +25,28 @@ export interface TimelapseUI {
|
|
|
25
25
|
|
|
26
26
|
export type TimelapseLocaleContent = ToolLocaleContent<TimelapseUI>;
|
|
27
27
|
|
|
28
|
-
import { content as es } from './i18n/es';
|
|
29
|
-
import { content as en } from './i18n/en';
|
|
30
|
-
import { content as fr } from './i18n/fr';
|
|
31
|
-
|
|
32
28
|
export const timelapseCalculator: AudiovisualToolEntry<TimelapseUI> = {
|
|
33
|
-
id: 'timelapse
|
|
29
|
+
id: 'calculadora-timelapse',
|
|
34
30
|
icons: {
|
|
35
31
|
bg: 'mdi:camera-timer',
|
|
36
32
|
fg: 'mdi:clock-fast',
|
|
37
33
|
},
|
|
38
34
|
i18n: {
|
|
39
|
-
es: async () => es as unknown as TimelapseLocaleContent,
|
|
40
|
-
en: async () => en as unknown as TimelapseLocaleContent,
|
|
41
|
-
fr: async () => fr as unknown as TimelapseLocaleContent,
|
|
35
|
+
es: async () => (await import('./i18n/es')).content as unknown as TimelapseLocaleContent,
|
|
36
|
+
en: async () => (await import('./i18n/en')).content as unknown as TimelapseLocaleContent,
|
|
37
|
+
fr: async () => (await import('./i18n/fr')).content as unknown as TimelapseLocaleContent,
|
|
38
|
+
de: async () => (await import('./i18n/de')).content as unknown as TimelapseLocaleContent,
|
|
39
|
+
it: async () => (await import('./i18n/it')).content as unknown as TimelapseLocaleContent,
|
|
40
|
+
pt: async () => (await import('./i18n/pt')).content as unknown as TimelapseLocaleContent,
|
|
41
|
+
id: async () => (await import('./i18n/id')).content as unknown as TimelapseLocaleContent,
|
|
42
|
+
ja: async () => (await import('./i18n/ja')).content as unknown as TimelapseLocaleContent,
|
|
43
|
+
ko: async () => (await import('./i18n/ko')).content as unknown as TimelapseLocaleContent,
|
|
44
|
+
nl: async () => (await import('./i18n/nl')).content as unknown as TimelapseLocaleContent,
|
|
45
|
+
pl: async () => (await import('./i18n/pl')).content as unknown as TimelapseLocaleContent,
|
|
46
|
+
ru: async () => (await import('./i18n/ru')).content as unknown as TimelapseLocaleContent,
|
|
47
|
+
sv: async () => (await import('./i18n/sv')).content as unknown as TimelapseLocaleContent,
|
|
48
|
+
tr: async () => (await import('./i18n/tr')).content as unknown as TimelapseLocaleContent,
|
|
49
|
+
zh: async () => (await import('./i18n/zh')).content as unknown as TimelapseLocaleContent,
|
|
42
50
|
},
|
|
43
51
|
};
|
|
44
52
|
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { TvDistanceUI, TvDistanceLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'tv-sitzabstand-rechner-thx-4k-optimaler-bildschirm';
|
|
5
|
+
const title = 'TV Abstandsrechner: THX und 4K Optimaler Abstand';
|
|
6
|
+
const description = 'Berechnen Sie den idealen Sitzabstand für Ihren Fernseher basierend auf Größe und Auflösung. Optimieren Sie Ihr Heimkino mit THX- und SMPTE-Standards.';
|
|
7
|
+
|
|
8
|
+
const ui: TvDistanceUI = {
|
|
9
|
+
specTitle: "Spezifikationen",
|
|
10
|
+
diagonalLabel: "Diagonale",
|
|
11
|
+
resolutionLabel: "Auflösung",
|
|
12
|
+
thxRecommendation: "THX-Empfehlung",
|
|
13
|
+
thxDescription: "THX empfiehlt einen Abstand, der einen Betrachtungswinkel von 40 Grad abdeckt, für ein immersives Kinoerlebnis.",
|
|
14
|
+
simulationBadge: "Echtzeit-Simulation",
|
|
15
|
+
tvWidthLabel: "cm breit",
|
|
16
|
+
userLocationLabel: "Ihr Standort",
|
|
17
|
+
minLimitLabel: "Mindestabstand",
|
|
18
|
+
optimalLimitLabel: "Optimaler Abstand",
|
|
19
|
+
maxLimitLabel: "Maximalabstand",
|
|
20
|
+
unitMeters: "m",
|
|
21
|
+
unitCm: "cm"
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const faq: TvDistanceLocaleContent['faq'] = [
|
|
25
|
+
{
|
|
26
|
+
question: "Warum spielt die Auflösung bei der Abstandsberechnung eine Rolle?",
|
|
27
|
+
answer: "Bei höheren Auflösungen (wie 4K oder 8K) sind die Pixel kleiner. Dadurch können Sie näher am Bildschirm sitzen, ohne die Pixelstruktur wahrzunehmen, was die Immersion erhöht.",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
question: "Was ist der 40-Grad-Betrachtungswinkel?",
|
|
31
|
+
answer: "Dies ist der von THX empfohlene Standard, bei dem der Bildschirm einen großen Teil Ihres peripheren Sichtfeldes einnimmt, ähnlich wie in einem professionellen Kinosaal.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: "Kann ich weiter weg sitzen als empfohlen?",
|
|
35
|
+
answer: "Ja, aber Sie verlieren den Vorteil hoher Auflösungen. Wenn Sie zu weit von einem 4K-Fernseher entfernt sitzen, kann Ihr Auge die zusätzlichen Details nicht mehr unterscheiden.",
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: TvDistanceLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: "Zollgröße angeben",
|
|
42
|
+
text: "Bewegen Sie den Schieberegler, um die Größe Ihres aktuellen oder geplanten Fernsehers auszuwählen.",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "Auflösung wählen",
|
|
46
|
+
text: "Wählen Sie zwischen 1080p, 4K oder 8K, um die Grenzen der Sehschärfe anzupassen.",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Simulation betrachten",
|
|
50
|
+
text: "Beobachten Sie im Diagramm, wie sich das Größenverhältnis zwischen Ihnen und dem Bildschirm ändert.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Sofa ausrichten",
|
|
54
|
+
text: "Platzieren Sie Ihren Sitzplatz innerhalb des Bereichs 'Optimaler Abstand', um die kinoähnliche Immersion zu maximieren.",
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
const bibliography: TvDistanceLocaleContent['bibliography'] = [
|
|
59
|
+
{
|
|
60
|
+
name: "THX - HDTV Set Up Guide",
|
|
61
|
+
url: "https://www.thx.com/questions/what-is-the-best-viewing-distance-for-my-tv/",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: "SMPTE - Standards Documentation",
|
|
65
|
+
url: "https://www.smpte.org/",
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const seo: TvDistanceLocaleContent['seo'] = [
|
|
70
|
+
{
|
|
71
|
+
type: 'summary',
|
|
72
|
+
title: 'Optimaler TV Abstand nach Auflösung und Größe',
|
|
73
|
+
items: [
|
|
74
|
+
'THX-Standards (40°) für immersives Kinoerlebnis',
|
|
75
|
+
'Berechnungen für 1080p, 4K und 8K mit höchster Präzision',
|
|
76
|
+
'Echtzeit-Visualisierung Ihres Setups',
|
|
77
|
+
'Vermeidung von Augenermüdung und maximale Immersion'
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{ type: 'title', text: 'Wissenschaft der Immersion: Optimaler TV Abstand', level: 2 },
|
|
81
|
+
{ type: 'paragraph', html: 'Es geht nicht nur um Komfort, sondern um die menschliche Physiologie des Sehens. Wenn Sie zu weit von einem 4K-Bildschirm entfernt sitzen, verschwenden Sie Geld für Pixel, die Ihre Sehkraft nicht nutzen kann. Sitzen Sie zu nah, führt dies zu Augenermüdung.' },
|
|
82
|
+
|
|
83
|
+
{ type: 'stats', items: [
|
|
84
|
+
{ value: '40°', label: 'Idealer THX-Winkel', icon: 'mdi:eye' },
|
|
85
|
+
{ value: '100%', label: 'Genutzte Pixel', icon: 'mdi:video-high-definition' },
|
|
86
|
+
{ value: 'Null', label: 'Sehstress', icon: 'mdi:heart-pulse' }
|
|
87
|
+
], columns: 3 },
|
|
88
|
+
|
|
89
|
+
{ type: 'title', text: 'Zwei Profi Standards: THX vs. SMPTE', level: 3 },
|
|
90
|
+
{ type: 'paragraph', html: 'Es gibt zwei Hauptinstanzen in der audiovisuellen Industrie, die festlegen, wie Sie Ihr Seherlebnis optimieren können:' },
|
|
91
|
+
{ type: 'comparative', items: [
|
|
92
|
+
{
|
|
93
|
+
title: 'THX Standard',
|
|
94
|
+
description: '40° Betrachtungswinkel - Immersiver',
|
|
95
|
+
icon: 'mdi:filmstrip',
|
|
96
|
+
points: [
|
|
97
|
+
'Bildschirm füllt mehr vom peripheren Sichtfeld aus',
|
|
98
|
+
'Immersives Kinoerlebnis',
|
|
99
|
+
'Ideal für Actionfilme und Live-Sport',
|
|
100
|
+
'Erfordert mehr Platz im Raum'
|
|
101
|
+
],
|
|
102
|
+
highlight: true
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
title: 'SMPTE Standard',
|
|
106
|
+
description: '30° Betrachtungswinkel - Entspannter',
|
|
107
|
+
icon: 'mdi:television',
|
|
108
|
+
points: [
|
|
109
|
+
'Komfortablerer Sitzabstand',
|
|
110
|
+
'Konservative Profi-Empfehlung',
|
|
111
|
+
'Ideal für gemischte Inhalte (News, Serien)',
|
|
112
|
+
'Besser für kleinere Räume'
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
], columns: 2 },
|
|
116
|
+
|
|
117
|
+
{ type: 'title', text: 'Wie die Auflösung die Gleichung verändert', level: 3 },
|
|
118
|
+
{ type: 'table', headers: ['Auflösung', '55" TV Größe', 'Mindestabstand (Pixel unsichtbar)', 'Optimaler THX-Abstand'], rows: [
|
|
119
|
+
['1080p (Full HD)', '55 Zoll', '2,0 m', '2,3 m'],
|
|
120
|
+
['4K (Ultra HD)', '55 Zoll', '1,2 m', '1,5 m'],
|
|
121
|
+
['8K', '55 Zoll', '0,8 m', '1,0 m']
|
|
122
|
+
] },
|
|
123
|
+
|
|
124
|
+
{ type: 'paragraph', html: 'Wie Sie sehen, ermöglicht eine höhere Auflösung ein klares Bild aus kürzerer Entfernung. Ein 4K-TV entfaltet sein Potenzial ab 1,2 Metern, 1080p benötigt mindestens 2 Meter.' },
|
|
125
|
+
|
|
126
|
+
{ type: 'card', title: 'Grenze der menschlichen Sehschärfe', html: 'Das menschliche Auge hat eine begrenzte Auflösungsfähigkeit. Ab einer gewissen Entfernung können Sie keine weiteren Details mehr unterscheiden, selbst wenn der Bildschirm 8K hat. Unsere Berechnungen platzieren Sie genau in der "optimalen Zone".' },
|
|
127
|
+
|
|
128
|
+
{ type: 'diagnostic', variant: 'info', title: 'Augenermüdung und Abstand', icon: 'mdi:information', badge: 'Augengesundheit', html: 'Zu geringer Abstand führt zu Ermüdung, da die Augen ständig extreme Winkel ausgleichen müssen. Zu großer Abstand führt zu Anstrengung beim Erkennen von Details. Unser Rechner findet den "Sweet Spot" (40° für THX).' },
|
|
129
|
+
|
|
130
|
+
{ type: 'proscons', items: [
|
|
131
|
+
{
|
|
132
|
+
pro: 'THX 40° schafft echtes Kino-Feeling - wie im professionellen Kinosaal',
|
|
133
|
+
con: 'Erfordert mehr verfügbaren Platz im Zimmer'
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
pro: '4K erlaubt kürzeren Abstand als 1080p - praktisch in kleinen Räumen',
|
|
137
|
+
con: 'Man muss nah genug sitzen, um die zusätzlichen Pixel zu nutzen'
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
pro: 'Vermeidung von Augenmüdigkeit durch korrekte Positionierung',
|
|
141
|
+
con: 'Die meisten Wohnzimmer entsprechen NICHT diesen Standards'
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
pro: 'Validierung der aktuellen TV-Position möglich',
|
|
145
|
+
con: 'Bei Fehlern müssen Möbel gerückt werden'
|
|
146
|
+
}
|
|
147
|
+
], proTitle: 'Vorteile', conTitle: 'Einschränkungen' },
|
|
148
|
+
|
|
149
|
+
{ type: 'glossary', items: [
|
|
150
|
+
{
|
|
151
|
+
term: 'Betrachtungswinkel (in Grad)',
|
|
152
|
+
definition: 'Der visuelle Winkel, den der Bildschirm von Ihrer Position aus abdeckt. 40° = sehr immersiv; 20° = wenig immersiv.'
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
term: 'THX (Tomlinson Holman Experiment)',
|
|
156
|
+
definition: 'Qualitätszertifizierung für Film und Ton, gegründet von Lucasfilm. 40° ist die primäre Empfehlung.'
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
term: 'SMPTE (Society of Motion Picture Technical Engineers)',
|
|
160
|
+
definition: 'Fachorganisation für Standards in Film und Video. Empfiehlt 30° als konservativen Profi-Abstand.'
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
term: 'Menschliche Sehschärfe',
|
|
164
|
+
definition: 'Fähigkeit des Auges, feine Details zu unterscheiden. Einzelne Pixel werden ab einer bestimmten Distanz unsichtbar.'
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
term: '4K (Ultra HD)',
|
|
168
|
+
definition: 'Auflösung von ca. 3840x2160 Pixeln. 4-mal mehr Pixel als 1080p.'
|
|
169
|
+
}
|
|
170
|
+
] },
|
|
171
|
+
|
|
172
|
+
{ type: 'message', title: 'Professionelle Raumoptimierung', ariaLabel: 'Info zu TV-Setup-Standards', html: 'Kinos geben Millionen aus, um Abstand und Winkel perfekt abzustimmen. Unser Rechner bringt diese Prinzipien zu Ihnen nach Hause. Es ist kein Luxus, sondern eine Investition in Sehkomfort.' },
|
|
173
|
+
|
|
174
|
+
{ type: 'title', text: 'Heimkino professionell einrichten', level: 3 },
|
|
175
|
+
{ type: 'paragraph', html: 'Der Abstand ist GENAUSO wichtig wie Größe und Auflösung. Folgen Sie diesen Standards, um Ihr Wohnzimmer in einen echten Kinosaal zu verwandeln.' }
|
|
176
|
+
];
|
|
177
|
+
|
|
178
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
179
|
+
'@context': 'https://schema.org',
|
|
180
|
+
'@type': 'FAQPage',
|
|
181
|
+
mainEntity: faq.map((item) => ({
|
|
182
|
+
'@type': 'Question',
|
|
183
|
+
name: item.question,
|
|
184
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
185
|
+
})),
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
const howToSchema: WithContext<HowTo> = {
|
|
189
|
+
'@context': 'https://schema.org',
|
|
190
|
+
'@type': 'HowTo',
|
|
191
|
+
name: title,
|
|
192
|
+
description,
|
|
193
|
+
step: howTo.map((step) => ({
|
|
194
|
+
'@type': 'HowToStep',
|
|
195
|
+
name: step.name,
|
|
196
|
+
text: step.text,
|
|
197
|
+
})),
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
201
|
+
'@context': 'https://schema.org',
|
|
202
|
+
'@type': 'SoftwareApplication',
|
|
203
|
+
name: title,
|
|
204
|
+
description,
|
|
205
|
+
applicationCategory: 'UtilitiesApplication',
|
|
206
|
+
operatingSystem: 'Web',
|
|
207
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
208
|
+
inLanguage: 'de',
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
export const content: TvDistanceLocaleContent = {
|
|
212
|
+
slug,
|
|
213
|
+
title,
|
|
214
|
+
description,
|
|
215
|
+
ui,
|
|
216
|
+
seo,
|
|
217
|
+
faq,
|
|
218
|
+
faqTitle: 'Häufig gestellte Fragen zum TV Sitzabstand',
|
|
219
|
+
bibliography,
|
|
220
|
+
bibliographyTitle: 'Profi Standards für die Fernseher Einrichtung',
|
|
221
|
+
howTo,
|
|
222
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
223
|
+
};
|
|
@@ -2,7 +2,7 @@ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dt
|
|
|
2
2
|
import type { TvDistanceUI, TvDistanceLocaleContent } from '../index';
|
|
3
3
|
|
|
4
4
|
const slug = 'tv-viewing-distance-calculator-thx-4k-optimal-screen';
|
|
5
|
-
const title = 'TV Distance Calculator
|
|
5
|
+
const title = 'TV Distance Calculator: THX and 4K Optimal Screen';
|
|
6
6
|
const description = 'Calculate the ideal distance to watch your television based on its size and resolution. Optimize your Home Cinema with THX and SMPTE standards.';
|
|
7
7
|
|
|
8
8
|
const ui: TvDistanceUI = {
|
|
@@ -2,7 +2,7 @@ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dt
|
|
|
2
2
|
import type { TvDistanceUI, TvDistanceLocaleContent } from '../index';
|
|
3
3
|
|
|
4
4
|
const slug = 'distancia-tv';
|
|
5
|
-
const title = 'Calculadora de Distancia TV
|
|
5
|
+
const title = 'Calculadora de Distancia TV: Pantalla Óptima THX y 4K';
|
|
6
6
|
const description = 'Calcula la distancia ideal para ver tu televisor según su tamaño y resolución. Optimiza tu Home Cinema con los estándares THX y SMPTE.';
|
|
7
7
|
|
|
8
8
|
const ui: TvDistanceUI = {
|
|
@@ -2,7 +2,7 @@ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dt
|
|
|
2
2
|
import type { TvDistanceUI, TvDistanceLocaleContent } from '../index';
|
|
3
3
|
|
|
4
4
|
const slug = 'calculatrice-distance-tv-ecran-optimal-thx-4k';
|
|
5
|
-
const title = 'Calculatrice de Distance TV
|
|
5
|
+
const title = 'Calculatrice de Distance TV: Écran Optimal THX et 4K';
|
|
6
6
|
const description = 'Calculez la distance idéale pour regarder votre téléviseur en fonction de sa taille et de sa résolution. Optimisez votre Home Cinéma avec les standards THX et SMPTE.';
|
|
7
7
|
|
|
8
8
|
const ui: TvDistanceUI = {
|