Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d6b36b49fa | ||
|
|
49f4ac5ca9 | ||
|
|
b43522263e | ||
|
|
d716c31af5 | ||
|
|
ea2c3dc289 | ||
|
|
3d47813f12 | ||
|
|
c8a4958883 | ||
|
|
dee47af58f | ||
|
|
2c625d72fa | ||
|
|
ede78ea7cf | ||
|
|
f1c180ddeb | ||
|
|
5255061db3 | ||
|
|
8aba96a9bd | ||
|
|
6d638b3983 | ||
|
|
85c6eddcf0 | ||
|
|
d554e4b6f7 | ||
|
|
596a3d24f3 | ||
|
|
361c0b5eba | ||
|
|
8a5910b530 | ||
|
|
d3fbe7c288 | ||
|
|
823c7b0b6f | ||
|
|
b0c6005a2e | ||
|
|
f682321d25 | ||
|
|
70fd29429e | ||
|
|
e528465a6e | ||
|
|
a0175e845f | ||
|
|
2f9e0d49ee | ||
|
|
5dbac4897b | ||
|
|
f160d8eb61 | ||
|
|
e225966202 | ||
|
|
aa4d8d0211 | ||
|
|
ad7022b599 | ||
|
|
0eb07c22f2 | ||
|
|
72a314590c | ||
|
|
ab5ab9b85a | ||
|
|
f83e8a01fc | ||
|
|
7330c0224c | ||
|
|
0fac6ba017 | ||
|
|
e34e186085 | ||
|
|
a754f6181d | ||
|
|
f656116ac6 | ||
|
|
9728032922 | ||
|
|
a6188f0fe2 | ||
|
|
9b054d195a | ||
|
|
876989a572 | ||
|
|
7379df3f00 | ||
|
|
7909571e70 | ||
|
|
f020c30f56 | ||
|
|
0531717000 | ||
|
|
5eff6bccd9 | ||
|
|
83322860e0 | ||
|
|
40b76e1b74 | ||
|
|
3b3b469b9b | ||
|
|
1aeb2a93f8 | ||
|
|
893f77ba08 | ||
|
|
2cb73141fb | ||
|
|
93a517eaf8 | ||
|
|
d0f6d643a4 | ||
|
|
a989de98e5 | ||
|
|
7410a5be98 | ||
|
|
2c5ba00521 | ||
|
|
2189a41334 | ||
|
|
112256ddd7 | ||
|
|
42d43dfd15 | ||
|
|
ffb74b9717 | ||
|
|
c3f092dc2a | ||
|
|
e8d721f92f | ||
|
|
3f4ceefbc7 | ||
|
|
fc978e9d85 | ||
|
|
4c12972101 | ||
|
|
ddbb580fca | ||
|
|
92348f004d | ||
|
|
7558d98116 | ||
|
|
a5cda09e3c | ||
|
|
2b934ab988 | ||
|
|
3741f876d5 | ||
|
|
9c623b7fd7 | ||
|
|
c568076b6b | ||
|
|
1ba6898705 | ||
|
|
c1f34caa2e | ||
|
|
e85f14e1b5 | ||
|
|
c46a8b86f7 | ||
|
|
8bcc020627 | ||
|
|
e690af2de4 | ||
|
|
1ec4719806 | ||
|
|
31eacefa97 | ||
|
|
ddac5fd0f2 | ||
|
|
d50e22ea9b | ||
|
|
887792c853 | ||
|
|
642a2ac1a9 | ||
|
|
59f7a88e51 | ||
|
|
8c9e1e3446 | ||
|
|
a043a55b38 | ||
|
|
fd40fa71f6 | ||
|
|
a3889236be | ||
|
|
31bd26a813 | ||
|
|
c964f8e0fc | ||
|
|
ae682b0525 | ||
|
|
89a3b02ff5 | ||
|
|
0aeb1262db | ||
|
|
737b667c1b | ||
|
|
a6d144d555 | ||
|
|
0c1e8f0305 | ||
|
|
a18152b483 | ||
|
|
2f51e3d546 | ||
|
|
d540b7f32e | ||
|
|
de9005cf20 | ||
|
|
7ff42596ef | ||
|
|
e069101c99 | ||
|
|
c1acf27cd0 | ||
|
|
62ce58330e | ||
|
|
b5148d5f2f | ||
|
|
1a7cc79bb6 | ||
|
|
a1167f64e1 | ||
|
|
25ed8303f2 | ||
|
|
68c2c4058b | ||
|
|
628cc0633b | ||
|
|
8b862abb40 | ||
|
|
3775f5972b | ||
|
|
9e3389f8c0 | ||
|
|
e30aa833db | ||
|
|
f07ea0796a | ||
|
|
3c7d76954e | ||
|
|
fd51264bb8 | ||
|
|
33bb679046 | ||
|
|
d88a992efb | ||
|
|
194c65778b | ||
|
|
481d8fefbb | ||
|
|
611c6eb6f0 | ||
|
|
af9f9b3263 | ||
|
|
b78ff00d3a | ||
|
|
316f798709 | ||
|
|
8a5c96f8bf | ||
|
|
8b8ac80d72 | ||
|
|
4181109ec6 | ||
|
|
9e83d738b6 | ||
|
|
955dbc0ac2 | ||
|
|
13ffb722a1 | ||
|
|
c9e8d891e1 | ||
|
|
a39a64b3b1 | ||
|
|
145d6b7a96 | ||
|
|
d73e1efaf1 | ||
|
|
f74a2633b3 | ||
|
|
2df5d7dc6d | ||
|
|
185830e7a1 | ||
|
|
a01a587ca0 | ||
|
|
58c16a737c | ||
|
|
0d7725aabb | ||
|
|
0ed7f87794 | ||
|
|
26fba8e2a6 | ||
|
|
fa3c70e99f | ||
|
|
c366813c12 | ||
|
|
22af442720 | ||
|
|
3c4e4845e3 | ||
|
|
d8b4479f5d | ||
|
|
288e29af3a | ||
|
|
b2280d8b58 | ||
|
|
b2278c91b8 | ||
|
|
d27f43adfe | ||
|
|
9d31e8d6e0 | ||
|
|
c9cafbb55f | ||
|
|
21d4a50c54 | ||
|
|
c3e5afe4d3 | ||
|
|
703f881019 | ||
|
|
8fa763b9c7 | ||
|
|
9b723947e6 | ||
|
|
277dc9129d | ||
|
|
66700e0dff | ||
|
|
f8d0bae5d5 | ||
|
|
7efa43d5d5 | ||
|
|
7ce17f90c4 | ||
|
|
3e97b05a73 | ||
|
|
67fd787128 | ||
|
|
e5753e8f82 | ||
|
|
526096bef3 | ||
|
|
e9aadad873 | ||
|
|
992803e10c | ||
|
|
e437cb7a84 | ||
|
|
91c3370fdd | ||
|
|
5e05f9e4c2 | ||
|
|
7bcc296fc2 | ||
|
|
5ff4a8f70b | ||
|
|
09d1c2ed08 | ||
|
|
57f22a2fcb | ||
|
|
b26b522d8b | ||
|
|
611fd68575 | ||
|
|
49337a3e3f | ||
|
|
f2ca05758c | ||
|
|
de8d7ec999 | ||
|
|
c84acbc39b | ||
|
|
73695722cf | ||
|
|
38d87bf213 | ||
|
|
9b153ff0dd | ||
|
|
f840edf899 | ||
|
|
77641f4aa3 | ||
|
|
54b64418be | ||
|
|
b195d93e63 | ||
|
|
bd9d0a436c | ||
|
|
13e56aed01 | ||
|
|
5508660c19 | ||
|
|
cba10856da | ||
|
|
755c6dc36a | ||
|
|
632e88ae0b | ||
|
|
8087a93534 | ||
|
|
43fb02c4cc | ||
|
|
235b235245 | ||
|
|
99dce8c673 | ||
|
|
3761ff4979 | ||
|
|
2dfa895ba2 | ||
|
|
2e1c5fdc18 | ||
|
|
de70e41590 | ||
|
|
659b4e965a | ||
|
|
14c1240671 | ||
|
|
617ac9e893 | ||
|
|
98b7f33fab | ||
|
|
1502212085 | ||
|
|
7585f9895c | ||
|
|
def8c6df46 | ||
|
|
8ea10853ad | ||
|
|
9cefead73e | ||
|
|
2ffdaa6175 | ||
|
|
22765b27dd | ||
|
|
2979fc49bc | ||
|
|
bc838bf0f2 | ||
|
|
8a1546f9dd | ||
|
|
4dcdda0089 | ||
|
|
544eaa0ecc | ||
|
|
58e18c1d60 | ||
|
|
5667235d8d | ||
|
|
ef66416389 | ||
|
|
763d5c0788 | ||
|
|
fce810092f | ||
|
|
e141163350 | ||
|
|
e34d09a99c | ||
|
|
facf8876b5 | ||
|
|
227268ecda | ||
|
|
b53deb5ad8 | ||
|
|
3fe822253a | ||
|
|
06782590b7 | ||
|
|
e7c23f359a | ||
|
|
2ac14e96b9 | ||
|
|
46fbccd267 | ||
|
|
93d049e18c | ||
|
|
79d4ef3d36 | ||
|
|
744a6496c7 | ||
|
|
32e73ab588 | ||
|
|
208096f3c7 | ||
|
|
e2d016c28f | ||
|
|
6799b6b337 | ||
|
|
5486bc31d6 | ||
|
|
4f4b52e423 | ||
|
|
f47138112a | ||
|
|
cc6151d0bd | ||
|
|
f2b755ef35 | ||
|
|
6e302d4b76 | ||
|
|
6f2b9bd6d0 | ||
|
|
fd0bcf4b5c | ||
|
|
4310fdbc21 | ||
|
|
b5a71650ea | ||
|
|
ac6a6c8136 | ||
|
|
c551231edc | ||
|
|
352c027bb5 | ||
|
|
db66272555 | ||
|
|
dd8ba4c64d | ||
|
|
9cb8c56e4d | ||
|
|
c2ea7d0ce0 | ||
|
|
7d728556c8 | ||
|
|
ec54a0519d | ||
|
|
526f6ea8ca | ||
|
|
810266c44e | ||
|
|
bf342975db | ||
|
|
3fc4b99841 | ||
|
|
c4b4d4e7a8 | ||
|
|
5001490210 | ||
|
|
7397a0d18d | ||
|
|
28a487777f | ||
|
|
f95384b41a | ||
|
|
d05ec2095d | ||
|
|
7ca0cd5529 | ||
|
|
78d042b33b | ||
|
|
be507d05e9 | ||
|
|
9c5b1cdc4a | ||
|
|
64015fcec2 | ||
|
|
cf5099f259 | ||
|
|
e4f815e24f | ||
|
|
f4ade95551 | ||
|
|
ec6b439d39 | ||
|
|
07a58c0a38 | ||
|
|
178c044070 | ||
|
|
c5ed370c8b | ||
|
|
8c7edbb83a | ||
|
|
cbc8b7a808 | ||
|
|
a87d2df05e | ||
|
|
14de0c6a01 | ||
|
|
3b63e1a59b | ||
|
|
17262ff63d | ||
|
|
a891ccd7d1 | ||
|
|
26fedfa3d1 | ||
|
|
b60326491e | ||
|
|
9611bc8a0c | ||
|
|
fc3abd7d1d | ||
|
|
57a14f63ac | ||
|
|
99ba0f6131 | ||
|
|
d4c67a8a7d | ||
|
|
69d97f4d77 | ||
|
|
e862f8d56c | ||
|
|
8549661327 | ||
|
|
3a3c21e059 | ||
|
|
49aedb0026 | ||
|
|
b86fb446b0 | ||
|
|
b292b769bd | ||
|
|
4539a46a82 | ||
|
|
df375808d9 | ||
|
|
7e58717e07 | ||
|
|
be88f55657 | ||
|
|
9aae64d5cf | ||
|
|
c9e45567ab | ||
|
|
3d37b5e056 | ||
|
|
e0ddedaff5 | ||
|
|
65fcc3d128 | ||
|
|
9a68d13e1c | ||
|
|
c134be8c75 | ||
|
|
e490c65f99 | ||
|
|
429753aa6e | ||
|
|
b46dacd353 | ||
|
|
59d19b67c7 | ||
|
|
07edda2e22 | ||
|
|
d08ceb3855 | ||
|
|
f8abfabe17 | ||
|
|
7014cc8e4d | ||
|
|
e4e05eb4b3 | ||
|
|
8e995dd2b6 | ||
|
|
a9bdf0729f | ||
|
|
b0a5c2df1c | ||
|
|
87e7b87a1f | ||
|
|
6972cd49af | ||
|
|
13bccc4cbf | ||
|
|
a58e0139b5 | ||
|
|
aaeaf87bc2 | ||
|
|
b22906e0fa | ||
|
|
f08c4767c2 | ||
|
|
4a9d98ac4d | ||
|
|
c4c89ac2b2 | ||
|
|
39a16f8c36 | ||
|
|
f1310a3148 | ||
|
|
0ed695a899 | ||
|
|
9e90028be6 | ||
|
|
03fcc89abf | ||
|
|
92393357c7 | ||
|
|
225eea4158 | ||
|
|
9697a61526 | ||
|
|
6ad6e8fddc | ||
|
|
c709b5d7db | ||
|
|
1191909961 | ||
|
|
54882b4e25 | ||
|
|
2a5913c658 | ||
|
|
b3e3d2fe62 | ||
|
|
d43057c8af | ||
|
|
cc39bed24d | ||
|
|
146a8c0256 | ||
|
|
c0321f660c | ||
|
|
3b365b7933 | ||
|
|
7db6cb7ef4 | ||
|
|
fbe6df0939 | ||
|
|
b88e3be378 | ||
|
|
4f10486987 | ||
|
|
b284381534 | ||
|
|
5471464dae | ||
|
|
0f388c5173 | ||
|
|
8898ab0078 | ||
|
|
56df5ad1e7 | ||
|
|
3a3246ee3f | ||
|
|
b4500e701f | ||
|
|
5defc28505 | ||
|
|
30a0dff4e8 | ||
|
|
4bc97c5d37 | ||
|
|
1684c2c7e6 | ||
|
|
d43e4540fb | ||
|
|
08a29d5cb0 | ||
|
|
da5e4de861 | ||
|
|
fccfd63022 | ||
|
|
a65596de3e | ||
|
|
060bed6e72 | ||
|
|
67565203bb | ||
|
|
3bf4db8529 | ||
|
|
5a6a92806c | ||
|
|
ce677ef602 | ||
|
|
222f786b88 | ||
|
|
4420bcaf9b | ||
|
|
32361e62f5 | ||
|
|
62c2e42940 | ||
|
|
e79d96f8f8 | ||
|
|
c9040e5eec | ||
|
|
1de2d2aaed | ||
|
|
81ba45adf9 | ||
|
|
018b556d6b | ||
|
|
5bd2de4179 | ||
|
|
fd836ec10f | ||
|
|
12047d90ef | ||
|
|
0616d944c5 | ||
|
|
7976cc42fe | ||
|
|
36f295aebb | ||
|
|
97b5d52a89 | ||
|
|
c0ed71881b | ||
|
|
7b0dd9618d | ||
|
|
ad382b1569 | ||
|
|
a56553c6f6 | ||
|
|
292516ab89 | ||
|
|
f7f4899926 | ||
|
|
936617707f | ||
|
|
aac95549cb | ||
|
|
8833c310e2 | ||
|
|
81e107d7ef | ||
|
|
fe88ab30d3 | ||
|
|
d9cad3ef85 | ||
|
|
d9f23c40c6 | ||
|
|
6c2c2529ce | ||
|
|
7bb8c3d0e5 | ||
|
|
17f79d0b22 | ||
|
|
4d66a8538d | ||
|
|
5e9057f060 | ||
|
|
b80a30bcc0 | ||
|
|
a2b02f44cc | ||
|
|
646e7401b7 | ||
|
|
fd8e763ae6 | ||
|
|
2d57f6d6d1 | ||
|
|
5d97a622bb | ||
|
|
8398305d6a | ||
|
|
c7a60b1084 | ||
|
|
80085a1671 | ||
|
|
9b10020ba0 | ||
|
|
946ca45202 | ||
|
|
030913dc48 | ||
|
|
eaeb74ef7a | ||
|
|
54ad5c04bb | ||
|
|
96839016ba | ||
|
|
bc0df8e60c | ||
|
|
598ec8410d | ||
|
|
fedbf3b6f7 | ||
|
|
dabfb2b8c8 | ||
|
|
814a02d14a | ||
|
|
21228216f9 | ||
|
|
548334eb0b | ||
|
|
8e9ff63493 | ||
|
|
7d01ce5506 | ||
|
|
fa0f049a4e | ||
|
|
a3cdd42920 | ||
|
|
1101ce0ba9 | ||
|
|
aaa5934790 | ||
|
|
fc37573482 | ||
|
|
bc778a4d07 | ||
|
|
a35eeab85b | ||
|
|
e0ec28a2a8 | ||
|
|
58123a902c | ||
|
|
33eb4c14ae | ||
|
|
7edde5ce61 | ||
|
|
f7df500186 | ||
|
|
ef3e0dfe56 | ||
|
|
40f4121c7d | ||
|
|
3df69608d4 | ||
|
|
0d3afc0e44 | ||
|
|
529f949470 | ||
|
|
31367d839e | ||
|
|
48269aa553 | ||
|
|
92cd112aa2 | ||
|
|
ae3ffc8105 | ||
|
|
4ddc9494aa | ||
|
|
2684c9f229 | ||
|
|
b3208934f4 | ||
|
|
c8cec10869 |
No files matched your search
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"presets": [
|
||||
[
|
||||
"@babel/env",
|
||||
{
|
||||
"modules": false
|
||||
}
|
||||
]
|
||||
],
|
||||
"plugins": [
|
||||
"@babel/plugin-external-helpers",
|
||||
"@babel/plugin-transform-runtime"
|
||||
]
|
||||
}
|
||||
@@ -1,36 +1,22 @@
|
||||
{
|
||||
"parser": "@babel/eslint-parser",
|
||||
"extends": ["standard", "prettier"],
|
||||
"extends": "eslint:recommended",
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es6": true
|
||||
},
|
||||
"globals": {
|
||||
"Artplayer": false
|
||||
},
|
||||
"rules": {
|
||||
"no-shadow": 0,
|
||||
"no-param-reassign": 0,
|
||||
"no-restricted-exports": 0,
|
||||
"no-loss-of-precision": 0,
|
||||
"no-promise-executor-return": 0,
|
||||
"no-unreachable-loop": 0,
|
||||
"no-unsafe-optional-chaining": 0,
|
||||
"no-useless-backreference": 0,
|
||||
"default-case-last": 0,
|
||||
"no-nonoctal-decimal-escape": 0,
|
||||
"prefer-object-spread": 0,
|
||||
"prefer-destructuring": 0,
|
||||
"arrow-body-style": 0,
|
||||
"accessor-pairs": 0,
|
||||
"import/named": 0
|
||||
"require": "readonly",
|
||||
"process": "readonly"
|
||||
},
|
||||
"parserOptions": {
|
||||
"sourceType": "module",
|
||||
"ecmaVersion": 8,
|
||||
"ecmaVersion": "latest",
|
||||
"requireConfigFile": false,
|
||||
"babelOptions": {
|
||||
"presets": ["@babel/preset-react"]
|
||||
"presets": [
|
||||
"@babel/preset-react"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -28,15 +28,12 @@ jobs:
|
||||
- name: npm install, lint, build, and test
|
||||
run: |
|
||||
npm install
|
||||
npx lerna bootstrap --hoist
|
||||
npm run lint
|
||||
npm run build:all
|
||||
cd packages/artplayer-document && ls
|
||||
npm install
|
||||
npm run build
|
||||
cd ../../ && ls
|
||||
npm run test:create
|
||||
npm run test
|
||||
npm run sizereport
|
||||
env:
|
||||
CI: true
|
||||
@@ -1,8 +1,6 @@
|
||||
node_modules
|
||||
.vscode
|
||||
.DS_Store
|
||||
*.log
|
||||
commit.json
|
||||
.parcel-cache
|
||||
node_modules
|
||||
package-lock.json
|
||||
.size-snapshot.json
|
||||
yarn.lock
|
||||
@@ -0,0 +1,54 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
## [4.4.5] - 2022-65-2
|
||||
|
||||
### Added
|
||||
- 修复迷你模式时,主题色缺失的bug
|
||||
|
||||
## [4.4.3] - 2022-05-26
|
||||
|
||||
### Added
|
||||
- 修复弹幕库销毁时,自定义挂载输入框的残留
|
||||
- 修复迷你模式的尺寸计算错误
|
||||
|
||||
## [4.4.2] - 2022-05-20
|
||||
|
||||
### Added
|
||||
- 移除播放器 UI 初始化的 video:loadedmetadata 事件
|
||||
- 弹幕库暴露 load 方法,用于切换弹幕源
|
||||
- 添加 error 图标,出现于视频加载错误达到上限后
|
||||
- 修复 setting 多次初始化时产生的 bug
|
||||
|
||||
## [4.4.1] - 2022-05-17
|
||||
|
||||
### Added
|
||||
- 添加 art.isInput 属性,当为 true 的时候不自动隐藏控制栏,如弹幕正在输入时
|
||||
- 添加 art.isLock 属性,在移动端当为 true 的时候不能操作快进、开始和暂停
|
||||
- 修复弹幕输入框的固定宽度 bug
|
||||
- 设置面板支持 range 和 onRange 选项
|
||||
- 添加 isAndroid 和 isIOS 工具函数
|
||||
- 弹幕库添加 lockTime 选项,可自定义输入框的锁定时间
|
||||
- 弹幕库添加 maxLength 选项,控制输入最大可输入字数
|
||||
- 弹幕库添加 minWidth 选项,控制输入框最小宽度
|
||||
- 弹幕库添加 maxWidth 选项,控制输入框最大宽度
|
||||
- 弹幕库添加 mount 选项,控制输入框自定义挂载位置
|
||||
- 弹幕库添加 beforeEmit 选项,控制弹幕发送前的校验
|
||||
- 弹幕库添加 theme 选项,控制输入框自定义挂载的主题色
|
||||
|
||||
## [4.4.0] - 2022-05-15
|
||||
|
||||
### Added
|
||||
- 设置面板支持 switch 和 onSwitch 选项
|
||||
- 弹幕库插件添加设置面板和弹幕发送
|
||||
- 弹幕库的选项添加默认模式和默认字号
|
||||
- 弹幕库字号支持按播放器的百分百
|
||||
- 修复翻转设置的图标缺失
|
||||
- 默认播放器获取了焦点后,不会自动隐藏控制栏
|
||||
- 删除字幕开关按钮,需要自行配置字幕开关
|
||||
@@ -0,0 +1,35 @@
|
||||
This project uses `parcel` as a development and packaging tool, so there are few overall configuration options
|
||||
|
||||
## 1. Install dependencies
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```bash
|
||||
yarn
|
||||
```
|
||||
|
||||
## 2. Develop the project and open the demo page
|
||||
|
||||
```base
|
||||
npm run dev
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## 3. Package the project
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
```bash
|
||||
yarn build
|
||||
```
|
||||
@@ -20,7 +20,7 @@
|
||||
<span>・</span>
|
||||
<a href="https://artplayer.org/document">API Document</a>
|
||||
<span>・</span>
|
||||
<a href="https://artplayer.org/?libs=.%2Funcompiled%2Fartplayer-plugin-danmuku.js&example=danmuku">弹幕演示</a>
|
||||
<a href="https://artplayer.org/?libs=./uncompiled/artplayer-plugin-danmuku/index.js&example=danmuku">弹幕演示</a>
|
||||
<span>・</span>
|
||||
</p>
|
||||
|
||||
@@ -30,6 +30,12 @@
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## Home Page
|
||||
[https://artplayer.org](https://artplayer.org)
|
||||
|
||||
## Mobile Demo
|
||||
<img src="./images/qrcode.png" width="250">
|
||||
|
||||
## Features
|
||||
|
||||
[ArtPlayer.js](https://artplayer.org) is an easy-to-use and feature-rich HTML5 video player, and most of the player's functional controls support customization, which makes it easy to connect with your business logic. In addition, it directly supports `.vtt`, `.ass` and `.srt` subtitle formats. Integration with other dependencies such as `flv.js`, `hls.js`, `dash.js`, etc. is also very simple. The code is highly decoupled, the structure and logic are clear, and it is easy to track errors and add new features.
|
||||
@@ -83,6 +89,14 @@ var art = new Artplayer({
|
||||
});
|
||||
```
|
||||
|
||||
## Changelog
|
||||
|
||||
[CHANGELOG_CN.md](./CHANGELOG_CN.md)
|
||||
|
||||
## Contributing
|
||||
|
||||
[CONTRIBUTING.md](./CONTRIBUTING.md)
|
||||
|
||||
## Donations
|
||||
|
||||
We accept donations through these channels:
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
/*!
|
||||
* artplayer-plugin-danmuku.js v4.1.0
|
||||
* Github: https://github.com/zhw2590582/ArtPlayer#readme
|
||||
* (c) 2017-2022 Harvey Zack
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).artplayerPluginDanmuku=e()}(this,(function(){"use strict";function t(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var n={"zh-cn":{"Danmu opacity":"弹幕透明度","Danmu speed":"弹幕速度","Danmu size":"弹幕大小","Danmu text cannot be empty":"弹幕文本不能为空","The length of the danmu does not exceed":"弹幕文本字数不能超过","Danmu speed synchronous playback multiple":"弹幕速度同步播放倍数"},"zh-tw":{"Danmu opacity":"彈幕透明度","Danmu speed":"彈幕速度","Danmu size":"弹幕大小","Danmu text cannot be empty":"彈幕文本不能為空","The length of the danmu does not exceed":"彈幕文本字數不能超過","Danmu speed synchronous playback multiple":"彈幕速度同步播放倍數"}};function r(t){var e=t.i18n,n=t.events.proxy;return{name:"danmuku-opacity",index:10,html:'<div class="art-setting-header">'.concat(e.get("Danmu opacity"),': <span class="art-value">100</span>%</div><div class="art-setting-range"><input type="range" value="1" min="0.1" max="1" step="0.1"></div>'),mounted:function(e){var r=e.querySelector("input[type=range]"),i=e.querySelector(".art-value");n(r,"change",(function(){var e=r.value;i.innerText=100*Number(e),t.plugins.artplayerPluginDanmuku.config({opacity:Number(e)})})),t.on("artplayerPluginDanmuku:config",(function(t){r.value!==t.opacity&&(r.value=t.opacity,i.innerText=100*t.opacity)}))}}}function i(t){var e=t.i18n,n=t.events.proxy;return{name:"danmuku-size",index:11,html:'<div class="art-setting-header">'.concat(e.get("Danmu size"),': <span class="art-value">25</span>px</div><div class="art-setting-range"><input type="range" value="25" min="14" max="30" step="1"></div>'),mounted:function(e){var r=e.querySelector("input[type=range]"),i=e.querySelector(".art-value");n(r,"change",(function(){var e=r.value;i.innerText=e,t.plugins.artplayerPluginDanmuku.config({fontSize:Number(e)})})),t.on("artplayerPluginDanmuku:config",(function(t){r.value!==t.fontSize&&(r.value=t.fontSize,i.innerText=t.fontSize)}))}}}function a(t){var e=t.i18n,n=t.events.proxy;return{name:"danmuku-speed",index:12,html:'<div class="art-setting-header">'.concat(e.get("Danmu speed"),': <span class="art-value">5</span>s</div><div class="art-setting-range"><input type="range" value="5" min="1" max="10" step="1"></div>'),mounted:function(e){var r=e.querySelector("input[type=range]"),i=e.querySelector(".art-value");n(r,"change",(function(){var e=r.value;i.innerText=e,t.plugins.artplayerPluginDanmuku.config({speed:Number(e)})})),t.on("artplayerPluginDanmuku:config",(function(t){r.value!==t.speed&&(r.value=t.speed,i.innerText=t.speed)}))}}}function o(t){var e=t.i18n,n=t.events.proxy;return{name:"danmuku-synchronousPlayback",index:13,html:'<label class="art-setting-checkbox"><input type="checkbox"/>'.concat(e.get("Danmu speed synchronous playback multiple"),"</label>"),mounted:function(e){var r=e.querySelector("input[type=checkbox]");n(r,"change",(function(){t.plugins.artplayerPluginDanmuku.config({synchronousPlayback:r.checked})})),t.on("artplayerPluginDanmuku:config",(function(t){r.checked!==t.synchronousPlayback&&(r.checked=t.synchronousPlayback)}))}}}function u(t,e,n){return t.filter((function(t){return t.$state===e})).map(n)}function s(t,e){var n=t.getBoundingClientRect();return e?n[e]:n}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,i,a=[],o=!0,u=!1;try{for(n=n.call(t);!(o=(r=n.next()).done)&&(a.push(r.value),!e||a.length!==e);o=!0);}catch(t){u=!0,i=t}finally{try{o||null==n.return||n.return()}finally{if(u)throw i}}return a}}(t,e)||function(t,e){if(t){if("string"==typeof t)return l(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:case 5:return 1}}function f(t){return fetch(t).then((function(t){return t.text()})).then((function(t){return function(t){if("string"!=typeof t)return[];var e=t.match(/<d([\S ]*?>[\S ]*?)<\/d>/gi);return e&&e.length?e.map((function(t){var e=c(t.match(/<d p="(.+)">(.+)<\/d>/)Line truncated
|
||||
@@ -1,8 +0,0 @@
|
||||
/*!
|
||||
* artplayer-tool-thumbnail.js v4.0.0
|
||||
* Github: https://github.com/zhw2590582/ArtPlayer#readme
|
||||
* (c) 2017-2022 Harvey Zack
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).ArtplayerToolThumbnail=e()}(this,(function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function n(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function i(t,e){return i=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},i(t,e)}function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function r(t,e){if(e&&("object"===o(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return n(t)}function a(t){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},a(t)}var s={exports:{}};function u(){}function h(t){return new Promise((function(e){return setTimeout(e,t)}))}function l(t,e,n){return Math.max(Math.min(t,Math.max(e,n)),Math.min(e,n))}function c(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,i=a(t);if(e){var o=a(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return r(this,n)}}u.prototype={on:function(t,e,n){var i=this.e||(this.e={});return(i[t]||(i[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var i=this;function o(){i.off(t,o),e.apply(n,arguments)}return o._=e,this.on(t,o,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),i=0,o=n.length;i<o;i++)n[i].fn.apply(n[i].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),i=n[t],o=[];if(i&&e)for(var r=0,a=i.length;r<a;r++)i[r].fn!==e&&i[r].fn._!==e&&o.push(i[r]);return o.length?n[t]=o:delete n[t],this}},s.exports=u,s.exports.TinyEmitter=u;var f=function(o){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&i(t,e)}(f,o);var r,a,s,u=c(f);function f(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(this,f),(e=u.call(this)).processing=!1,e.option={},e.setup(Object.assign({},f.DEFAULTS,i)),e.video=f.creatVideo(),e.duration=0,e.inputChange=e.inputChange.bind(n(e)),e.ondrop=e.ondrop.bind(n(e)),e.option.fileInput.addEventListener("change",e.inputChange),e.option.fileInput.addEventListener("dragover",f.ondragover),e.option.fileInput.addEventListener("drop",f.ondrop),e}return r=f,a=[{key:"ondrop",value:function(t){t.preventDefault();var e=t.dataTransfer.files[0];this.loadVideo(e)}},{key:"setup",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.option=Object.assign({},this.option,e);var n=this.option,i=n.fileInput,o=n.delay,r=n.number,a=n.width,s=n.height,u=n.column;if(this.errorHandle(i instanceof Element,"The 'fileInput' is not a Element"),"INPUT"!==i.tagName||"file"!==i.type){i.style.position="relative";var h=document.createElement("input");h.type="file",h.style.position="absolute",h.style.width="100%",h.style.height="100%",h.style.left="0",h.style.top="0",h.style.right="0",h.style.bottom="0",h.style.opacity="0",i.appendChild(h),this.option.fileInput=h}return["delay","number","width","height","column","begin","end"].forEach((function(e){t.errorHandle("number"==typeof t.option[e],"The '".concat(e,"' is not a number"))})),this.option.delay=l(o,10,1e3),this.option.number=l(r,10,1e3),this.option.width=l(a,10,1e3),this.option.height=l(s,10,1e3),this.option.column=l(u,1,1e3),this}},{key:"inputChange",value:function(){var t=this.option.fileInput.files[0];this.loadVideo(t)}},{key:"loadVideo",value:function(t){var e=this,n=this.option.delay;if(t){var i=this.video.canPlayType(t.type);this.errorHandle("maybe"===i||"probably"===i,"Playback of this file format is not supported: ".concat(t.type));var o=URL.createObjectURL(t);this.videoUrl=o,this.file=t,this.emit("file",this.file),this.video.src=o,h(n).then((function(){e.emit("video",e.video)})).catch((function(t){throw e.emit("error",t.message),t}))}}},{key:"start",value:function(){var t=this;if(!this.video.duration)return h(1e3).then(this.start);var e=this.option,n=e.width,i=e.height,o=e.number,r=e.delay,a=e.begin,s=e.end;this.option.begin=l(a,0,this.video.duration),this.optionLine truncated
|
||||
@@ -1,8 +0,0 @@
|
||||
/*!
|
||||
* artplayer.js v4.2.3
|
||||
* Github: https://github.com/zhw2590582/ArtPlayer#readme
|
||||
* (c) 2017-2022 Harvey Zack
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Artplayer=e()}(this,(function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function r(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}function n(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function c(t,e){if(e&&("object"===a(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return n(t)}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}!function(t,e){void 0===e&&(e={});var r=e.insertAt;if(t&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===r&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}}('.art-video-player{zoom:1;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-high-contrast-adjust:none;background-color:#000;color:#eee;direction:ltr;display:flex;font-family:Roboto,Arial,Helvetica,sans-serif;font-size:14px;height:100%;line-height:1.3;margin:0 auto;outline:0;position:relative;text-align:left;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;z-index:20}.art-video-player *{box-sizing:border-box;margin:0;padding:0}.art-video-player ::-webkit-scrollbar{height:5px;width:5px}.art-video-player ::-webkit-scrollbar-thumb{background-color:#666}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:#ccc}.art-video-player .art-icon{align-items:center;display:inline-flex;justify-content:center;line-height:1.5}.art-video-player .art-icon svg{fill:#fff}.art-video-player img{max-width:100%;vertical-align:top}@supports ((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.art-video-player .art-backdrop-filter{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(0,0,0,.7)!important}}.art-video-player .art-video{background-color:#000;cursor:pointer;z-index:10}.art-video-player .art-poster,.art-video-player .art-video{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.art-video-player .art-poster{background-position:50%;background-repeat:no-repeat;background-size:cover;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:11}.art-video-player .art-subtitle{bottom:10px;color:#fff;display:none;font-size:20px;padding:0 20px;pointer-events:none;position:absolute;text-align:center;text-shadow:.5px .5px .5px rgba(0,0,0,.5);width:100%;z-index:20}.art-video-player .art-subtitle p{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;line-height:1.2;margin:5px 0 0;word-break:break-all}.art-video-player .art-bilingual p:nth-child(n+2){transform:scale(.6);transform-origin:center top}.art-video-player.art-subtitle-show .art-subtitle{display:block}.art-video-player.art-control-show .art-subtitle{bottom:50px}.art-video-player .art-danmuku{z-index:30}.art-video-player .art-danmuku,.art-video-player .art-layers{bottom:0;height:100%;left:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;width:100%}.art-video-player .art-layers{display:none;z-index:40}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:block}.art-video-player .art-mask{align-items:center;bottom:0;display:none;height:100%;justify-content:center;left:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;width:100%;z-index:50}.art-video-player .art-mask .art-state{align-items:center;bottom:65px;display:flex;height:60px;justify-content:center;opacity:.6;position:absolute;right:30px;width:60px}.art-video-player.art-mask-show .art-mask{display:flex}.art-video-player .art-loading{align-items:center;bottom:0;display:none;height:100%;justify-content:center;left:0;pointer-events:nonLine truncated
|
||||
@@ -1,18 +0,0 @@
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.container {
|
||||
height: 100%;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.artplayer-app {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
}
|
||||
|
||||
.tip {
|
||||
text-align: center;
|
||||
}
|
||||
@@ -189,6 +189,7 @@ img {
|
||||
height: 70%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
@@ -199,10 +200,15 @@ img {
|
||||
font-size: 20px;
|
||||
width: 90%;
|
||||
height: 65%;
|
||||
margin-bottom: 10px;
|
||||
background-color: rgb(0 0 0 / 20%);
|
||||
border: 1px dashed rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.part-right .video-wrap .artplayer-danmuku {
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
.part-right .console {
|
||||
position: relative;
|
||||
z-index: 8;
|
||||
|
||||
@@ -1,48 +1,80 @@
|
||||
var art = new Artplayer({
|
||||
container: '.artplayer-app',
|
||||
url: 'https://artplayer.org/assets/sample/video.mp4',
|
||||
url: '/assets/sample/video.mp4',
|
||||
autoSize: true,
|
||||
setting: true,
|
||||
playbackRate: true,
|
||||
fullscreen: true,
|
||||
fullscreenWeb: true,
|
||||
flip: true,
|
||||
playbackRate: true,
|
||||
aspectRatio: true,
|
||||
setting: true,
|
||||
plugins: [
|
||||
artplayerPluginDanmuku({
|
||||
danmuku: '/assets/sample/danmuku.xml',
|
||||
speed: 5,
|
||||
maxlength: 50,
|
||||
margin: [10, 100],
|
||||
opacity: 1,
|
||||
fontSize: 25,
|
||||
synchronousPlayback: false,
|
||||
danmuku: '/assets/sample/danmuku-v2.xml',
|
||||
speed: 5, // 弹幕持续时间,单位秒,范围在[1 ~ 10]
|
||||
opacity: 1, // 弹幕透明度,范围在[0 ~ 1]
|
||||
fontSize: 25, // 字体大小,支持数字和百分比
|
||||
color: '#FFFFFF', // 默认字体颜色
|
||||
mode: 0, // 默认模式,0-滚动,1-静止
|
||||
margin: [10, '25%'], // 弹幕上下边距,支持数字和百分比
|
||||
antiOverlap: true, // 是否防重叠
|
||||
useWorker: true, // 是否使用 web worker
|
||||
synchronousPlayback: false, // 是否同步到播放速度
|
||||
filter: (danmu) => danmu.text.length < 50, // 弹幕过滤函数,返回 true 则可以发送
|
||||
lockTime: 5, // 输入框锁定时间,单位秒,范围在[1 ~ 60]
|
||||
maxLength: 100, // 输入框最大可输入的字数,范围在[0 ~ 500]
|
||||
minWidth: 200, // 输入框最小宽度,范围在[0 ~ 500],填 0 则为无限制
|
||||
maxWidth: 400, // 输入框最大宽度,范围在[0 ~ Infinity],填 0 则为 100% 宽度
|
||||
theme: 'dark', // 输入框自定义挂载时的主题色,默认为 dark,可以选填亮色 light
|
||||
beforeEmit: (danmu) => !!danmu.text.trim(), // 发送弹幕前的自定义校验,返回 true 则可以发送
|
||||
|
||||
// 通过 mount 选项可以自定义输入框挂载的位置,默认挂载于播放器底部,仅在当宽度小于最小值时生效
|
||||
// mount: document.querySelector('.artplayer-danmuku'),
|
||||
}),
|
||||
],
|
||||
controls: [
|
||||
{
|
||||
position: 'right',
|
||||
html: '隐藏弹幕',
|
||||
click: function (_, event) {
|
||||
if (art.plugins.artplayerPluginDanmuku.isHide) {
|
||||
art.plugins.artplayerPluginDanmuku.show();
|
||||
event.target.innerText = '隐藏弹幕';
|
||||
} else {
|
||||
art.plugins.artplayerPluginDanmuku.hide();
|
||||
event.target.innerText = '显示弹幕';
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
position: 'right',
|
||||
html: '发送弹幕',
|
||||
click: function () {
|
||||
var text = prompt('请输入弹幕文本', '弹幕测试文本');
|
||||
if (!text || !text.trim()) return;
|
||||
var color = '#' + Math.floor(Math.random() * 0xffffff).toString(16);
|
||||
art.plugins.artplayerPluginDanmuku.emit({
|
||||
text: text,
|
||||
color: color,
|
||||
border: true,
|
||||
});
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
// 监听手动输入的弹幕,保存到数据库
|
||||
art.on('artplayerPluginDanmuku:emit', (danmu) => {
|
||||
console.info('新增弹幕', danmu);
|
||||
});
|
||||
|
||||
// 监听加载到的弹幕数组
|
||||
art.on('artplayerPluginDanmuku:loaded', (danmus) => {
|
||||
console.info('加载弹幕', danmus.length);
|
||||
});
|
||||
|
||||
// 监听加载到弹幕的错误
|
||||
art.on('artplayerPluginDanmuku:error', (error) => {
|
||||
console.info('加载错误', error);
|
||||
});
|
||||
|
||||
// 监听弹幕配置变化
|
||||
art.on('artplayerPluginDanmuku:config', (option) => {
|
||||
console.info('配置变化', option);
|
||||
});
|
||||
|
||||
// 监听弹幕停止
|
||||
art.on('artplayerPluginDanmuku:stop', () => {
|
||||
console.info('弹幕停止');
|
||||
});
|
||||
|
||||
// 监听弹幕开始
|
||||
art.on('artplayerPluginDanmuku:start', () => {
|
||||
console.info('弹幕开始');
|
||||
});
|
||||
|
||||
// 监听弹幕隐藏
|
||||
art.on('artplayerPluginDanmuku:hide', () => {
|
||||
console.info('弹幕隐藏');
|
||||
});
|
||||
|
||||
// 监听弹幕显示
|
||||
art.on('artplayerPluginDanmuku:show', () => {
|
||||
console.info('弹幕显示');
|
||||
});
|
||||
|
||||
// 监听弹幕销毁
|
||||
art.on('artplayerPluginDanmuku:destroy', () => {
|
||||
console.info('弹幕销毁');
|
||||
});
|
||||
@@ -1,7 +1,7 @@
|
||||
var art = new Artplayer({
|
||||
container: '.artplayer-app',
|
||||
url: 'https://artplayer.org/assets/sample/video.mp4',
|
||||
title: 'One More Time One More Chance',
|
||||
url: '/assets/sample/video.mp4',
|
||||
title: 'Your Name',
|
||||
poster: '/assets/sample/poster.jpg',
|
||||
volume: 0.5,
|
||||
isLive: false,
|
||||
@@ -14,29 +14,78 @@ var art = new Artplayer({
|
||||
setting: true,
|
||||
loop: true,
|
||||
flip: true,
|
||||
rotate: true,
|
||||
playbackRate: true,
|
||||
aspectRatio: true,
|
||||
fullscreen: true,
|
||||
fullscreenWeb: true,
|
||||
subtitleOffset: true,
|
||||
miniProgressBar: true,
|
||||
localVideo: true,
|
||||
localSubtitle: true,
|
||||
mutex: true,
|
||||
backdrop: true,
|
||||
playsInline: true,
|
||||
autoPlayback: true,
|
||||
theme: '#23ade5',
|
||||
lang: navigator.language.toLowerCase(),
|
||||
whitelist: ['*'],
|
||||
moreVideoAttr: {
|
||||
crossOrigin: 'anonymous',
|
||||
},
|
||||
settings: [
|
||||
{
|
||||
index: 1,
|
||||
html: 'Custom setting',
|
||||
click: function (setting) {
|
||||
console.info('You clicked on the custom setting');
|
||||
setting.show = false;
|
||||
width: 200,
|
||||
html: 'Subtitle',
|
||||
tooltip: 'Bilingual',
|
||||
icon: '<img width="22" heigth="22" src="/assets/img/subtitle.svg">',
|
||||
selector: [
|
||||
{
|
||||
html: 'Display',
|
||||
tooltip: 'Show',
|
||||
switch: true,
|
||||
onSwitch: function (item) {
|
||||
item.tooltip = item.switch ? 'Hide' : 'Show';
|
||||
art.subtitle.show = !item.switch;
|
||||
return !item.switch;
|
||||
},
|
||||
},
|
||||
{
|
||||
default: true,
|
||||
html: 'Bilingual',
|
||||
url: '/assets/sample/subtitle.srt',
|
||||
},
|
||||
{
|
||||
html: 'Chinese',
|
||||
url: '/assets/sample/subtitle.cn.srt',
|
||||
},
|
||||
{
|
||||
html: 'Japanese',
|
||||
url: '/assets/sample/subtitle.jp.srt',
|
||||
},
|
||||
],
|
||||
onSelect: function (item) {
|
||||
art.subtitle.switch(item.url, {
|
||||
name: item.html,
|
||||
});
|
||||
return item.html;
|
||||
},
|
||||
},
|
||||
{
|
||||
html: 'Switcher',
|
||||
icon: '<img width="22" heigth="22" src="/assets/img/state.svg">',
|
||||
tooltip: 'OFF',
|
||||
switch: false,
|
||||
onSwitch: function (item) {
|
||||
item.tooltip = item.switch ? 'OFF' : 'ON';
|
||||
console.info('You clicked on the custom switch', item.switch);
|
||||
return !item.switch;
|
||||
},
|
||||
},
|
||||
{
|
||||
html: 'Slider',
|
||||
icon: '<img width="22" heigth="22" src="/assets/img/state.svg">',
|
||||
tooltip: '5x',
|
||||
range: [5, 1, 10, 0.1],
|
||||
onRange: function (item) {
|
||||
return item.range + 'x';
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -51,8 +100,9 @@ var art = new Artplayer({
|
||||
],
|
||||
layers: [
|
||||
{
|
||||
html: '<img style="width: 100px" src="/assets/sample/layer.png">',
|
||||
html: '<img width="100" src="/assets/sample/layer.png">',
|
||||
click: function () {
|
||||
window.open('https://aimu.app');
|
||||
console.info('You clicked on the custom layer');
|
||||
},
|
||||
style: {
|
||||
@@ -76,37 +126,37 @@ var art = new Artplayer({
|
||||
],
|
||||
thumbnails: {
|
||||
url: '/assets/sample/thumbnails.png',
|
||||
number: 100,
|
||||
number: 60,
|
||||
column: 10,
|
||||
},
|
||||
subtitle: {
|
||||
url: '/assets/sample/subtitle.srt',
|
||||
type: 'srt',
|
||||
style: {
|
||||
color: '#03A9F4',
|
||||
color: '#fe9200',
|
||||
fontSize: '20px',
|
||||
},
|
||||
encoding: 'utf-8',
|
||||
bilingual: true,
|
||||
},
|
||||
highlight: [
|
||||
{
|
||||
time: 60,
|
||||
time: 15,
|
||||
text: 'One more chance',
|
||||
},
|
||||
{
|
||||
time: 120,
|
||||
time: 30,
|
||||
text: '谁でもいいはずなのに',
|
||||
},
|
||||
{
|
||||
time: 180,
|
||||
time: 45,
|
||||
text: '夏の想い出がまわる',
|
||||
},
|
||||
{
|
||||
time: 240,
|
||||
time: 60,
|
||||
text: 'こんなとこにあるはずもないのに',
|
||||
},
|
||||
{
|
||||
time: 300,
|
||||
time: 75,
|
||||
text: '终わり',
|
||||
},
|
||||
],
|
||||
@@ -114,14 +164,15 @@ var art = new Artplayer({
|
||||
{
|
||||
position: 'right',
|
||||
html: 'Control',
|
||||
tooltip: 'Control Tooltip',
|
||||
click: function () {
|
||||
console.info('You clicked on the custom control');
|
||||
},
|
||||
},
|
||||
],
|
||||
icons: {
|
||||
indicator: '<img width="16" heigth="16" src="/assets/img/indicator.svg">',
|
||||
loading: '<img src="/assets/img/ploading.gif">',
|
||||
state: '<img width="150" heigth="150" src="/assets/img/state.svg">',
|
||||
indicator: '<img width="16" heigth="16" src="/assets/img/indicator.svg">',
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg class="icon" viewBox="0 0 1152 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="#fff" d="M311.296 661.504c0 4.096-4.096 8.704-8.704 12.8 0 4.096 0 4.096-4.096 8.704h-12.8c-4.096 0-8.704-4.096-16.896-8.704-8.704-8.704-16.896-8.704-25.6-8.704s-12.8 4.096-16.896 12.8c-4.096 12.8-8.704 21.504-4.096 29.696 4.096 8.704 12.8 16.896 25.6 21.504 16.896 8.704 34.304 16.896 47.104 16.896 12.8 0 21.504-4.096 34.304-8.704 8.704-4.096 16.896-16.896 25.6-29.696 8.704-12.8 12.8-34.304 16.896-55.296 4.096-21.504 4.096-51.2 4.096-85.504 0-12.8 0-21.504-4.096-29.696 0-8.704-4.096-12.8-8.704-16.896-4.096-4.096-8.704-8.704-12.8-8.704s-12.8-4.096-21.504-4.096H272.896s-4.096-4.096 0-8.704l4.096-38.4c0-4.096 0-8.704 4.096-8.704h47.104c16.896 0 25.6-4.096 34.304-12.8 8.704-8.704 12.8-21.504 12.8-42.496V324.096c0-16.896-4.096-34.304-8.704-42.496-12.8-12.8-25.6-16.896-42.496-16.896H243.2c-8.704 0-16.896 0-21.504 4.096-4.096 8.704-4.096 12.8-4.096 25.6 0 8.704 0 16.896 4.096 21.504 4.096 4.096 12.8 8.704 21.504 8.704H307.2c4.096 0 8.704 0 8.704 4.096v34.304c0 8.704 0 12.8-4.096 12.8 0 0-4.096 4.096-8.704 4.096h-34.304c-8.704 0-12.8 0-21.504 4.096-4.096 0-8.704 4.096-8.704 4.096-4.096 4.096-8.704 12.8-8.704 16.896 0 8.704-4.096 16.896-4.096 25.6l-8.704 72.704v29.696c0 8.704 4.096 12.8 8.704 16.896s8.704 4.096 16.896 8.704h68.096c4.096 0 8.704 0 8.704 4.096s4.096 8.704 4.096 16.896c0 21.504 0 42.496-4.096 55.296 0.512 9.216-3.584 22.016-8.192 26.624zM896 486.4c-93.696 0-175.104 51.2-217.6 123.904h-106.496v-34.304H640c21.504 0 34.304-4.096 42.496-12.8 8.704-8.704 12.8-21.504 12.8-42.496V358.4c0-21.504-4.096-34.304-12.8-42.496-8.704-8.704-21.504-12.8-42.496-12.8 0-4.096 4.096-4.096 4.096-8.704-4.096 0-4.096-4.096-4.096-4.096 4.096-12.8 8.704-21.504 4.096-25.6 0-8.704-4.096-12.8-12.8-21.504-8.704-4.096-16.896-4.096-21.504-4.096-8.704 4.096-12.8 8.704-21.504 21.504-4.096 8.704-8.704 12.8-12.8 21.504-4.096 8.704-8.704 12.8-12.8 21.504h-51.2c-4.096-8.704-8.704-16.896-8.704-21.504-4.096-8.704-8.704-12.8-12.8-21.504-4.096-12.8-12.8-16.896-21.504-16.896s-16.896 0-25.6 8.704C434.176 261.12 430.08 265.216 430.08 273.92c0 8.704 0 16.896 8.704 25.6l4.096 4.096 4.096 4.096c-16.896 0-29.696 4.096-38.4 12.8-8.704 4.096-12.8 21.504-12.8 38.4v157.696c0 21.504 4.096 34.304 12.8 42.496 8.704 8.704 21.504 12.8 42.496 12.8H512v34.304H413.696c-12.8 0-21.504 0-25.6 4.096-4.096 4.096-8.704 8.704-8.704 21.504v16.896c0 4.096 4.096 8.704 4.096 8.704 4.096 0 4.096 4.096 8.704 4.096H512V716.8c0 12.8 4.096 21.504 8.704 25.6 4.096 4.096 12.8 8.704 21.504 8.704 12.8 0 21.504-4.096 25.6-8.704 4.096-4.096 4.096-12.8 4.096-25.6v-55.296h80.896c-8.704 25.6-12.8 51.2-12.8 76.8 0 140.8 115.2 256 256 256s256-115.2 256-256S1036.8 486.4 896 486.4z m-328.704-128h55.296c4.096 0 4.096 0 4.096 4.096V409.6h-59.904V358.4z m0 102.4h59.904v51.2h-55.296V460.8h-4.608zM512 516.096H456.704v-51.2H512v51.2z m0-102.4H452.096v-51.2H512v51.2z m384 499.2c-93.696 0-170.496-76.8-170.496-170.496s76.8-170.496 170.496-170.496 170.496 76.8 170.496 170.496-76.8 170.496-170.496 170.496z" />
|
||||
<path fill="#fff" d="M580.096 879.104H213.504c-72.704 0-128-55.296-128-119.296V230.4c0-64 55.296-119.296 128-119.296h512c72.704 0 128 55.296 128 119.296v140.8c0 25.6 16.896 42.496 42.496 42.496s42.496-16.896 42.496-42.496V230.4c0-115.2-93.696-204.8-213.504-204.8h-512C93.696 25.6 0 119.296 0 230.4v528.896c0 115.2 93.696 204.8 213.504 204.8h367.104c25.6 0 42.496-16.896 42.496-42.496 0-25.6-21.504-42.496-43.008-42.496z m171.52 10.752c-15.36-15.36-15.36-40.96 0-56.32l237.568-237.568c15.36-15.36 40.96-15.36 56.32 0s15.36 40.96 0 56.32l-237.568 237.568c-15.36 15.36-40.448 15.36-56.32 0z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg class="icon" viewBox="0 0 1152 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="#fff" d="M311.466667 661.333333c0 4.266667-4.266667 8.533333-8.533334 12.8 0 4.266667 0 4.266667-4.266666 8.533334h-12.8c-4.266667 0-8.533333-4.266667-17.066667-8.533334-8.533333-8.533333-17.066667-8.533333-25.6-8.533333-8.533333 0-12.8 4.266667-17.066667 12.8-4.266667 12.8-8.533333 21.333333-4.266666 29.866667 4.266667 8.533333 12.8 17.066667 25.6 21.333333 17.066667 8.533333 34.133333 17.066667 46.933333 17.066667 12.8 0 21.333333-4.266667 34.133333-8.533334 8.533333-4.266667 17.066667-17.066667 25.6-29.866666 8.533333-12.8 12.8-34.133333 17.066667-55.466667 4.266667-21.333333 4.266667-51.2 4.266667-85.333333 0-12.8 0-21.333333-4.266667-29.866667 0-8.533333-4.266667-12.8-8.533333-17.066667-4.266667-4.266667-8.533333-8.533333-12.8-8.533333-4.266667 0-12.8-4.266667-21.333334-4.266667H273.066667s-4.266667-4.266667 0-8.533333l4.266666-38.4c0-4.266667 0-8.533333 4.266667-8.533333h46.933333c17.066667 0 25.6-4.266667 34.133334-12.8 8.533333-8.533333 12.8-21.333333 12.8-42.666667V324.266667c0-17.066667-4.266667-34.133333-8.533334-42.666667-12.8-12.8-25.6-17.066667-42.666666-17.066667H243.2c-8.533333 0-17.066667 0-21.333333 4.266667-4.266667 8.533333-4.266667 12.8-4.266667 25.6 0 8.533333 0 17.066667 4.266667 21.333333 4.266667 4.266667 12.8 8.533333 21.333333 8.533334h64c4.266667 0 8.533333 0 8.533333 4.266666v34.133334c0 8.533333 0 12.8-4.266666 12.8 0 0-4.266667 4.266667-8.533334 4.266666h-34.133333c-8.533333 0-12.8 0-21.333333 4.266667-4.266667 0-8.533333 4.266667-8.533334 4.266667-4.266667 4.266667-8.533333 12.8-8.533333 17.066666 0 8.533333-4.266667 17.066667-4.266667 25.6l-8.533333 72.533334v29.866666c0 8.533333 4.266667 12.8 8.533333 17.066667 4.266667 4.266667 8.533333 4.266667 17.066667 8.533333h68.266667c4.266667 0 8.533333 0 8.533333 4.266667s4.266667 8.533333 4.266667 17.066667c0 21.333333 0 42.666667-4.266667 55.466666 0 8.533333-4.266667 21.333333-8.533333 25.6zM896 486.4c-93.866667 0-174.933333 51.2-217.6 123.733333h-106.666667v-34.133333H640c21.333333 0 34.133333-4.266667 42.666667-12.8 8.533333-8.533333 12.8-21.333333 12.8-42.666667V358.4c0-21.333333-4.266667-34.133333-12.8-42.666667-8.533333-8.533333-21.333333-12.8-42.666667-12.8 0-4.266667 4.266667-4.266667 4.266667-8.533333-4.266667 0-4.266667-4.266667-4.266667-4.266667 4.266667-12.8 8.533333-21.333333 4.266667-25.6 0-8.533333-4.266667-12.8-12.8-21.333333-8.533333-4.266667-17.066667-4.266667-21.333334-4.266667-8.533333 4.266667-12.8 8.533333-21.333333 21.333334-4.266667 8.533333-8.533333 12.8-12.8 21.333333-4.266667 8.533333-8.533333 12.8-12.8 21.333333H512c-4.266667-8.533333-8.533333-17.066667-8.533333-21.333333-4.266667-8.533333-8.533333-12.8-12.8-21.333333-4.266667-12.8-12.8-17.066667-21.333334-17.066667s-17.066667 0-25.6 8.533333c-8.533333 8.533333-12.8 12.8-12.8 21.333334s0 17.066667 8.533334 25.6l4.266666 4.266666 4.266667 4.266667c-17.066667 0-29.866667 4.266667-38.4 12.8-8.533333 4.266667-12.8 21.333333-12.8 38.4v157.866667c0 21.333333 4.266667 34.133333 12.8 42.666666 8.533333 8.533333 21.333333 12.8 42.666667 12.8H512v34.133334H413.866667c-12.8 0-21.333333 0-25.6 4.266666-4.266667 4.266667-8.533333 8.533333-8.533334 21.333334v17.066666c0 4.266667 4.266667 8.533333 4.266667 8.533334 4.266667 0 4.266667 4.266667 8.533333 4.266666H512v55.466667c0 12.8 4.266667 21.333333 8.533333 25.6 4.266667 4.266667 12.8 8.533333 21.333334 8.533333 12.8 0 21.333333-4.266667 25.6-8.533333 4.266667-4.266667 4.266667-12.8 4.266666-25.6v-55.466667h81.066667c-8.533333 25.6-12.8 51.2-12.8 76.8 0 140.8 115.2 256 256 256s256-115.2 256-256-115.2-251.733333-256-251.733333z m-328.533333-128h55.466666c4.266667 0 4.266667 0 4.266667 4.266667v46.933333h-59.733333V358.4z m0 102.4h59.733333V512h-55.466667v-51.2zM512 516.266667h-55.466667V465.066667H512v51.2z m0-102.4h-59.733333V366.933333v-4.266666H512v51.2z m384 499.2c-93.866667 0-170.666667-76.8-170.666667-170.666667s76.8-170.666667 170.666667-170.666667 170.666667 76.8 170.666667 170.666667-76.8 170.666667-170.666667 170.666667z" />
|
||||
<path fill="#fff" d="M951.466667 669.866667l-72.533334 72.533333-29.866666-25.6c-17.066667-17.066667-42.666667-12.8-59.733334 4.266667-17.066667 17.066667-12.8 42.666667 4.266667 59.733333l59.733333 51.2c8.533333 8.533333 17.066667 8.533333 29.866667 8.533333 12.8 0 21.333333-4.266667 29.866667-12.8l102.4-102.4c17.066667-17.066667 17.066667-42.666667 0-59.733333-21.333333-12.8-46.933333-12.8-64 4.266667zM580.266667 878.933333H213.333333c-72.533333 0-128-55.466667-128-119.466666V230.4c0-64 55.466667-119.466667 128-119.466667h512c72.533333 0 128 55.466667 128 119.466667v140.8c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666667-42.666667V230.4c0-115.2-93.866667-204.8-213.333334-204.8H213.333333C93.866667 25.6 0 119.466667 0 230.4v529.066667c0 115.2 93.866667 204.8 213.333333 204.8h366.933334c25.6 0 42.666667-17.066667 42.666666-42.666667s-21.333333-42.666667-42.666666-42.666667z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 48 48">
|
||||
<path d="M0 0h48v48H0z" fill="none"/>
|
||||
<path fill="#ffffff" d="M40 8H8c-2.21 0-4 1.79-4 4v24c0 2.21 1.79 4 4 4h32c2.21 0 4-1.79 4-4V12c0-2.21-1.79-4-4-4zM8 24h8v4H8v-4zm20 12H8v-4h20v4zm12 0h-8v-4h8v4zm0-8H20v-4h20v4z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 318 B |
@@ -0,0 +1,589 @@
|
||||
var SubtitlesOctopus = function (options) {
|
||||
var supportsWebAssembly = false;
|
||||
try {
|
||||
if (typeof WebAssembly === "object"
|
||||
&& typeof WebAssembly.instantiate === "function") {
|
||||
const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));
|
||||
if (module instanceof WebAssembly.Module)
|
||||
supportsWebAssembly = (new WebAssembly.Instance(module) instanceof WebAssembly.Instance);
|
||||
}
|
||||
} catch (e) {
|
||||
}
|
||||
console.log("WebAssembly support detected: " + (supportsWebAssembly ? "yes" : "no"));
|
||||
|
||||
var self = this;
|
||||
self.canvas = options.canvas; // HTML canvas element (optional if video specified)
|
||||
self.lossyRender = options.lossyRender; // Speedup render for heavy subs
|
||||
self.isOurCanvas = false; // (internal) we created canvas and manage it
|
||||
self.video = options.video; // HTML video element (optional if canvas specified)
|
||||
self.canvasParent = null; // (internal) HTML canvas parent element
|
||||
self.fonts = options.fonts || []; // Array with links to fonts used in sub (optional)
|
||||
self.availableFonts = options.availableFonts || []; // Object with all available fonts (optional). Key is font name in lower case, value is link: {"arial": "/font1.ttf"}
|
||||
self.onReadyEvent = options.onReady; // Function called when SubtitlesOctopus is ready (optional)
|
||||
if (supportsWebAssembly) {
|
||||
self.workerUrl = options.workerUrl || 'subtitles-octopus-worker.js'; // Link to WebAssembly worker
|
||||
} else {
|
||||
self.workerUrl = options.legacyWorkerUrl || 'subtitles-octopus-worker-legacy.js'; // Link to legacy worker
|
||||
}
|
||||
self.subUrl = options.subUrl; // Link to sub file (optional if subContent specified)
|
||||
self.subContent = options.subContent || null; // Sub content (optional if subUrl specified)
|
||||
self.onErrorEvent = options.onError; // Function called in case of critical error meaning sub wouldn't be shown and you should use alternative method (for instance it occurs if browser doesn't support web workers).
|
||||
self.debug = options.debug || false; // When debug enabled, some performance info printed in console.
|
||||
self.lastRenderTime = 0; // (internal) Last time we got some frame from worker
|
||||
self.pixelRatio = window.devicePixelRatio || 1; // (internal) Device pixel ratio (for high dpi devices)
|
||||
|
||||
self.timeOffset = options.timeOffset || 0; // Time offset would be applied to currentTime from video (option)
|
||||
|
||||
self.hasAlphaBug = false;
|
||||
|
||||
(function() {
|
||||
if (typeof ImageData.prototype.constructor === 'function') {
|
||||
try {
|
||||
// try actually calling ImageData, as on some browsers it's reported
|
||||
// as existing but calling it errors out as "TypeError: Illegal constructor"
|
||||
new window.ImageData(new Uint8ClampedArray([0, 0, 0, 0]), 1, 1);
|
||||
return;
|
||||
} catch (e) {
|
||||
console.log("detected that ImageData is not constructable despite browser saying so");
|
||||
}
|
||||
}
|
||||
|
||||
var canvas = document.createElement('canvas');
|
||||
var ctx = canvas.getContext('2d');
|
||||
|
||||
window.ImageData = function () {
|
||||
var i = 0;
|
||||
if (arguments[0] instanceof Uint8ClampedArray) {
|
||||
var data = arguments[i++];
|
||||
}
|
||||
var width = arguments[i++];
|
||||
var height = arguments[i];
|
||||
|
||||
var imageData = ctx.createImageData(width, height);
|
||||
if (data) imageData.data.set(data);
|
||||
return imageData;
|
||||
}
|
||||
})();
|
||||
|
||||
self.workerError = function (error) {
|
||||
console.error('Worker error: ', error);
|
||||
if (self.onErrorEvent) {
|
||||
self.onErrorEvent(error);
|
||||
}
|
||||
if (!self.debug) {
|
||||
self.dispose();
|
||||
throw new Error('Worker error: ' + error);
|
||||
}
|
||||
};
|
||||
|
||||
// Not tested for repeated usage yet
|
||||
self.init = function () {
|
||||
if (!window.Worker) {
|
||||
self.workerError('worker not supported');
|
||||
return;
|
||||
}
|
||||
// Worker
|
||||
if (!self.worker) {
|
||||
self.worker = new Worker(self.workerUrl);
|
||||
self.worker.onmessage = self.onWorkerMessage;
|
||||
self.worker.onerror = self.workerError;
|
||||
}
|
||||
self.workerActive = false;
|
||||
self.createCanvas();
|
||||
self.setVideo(options.video);
|
||||
self.setSubUrl(options.subUrl);
|
||||
self.worker.postMessage({
|
||||
target: 'worker-init',
|
||||
width: self.canvas.width,
|
||||
height: self.canvas.height,
|
||||
URL: document.URL,
|
||||
currentScript: self.workerUrl,
|
||||
preMain: true,
|
||||
fastRender: self.lossyRender,
|
||||
subUrl: self.subUrl,
|
||||
subContent: self.subContent,
|
||||
fonts: self.fonts,
|
||||
availableFonts: self.availableFonts,
|
||||
debug: self.debug
|
||||
});
|
||||
};
|
||||
|
||||
self.createCanvas = function () {
|
||||
if (!self.canvas) {
|
||||
if (self.video) {
|
||||
self.isOurCanvas = true;
|
||||
self.canvas = document.createElement('canvas');
|
||||
self.canvas.className = 'libassjs-canvas';
|
||||
self.canvas.style.display = 'none';
|
||||
|
||||
self.canvasParent = document.createElement('div');
|
||||
self.canvasParent.className = 'libassjs-canvas-parent';
|
||||
self.canvasParent.appendChild(self.canvas);
|
||||
|
||||
if (self.video.nextSibling) {
|
||||
self.video.parentNode.insertBefore(self.canvasParent, self.video.nextSibling);
|
||||
}
|
||||
else {
|
||||
self.video.parentNode.appendChild(self.canvasParent);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!self.canvas) {
|
||||
self.workerError('Don\'t know where to render: you should give video or canvas in options.');
|
||||
}
|
||||
}
|
||||
}
|
||||
self.ctx = self.canvas.getContext('2d');
|
||||
self.bufferCanvas = document.createElement('canvas');
|
||||
self.bufferCanvasCtx = self.bufferCanvas.getContext('2d');
|
||||
|
||||
// test for alpha bug, where e.g. WebKit can render a transparent pixel
|
||||
// (with alpha == 0) as non-black which then leads to visual artifacts
|
||||
self.bufferCanvas.width = 1;
|
||||
self.bufferCanvas.height = 1;
|
||||
var testBuf = new Uint8ClampedArray([0, 255, 0, 0]);
|
||||
var testImage = new ImageData(testBuf, 1, 1);
|
||||
self.bufferCanvasCtx.clearRect(0, 0, 1, 1);
|
||||
self.ctx.clearRect(0, 0, 1, 1);
|
||||
var prePut = self.ctx.getImageData(0, 0, 1, 1).data;
|
||||
self.bufferCanvasCtx.putImageData(testImage, 0, 0);
|
||||
self.ctx.drawImage(self.bufferCanvas, 0, 0);
|
||||
var postPut = self.ctx.getImageData(0, 0, 1, 1).data;
|
||||
self.hasAlphaBug = prePut[1] != postPut[1];
|
||||
if (self.hasAlphaBug) {
|
||||
console.log("Detected a browser having issue with transparent pixels, applying workaround");
|
||||
}
|
||||
};
|
||||
|
||||
self.setVideo = function (video) {
|
||||
self.video = video;
|
||||
if (self.video) {
|
||||
var timeupdate = function () {
|
||||
self.setCurrentTime(video.currentTime + self.timeOffset);
|
||||
}
|
||||
self.video.addEventListener("timeupdate", timeupdate, false);
|
||||
self.video.addEventListener("playing", function () {
|
||||
self.setIsPaused(false, video.currentTime + self.timeOffset);
|
||||
}, false);
|
||||
self.video.addEventListener("pause", function () {
|
||||
self.setIsPaused(true, video.currentTime + self.timeOffset);
|
||||
}, false);
|
||||
self.video.addEventListener("seeking", function () {
|
||||
self.video.removeEventListener("timeupdate", timeupdate);
|
||||
}, false);
|
||||
self.video.addEventListener("seeked", function () {
|
||||
self.video.addEventListener("timeupdate", timeupdate, false);
|
||||
self.setCurrentTime(video.currentTime + self.timeOffset);
|
||||
}, false);
|
||||
self.video.addEventListener("ratechange", function () {
|
||||
self.setRate(video.playbackRate);
|
||||
}, false);
|
||||
self.video.addEventListener("timeupdate", function () {
|
||||
self.setCurrentTime(video.currentTime + self.timeOffset);
|
||||
}, false);
|
||||
self.video.addEventListener("waiting", function () {
|
||||
self.setIsPaused(true, video.currentTime + self.timeOffset);
|
||||
}, false);
|
||||
|
||||
document.addEventListener("fullscreenchange", self.resizeWithTimeout, false);
|
||||
document.addEventListener("mozfullscreenchange", self.resizeWithTimeout, false);
|
||||
document.addEventListener("webkitfullscreenchange", self.resizeWithTimeout, false);
|
||||
document.addEventListener("msfullscreenchange", self.resizeWithTimeout, false);
|
||||
window.addEventListener("resize", self.resizeWithTimeout, false);
|
||||
|
||||
// Support Element Resize Observer
|
||||
if (typeof ResizeObserver !== "undefined") {
|
||||
self.ro = new ResizeObserver(self.resizeWithTimeout);
|
||||
self.ro.observe(self.video);
|
||||
}
|
||||
|
||||
if (self.video.videoWidth > 0) {
|
||||
self.resize();
|
||||
}
|
||||
else {
|
||||
self.video.addEventListener("loadedmetadata", function (e) {
|
||||
e.target.removeEventListener(e.type, arguments.callee);
|
||||
self.resize();
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
self.getVideoPosition = function () {
|
||||
var videoRatio = self.video.videoWidth / self.video.videoHeight;
|
||||
var width = self.video.offsetWidth, height = self.video.offsetHeight;
|
||||
var elementRatio = width / height;
|
||||
var realWidth = width, realHeight = height;
|
||||
if (elementRatio > videoRatio) realWidth = Math.floor(height * videoRatio);
|
||||
else realHeight = Math.floor(width / videoRatio);
|
||||
|
||||
var x = (width - realWidth) / 2;
|
||||
var y = (height - realHeight) / 2;
|
||||
|
||||
return {
|
||||
width: realWidth,
|
||||
height: realHeight,
|
||||
x: x,
|
||||
y: y
|
||||
};
|
||||
};
|
||||
|
||||
self.setSubUrl = function (subUrl) {
|
||||
self.subUrl = subUrl;
|
||||
};
|
||||
|
||||
self.renderFrameData = null;
|
||||
function renderFrames() {
|
||||
var data = self.renderFramesData;
|
||||
var beforeDrawTime = performance.now();
|
||||
self.ctx.clearRect(0, 0, self.canvas.width, self.canvas.height);
|
||||
for (var i = 0; i < data.canvases.length; i++) {
|
||||
var image = data.canvases[i];
|
||||
self.bufferCanvas.width = image.w;
|
||||
self.bufferCanvas.height = image.h;
|
||||
var imageBuffer = new Uint8ClampedArray(image.buffer);
|
||||
if (self.hasAlphaBug) {
|
||||
for (var j = 3; j < imageBuffer.length; j = j + 4) {
|
||||
imageBuffer[j] = (imageBuffer[j] >= 1) ? imageBuffer[j] : 1;
|
||||
}
|
||||
}
|
||||
var imageData = new ImageData(imageBuffer, image.w, image.h);
|
||||
self.bufferCanvasCtx.putImageData(imageData, 0, 0);
|
||||
self.ctx.drawImage(self.bufferCanvas, image.x, image.y);
|
||||
}
|
||||
if (self.debug) {
|
||||
var drawTime = Math.round(performance.now() - beforeDrawTime);
|
||||
console.log(Math.round(data.spentTime) + ' ms (+ ' + drawTime + ' ms draw)');
|
||||
self.renderStart = performance.now();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lossy Render Mode
|
||||
*
|
||||
*/
|
||||
function renderFastFrames() {
|
||||
var data = self.renderFramesData;
|
||||
var beforeDrawTime = performance.now();
|
||||
self.ctx.clearRect(0, 0, self.canvas.width, self.canvas.height);
|
||||
for (var i = 0; i < data.bitmaps.length; i++) {
|
||||
var image = data.bitmaps[i];
|
||||
self.ctx.drawImage(image.bitmap, image.x, image.y);
|
||||
}
|
||||
if (self.debug) {
|
||||
var drawTime = Math.round(performance.now() - beforeDrawTime);
|
||||
console.log(data.bitmaps.length + ' bitmaps, libass: ' + Math.round(data.libassTime) + 'ms, decode: ' + Math.round(data.decodeTime) + 'ms, draw: ' + drawTime + 'ms');
|
||||
self.renderStart = performance.now();
|
||||
}
|
||||
}
|
||||
|
||||
self.workerActive = false;
|
||||
self.frameId = 0;
|
||||
self.onWorkerMessage = function (event) {
|
||||
//dump('\nclient got ' + JSON.stringify(event.data).substr(0, 150) + '\n');
|
||||
if (!self.workerActive) {
|
||||
self.workerActive = true;
|
||||
if (self.onReadyEvent) {
|
||||
self.onReadyEvent();
|
||||
}
|
||||
}
|
||||
var data = event.data;
|
||||
switch (data.target) {
|
||||
case 'stdout': {
|
||||
console.log(data.content);
|
||||
break;
|
||||
}
|
||||
case 'console-log': {
|
||||
console.log.apply(console, JSON.parse(data.content));
|
||||
break;
|
||||
}
|
||||
case 'console-debug': {
|
||||
console.debug.apply(console, JSON.parse(data.content));
|
||||
break;
|
||||
}
|
||||
case 'console-info': {
|
||||
console.info.apply(console, JSON.parse(data.content));
|
||||
break;
|
||||
}
|
||||
case 'console-warn': {
|
||||
console.warn.apply(console, JSON.parse(data.content));
|
||||
break;
|
||||
}
|
||||
case 'console-error': {
|
||||
console.error.apply(console, JSON.parse(data.content));
|
||||
break;
|
||||
}
|
||||
case 'stderr': {
|
||||
console.error(data.content);
|
||||
break;
|
||||
}
|
||||
case 'window': {
|
||||
window[data.method]();
|
||||
break;
|
||||
}
|
||||
case 'canvas': {
|
||||
switch (data.op) {
|
||||
case 'getContext': {
|
||||
self.ctx = self.canvas.getContext(data.type, data.attributes);
|
||||
break;
|
||||
}
|
||||
case 'resize': {
|
||||
self.resize(data.width, data.height);
|
||||
break;
|
||||
}
|
||||
case 'renderCanvas': {
|
||||
if (self.lastRenderTime < data.time) {
|
||||
self.lastRenderTime = data.time;
|
||||
self.renderFramesData = data;
|
||||
window.requestAnimationFrame(renderFrames);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'renderFastCanvas': {
|
||||
if (self.lastRenderTime < data.time) {
|
||||
self.lastRenderTime = data.time;
|
||||
self.renderFramesData = data;
|
||||
window.requestAnimationFrame(renderFastFrames);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'setObjectProperty': {
|
||||
self.canvas[data.object][data.property] = data.value;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw 'eh?';
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'tick': {
|
||||
self.frameId = data.id;
|
||||
self.worker.postMessage({
|
||||
target: 'tock',
|
||||
id: self.frameId
|
||||
});
|
||||
break;
|
||||
}
|
||||
case 'custom': {
|
||||
if (self['onCustomMessage']) {
|
||||
self['onCustomMessage'](event);
|
||||
} else {
|
||||
throw 'Custom message received but client onCustomMessage not implemented.';
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'setimmediate': {
|
||||
self.worker.postMessage({
|
||||
target: 'setimmediate'
|
||||
});
|
||||
break;
|
||||
}
|
||||
case 'get-events': {
|
||||
console.log(data.target);
|
||||
console.log(data.events);
|
||||
break;
|
||||
}
|
||||
case 'get-styles': {
|
||||
console.log(data.target);
|
||||
console.log(data.styles);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw 'what? ' + data.target;
|
||||
}
|
||||
};
|
||||
|
||||
self.resize = function (width, height, top, left) {
|
||||
var videoSize = null;
|
||||
top = top || 0;
|
||||
left = left || 0;
|
||||
if ((!width || !height) && self.video) {
|
||||
videoSize = self.getVideoPosition();
|
||||
width = videoSize.width * self.pixelRatio;
|
||||
height = videoSize.height * self.pixelRatio;
|
||||
var offset = self.canvasParent.getBoundingClientRect().top - self.video.getBoundingClientRect().top;
|
||||
top = videoSize.y - offset;
|
||||
left = videoSize.x;
|
||||
}
|
||||
if (!width || !height) {
|
||||
if (!self.video) {
|
||||
console.error('width or height is 0. You should specify width & height for resize.');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (
|
||||
self.canvas.width != width ||
|
||||
self.canvas.height != height ||
|
||||
self.canvas.style.top != top ||
|
||||
self.canvas.style.left != left
|
||||
) {
|
||||
self.canvas.width = width;
|
||||
self.canvas.height = height;
|
||||
|
||||
if (videoSize != null) {
|
||||
self.canvasParent.style.position = 'relative';
|
||||
self.canvas.style.display = 'block';
|
||||
self.canvas.style.position = 'absolute';
|
||||
self.canvas.style.width = videoSize.width + 'px';
|
||||
self.canvas.style.height = videoSize.height + 'px';
|
||||
self.canvas.style.top = top + 'px';
|
||||
self.canvas.style.left = left + 'px';
|
||||
self.canvas.style.pointerEvents = 'none';
|
||||
}
|
||||
|
||||
self.worker.postMessage({
|
||||
target: 'canvas',
|
||||
width: self.canvas.width,
|
||||
height: self.canvas.height
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
self.resizeWithTimeout = function () {
|
||||
self.resize();
|
||||
setTimeout(self.resize, 100);
|
||||
};
|
||||
|
||||
self.runBenchmark = function () {
|
||||
self.worker.postMessage({
|
||||
target: 'runBenchmark'
|
||||
});
|
||||
};
|
||||
|
||||
self.customMessage = function (data, options) {
|
||||
options = options || {};
|
||||
self.worker.postMessage({
|
||||
target: 'custom',
|
||||
userData: data,
|
||||
preMain: options.preMain
|
||||
});
|
||||
};
|
||||
|
||||
self.setCurrentTime = function (currentTime) {
|
||||
self.worker.postMessage({
|
||||
target: 'video',
|
||||
currentTime: currentTime
|
||||
});
|
||||
};
|
||||
|
||||
self.setTrackByUrl = function (url) {
|
||||
self.worker.postMessage({
|
||||
target: 'set-track-by-url',
|
||||
url: url
|
||||
});
|
||||
};
|
||||
|
||||
self.setTrack = function (content) {
|
||||
self.worker.postMessage({
|
||||
target: 'set-track',
|
||||
content: content
|
||||
});
|
||||
};
|
||||
|
||||
self.freeTrack = function (content) {
|
||||
self.worker.postMessage({
|
||||
target: 'free-track'
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
self.render = self.setCurrentTime;
|
||||
|
||||
self.setIsPaused = function (isPaused, currentTime) {
|
||||
self.worker.postMessage({
|
||||
target: 'video',
|
||||
isPaused: isPaused,
|
||||
currentTime: currentTime
|
||||
});
|
||||
};
|
||||
|
||||
self.setRate = function (rate) {
|
||||
self.worker.postMessage({
|
||||
target: 'video',
|
||||
rate: rate
|
||||
});
|
||||
};
|
||||
|
||||
self.dispose = function () {
|
||||
self.worker.postMessage({
|
||||
target: 'destroy'
|
||||
});
|
||||
|
||||
self.worker.terminate();
|
||||
self.workerActive = false;
|
||||
// Remove the canvas element to remove residual subtitles rendered on player
|
||||
if (self.video) {
|
||||
self.video.parentNode.removeChild(self.canvasParent);
|
||||
}
|
||||
};
|
||||
|
||||
self.createEvent = function (event) {
|
||||
self.worker.postMessage({
|
||||
target: 'create-event',
|
||||
event: event
|
||||
});
|
||||
};
|
||||
|
||||
self.getEvents = function () {
|
||||
self.worker.postMessage({
|
||||
target: 'get-events'
|
||||
});
|
||||
};
|
||||
|
||||
self.setEvent = function (event, index) {
|
||||
self.worker.postMessage({
|
||||
target: 'set-event',
|
||||
event: event,
|
||||
index: index
|
||||
});
|
||||
};
|
||||
|
||||
self.removeEvent = function (index) {
|
||||
self.worker.postMessage({
|
||||
target: 'remove-event',
|
||||
index: index
|
||||
});
|
||||
};
|
||||
|
||||
self.createStyle = function (style) {
|
||||
self.worker.postMessage({
|
||||
target: 'create-style',
|
||||
style: style
|
||||
});
|
||||
};
|
||||
|
||||
self.getStyles = function () {
|
||||
self.worker.postMessage({
|
||||
target: 'get-styles'
|
||||
});
|
||||
};
|
||||
|
||||
self.setStyle = function (style, index) {
|
||||
self.worker.postMessage({
|
||||
target: 'set-style',
|
||||
style: style,
|
||||
index: index
|
||||
});
|
||||
};
|
||||
|
||||
self.removeStyle = function (index) {
|
||||
self.worker.postMessage({
|
||||
target: 'remove-style',
|
||||
index: index
|
||||
});
|
||||
};
|
||||
|
||||
self.init();
|
||||
};
|
||||
|
||||
if (typeof SubtitlesOctopusOnLoad == 'function') {
|
||||
SubtitlesOctopusOnLoad();
|
||||
}
|
||||
|
||||
if (typeof exports !== 'undefined') {
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
exports = module.exports = SubtitlesOctopus
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
[Script Info]
|
||||
Title:
|
||||
ScriptType: v4.00+
|
||||
WrapStyle: 0
|
||||
PlayResX: 640
|
||||
PlayResY: 480
|
||||
ScaledBorderAndShadow: yes
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,0
|
||||
Style: Alt,Times New Roman,40,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,8,10,10,10,0
|
||||
|
||||
[Events]
|
||||
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
|
||||
Comment: 0,0:00:00.00,0:00:05.00,Default,,0000,0000,0000,,This line is a comment and should not display on rendered output. This file is intended to be rendered on a 640x480 video, preferably a single solid colour, or maybe a checkerboard pattern.
|
||||
Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0000,0000,0000,,This is a test of the ASS format and some basic features in it.
|
||||
Dialogue: 0,0:00:05.00,0:00:07.00,Default,,0000,0000,0000,,This and the previous line should both show at the bottom of the video in 20 pixel high white Arial with a 2 pixel black outline and 2 pixel offset shadow. This line is long so it should automatically be broken into several lines that are approximately even length, with upper lines being longer.
|
||||
Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0000,0000,0000,,Now going to test conflict resolution. {By the way, this is a common abuse, "inline-comments" in override tag groups. They should not be rendered and not generate errors, just be ignored.}
|
||||
Dialogue: 0,0:00:07.50,0:00:09.00,Default,,0000,0000,0000,,This line should be above the previous.
|
||||
Dialogue: 0,0:00:09.00,0:00:11.00,Default,,0000,0000,0000,,{\an1}This line should be lower-left aligned using the \an1 override.
|
||||
Dialogue: 0,0:00:11.00,0:00:13.00,Default,,0000,0000,0000,,{\an9}Upper right
|
||||
Dialogue: 0,0:00:12.00,0:00:14.00,Alt,,0000,0000,0000,,This one should be below the "Upper right" line and be centered on screen. It should also be in 40 pixel high Times New Roman.
|
||||
Dialogue: 0,0:00:14.00,0:00:16.00,Alt,,0000,0000,0000,,{\fs10}This should also be a toptitle in Times New Roman, but much smaller. Using an override tag to change size.
|
||||
Dialogue: 0,0:00:16.00,0:00:18.00,Alt,,0000,0000,0000,,{\a5}Top-left using the legacy \a5 tag
|
||||
Dialogue: 0,0:00:18.00,0:00:20.00,Default,,0000,0000,0000,,{\an5}This line is centered on screen.\NAt the bottom of the screen should be two lines in different layers, they are rendered on top of each other because conflict resolution only considers lines in the same layer.
|
||||
Dialogue: 0,0:00:18.00,0:00:20.00,Default,,0000,0000,0000,,This is in layer 0
|
||||
Dialogue: 1,0:00:18.00,0:00:20.00,Default,,0000,0000,0000,,And this line is in layer 1
|
||||
Dialogue: 0,0:00:20.00,0:00:22.00,Default,,0000,0000,0000,,Another line in layer 0
|
||||
Dialogue: 1,0:00:20.00,0:00:22.00,Default,,0050,0000,0020,,And this line is in layer 1, but has changed its margins so it isn't exactly centered, and it's raised above the other line.
|
||||
Dialogue: 0,0:00:22.00,0:00:24.00,Default,,0000,0000,0000,,Switching {\fnTimes New Roman}font inline, {\r}and resetting styles
|
||||
Dialogue: 0,0:00:24.00,0:00:26.00,Default,,0000,0000,0000,,Also {\rAlt}switching to a different style {\r}inline
|
||||
Dialogue: 0,0:00:26.00,0:00:28.00,Default,,0000,0000,0000,,{\an5\pos(258,131)}Positioning... this line should be in an odd place
|
||||
Dialogue: 0,0:00:26.00,0:00:28.00,Default,,0000,0000,0000,,{\an5\pos(222,338)\frz29.559}So should this one, and be rotated
|
||||
Dialogue: 0,0:00:28.00,0:00:30.00,Default,,0000,0000,0000,,{\pos(371,314)\frz338.403\frx42\fry30\org(187,165)}Some more rotation tricks, this time in 3D and with a different origin
|
||||
Dialogue: 0,0:00:30.00,0:00:32.00,Default,,0000,0000,0000,,{\an5\t(\frz360)}This line is animated and rotates 360 degrees over its duration
|
||||
Dialogue: 0,0:00:32.00,0:00:34.00,Default,,0000,0000,0000,,{\an5\move(182,157,414,311)}This line moves
|
||||
Dialogue: 0,0:00:34.00,0:00:36.00,Default,,0000,0000,0000,,{\an5\clip(126,192,487,241)}This line is only partially visible\Nso if you can see this, \clip is handled incorrectly
|
||||
Dialogue: 0,0:00:36.00,0:00:38.00,Default,,0000,0000,0000,,{\an5\clip(m 178 212 l 163 249 212 302 257 232 309 249 366 241 392 285 473 267 487 210 421 241 353 219 207 258)}And this line has a funnily-shaped clip area
|
||||
Dialogue: 0,0:00:38.00,0:00:40.00,Default,,0000,0000,0000,,{\an5\pos(321,193)}Here should be a pretty feather with a thin border and no shadow:
|
||||
Dialogue: 0,0:00:38.00,0:00:40.00,Default,,0000,0000,0000,,{\an5\bord1\shad0\p1\fscx300\fscy300\pos(316,312)}m 0 0 b 33 -3 48 -7 61 -19 b 53 -7 31 -1 1 2 m 9 0 b 9 -5 10 -6 14 -12 b 9 -5 10 -3 10 0 m 10 -1 b 10 -5 11 -8 16 -12 b 17 -12 18 -13 22 -14 b 18 -10 16 -6 15 -1 b 17 -6 19 -10 23 -14 l 26 -15 b 22 -11 20 -6 19 -2 b 24 -11 27 -14 28 -15 b 31 -16 35 -16 39 -16 b 37 -14 36 -10 36 -5 b 36 -9 38 -14 39 -16 b 41 -16 43 -16 45 -15 b 44 -13 43 -10 43 -7 l 29 -3 m 43 -7 b 44 -11 45 -13 47 -15 b 46 -13 46 -11 46 -9 b 46 -11 47 -13 49 -15 b 51 -15 48 -13 48 -9 b 49 -11 49 -14 52 -16 b 55 -16 53 -17 51 -11 l 48 -8 m 54 -13 b 53 -14 54 -15 54 -16 b 54 -15 54 -14 55 -13 b 57 -13 60 -12 62 -14 b 61 -12 55 -12 53 -12 b 55 -11 56 -10 61 -10 b 61 -7 53 -9 52 -11 b 53 -8 55 -7 58 -6 b 57 -5 56 -4 54 -3 b 49 -5 48 -6 47 -9 b 47 -6 50 -4 53 -2 b 49 -3 47 -6 45 -8 b 46 -6 49 -3 52 -1 b 46 2 45 3 43 3 b 40 0 39 -3 40 -6 b 39 -3 39 1 42 3 b 40 6 36 1 34 -4 b 35 -1 36 2 38 5 b 32 7 26 9 22 8 b 19 5 17 2 16 -1 b 17 3 19 5 20 7 b 17 4 16 2 15 0 b 15 2 17 5 19 8 b 15 9 13 3 12 0 l 25 -2 l 42 -7 m 12 0 b 13 3 13 7 17 9 b 12 7 10 1 10 0
|
||||
Dialogue: 0,0:00:40.00,0:00:42.00,Default,,0000,0000,0000,,Some other basic font style tests:\NNormal, {\b1}Boldface{\r}, {\i1}Italics{\r}, {\u1}Underline{\r}, {\s1}Strikethrough
|
||||
Dialogue: 0,0:00:42.00,0:00:44.00,Default,,0000,0000,0000,,There should be no linebreak here,\nbut there should be one here\Nso this is on a separate line.
|
||||
Dialogue: 0,0:00:44.00,0:00:46.00,Default,,0000,0000,0000,,This line is pushed left by adding some hard spaces to the right\h\h\h\h\h\h\h\h\h\h\h\h\h\h\h\h\h\h\h\h
|
||||
Dialogue: 0,0:00:44.00,0:00:46.00,Default,,0000,0000,0000,, Regular spaces at line start/end are ignored, so this line is centered
|
||||
Dialogue: 0,0:00:46.00,0:00:48.00,Default,,0000,0000,0000,,{\an8\q2}This is a long line but it is not broken into several because it's using the \q override tag which changes the line-wrapping mode for a single line. The tag can take several values, 0 is the default which is "smart wrapping" with top lines longer, 1 is regular wrapping, 2 is no wrapping and 3 is smart-wrapping with bottom lines longer.
|
||||
Dialogue: 0,0:00:46.00,0:00:48.00,Default,,0000,0000,0000,,{\an5\q1}This is a long line using the \q1 override tag to get "dumb" wrapping, make as long lines as possible and first wrap when it'd go off screen. This is mostly visible when the last line generated is short.
|
||||
Dialogue: 0,0:00:46.00,0:00:48.00,Default,,0000,0000,0000,,{\q3}And this line uses the \q3 wrapping style, which is similar to the \q0 default smart-wrap style, but has lower lines longer than the upper ones.
|
||||
Dialogue: 0,0:00:48.00,0:00:50.00,Default,,0000,0000,0000,,{\an5}{\bord0\t(\bord10)}This text has a growing border\N{\r\shad0\t(\shad10)}This text has an increasing shadow\N{\r\t(\fry360)}This text is rotating around the Y axis\N{\r\t(\frz720)}This text rotates {\t(\frx360)}and this one even more
|
||||
Dialogue: 0,0:00:50.00,0:00:52.00,Default,,0000,0000,0000,,{\an5\bord0\shad0}All of this has no border or shadow...\N{\1c&H0000FF&}This is bright red, {\1c&H00FF00&}green, {\1c&HFF0000}blue{\1c&HFFFFFF&}\N{\1a&H80&}50% transparent
|
||||
Dialogue: 0,0:00:52.00,0:00:54.00,Default,,0000,0000,0000,,{\fsp10}Large inter-letter spacing
|
||||
Dialogue: 0,0:00:54.00,0:00:56.00,Default,,0000,0000,0000,,{\shad0}No shadow here, just regular border, {\be1}but this is \be1 blurred edges!
|
||||
Dialogue: 0,0:00:56.00,0:00:58.00,Default,,0000,0000,0000,,{\t(1000,2000,\alpha&HFF&)}Fading out after 1 sec on screen, using \alpha. Everything should fade.
|
||||
Dialogue: 0,0:00:58.00,0:01:00.00,Default,,0000,0000,0000,,{\fad(1000,1000)}Fading in and out using \fad
|
||||
Dialogue: 0,0:01:00.00,0:01:02.00,Default,,0000,0000,0000,,{\k10}And {\k5}now {\k20}for {\kf50}ka{\kf20}ra{\K70}o{\K10}ke{\k0}!
|
||||
Dialogue: 0,0:01:02.00,0:01:04.00,Default,,0000,0000,0000,,{\an5\t()\clip(69,215,573,267)\t(1000,2000,3,\clip(573,267,573,267))}And the last thing on the programme, an animated rectangular \clip, delayed by 1 second. And it even uses acceleration...!
|
||||
@@ -0,0 +1,49 @@
|
||||
[Script Info]
|
||||
; // 此字幕由爱幕生成
|
||||
Synch Point:1
|
||||
ScriptType:v4.00+
|
||||
Collisions:Normal
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
Style: Default, Microsoft YaHei, 20, &H00FFFFFF, &H000092FE, &H00000000, &H82000000, 0, 0, 0, 0, 100, 100, 0, 0, 1, 1, 2, 2, 10, 10, 30, 134
|
||||
Style: Style1, Microsoft YaHei, 20, &H0000DCFC, &H0000DCFC, &H00000000, &H82000000, 0, 0, 0, 0, 100, 100, 1, 0, 1, 1, 2, 2, 10, 10, 30, 134
|
||||
Style: Style2, ZCOOL KuaiLe, 20, &H0000DDA4, &H0000DDA4, &H00334D19, &H82000000, 0, 0, 0, 0, 100, 100, 1, 0, 4, 1, 3, 2, 10, 10, 50, 134
|
||||
Style: Style3, Source Han Sans CN Medium, 28, &H009E14AB, &H009E14AB, &H00009EFB, &H82000000, 0, 0, 0, 0, 100, 100, 1, 0, 1, 1, 2, 2, 10, 10, 100, 134
|
||||
|
||||
[Events]
|
||||
Format: Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect, Text
|
||||
Dialogue: 0,0:00:00.31,0:00:00.84,Style1,NTP,0000,0000,0000,,那一天\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}あの日
|
||||
Dialogue: 0,0:00:01.28,0:00:02.22,Style2,NTP,0000,0000,0000,,星星降落的日子\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}星が降った日
|
||||
Dialogue: 0,0:00:03.15,0:00:04.41,Style3,NTP,0000,0000,0000,,那简直是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}それはまるで
|
||||
Dialogue: 0,0:00:04.45,0:00:04.97,Default,NTP,0000,0000,0000,,简直\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}まるで
|
||||
Dialogue: 0,0:00:05.12,0:00:06.30,Default,NTP,0000,0000,0000,,像梦中的景色一样\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}夢の景色のように
|
||||
Dialogue: 0,0:00:07.44,0:00:08.98,Default,NTP,0000,0000,0000,,美丽的景色\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}美しい眺めだった
|
||||
Dialogue: 0,0:00:24.60,0:00:25.09,Default,NTP,0000,0000,0000,,放学后\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}放課後
|
||||
Dialogue: 0,0:00:25.70,0:00:26.26,Default,NTP,0000,0000,0000,,不好\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}悪い
|
||||
Dialogue: 0,0:00:26.48,0:00:27.68,Default,NTP,0000,0000,0000,,我今天开始打工\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}おれ今日これからバイト
|
||||
Dialogue: 0,0:00:29.34,0:00:31.69,Default,NTP,0000,0000,0000,,已经讨厌这样的乡下了\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}もうこんな田舎嫌だよー
|
||||
Dialogue: 0,0:00:31.97,0:00:33.53,Default,NTP,0000,0000,0000,,讨厌这样的人生\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}こんな人生嫌だ
|
||||
Dialogue: 0,0:00:33.93,0:00:37.97,Default,NTP,0000,0000,0000,,来世请让我成为东京的帅哥吧\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}来世は東京のイケメン男子にしてくださーい
|
||||
Dialogue: 0,0:00:42.08,0:00:42.87,Default,NTP,0000,0000,0000,,哪里\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}どこ
|
||||
Dialogue: 0,0:00:43.05,0:00:44.17,Default,NTP,0000,0000,0000,,那么说来\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}そういえば
|
||||
Dialogue: 0,0:00:44.55,0:00:47.08,Default,NTP,0000,0000,0000,,我觉得好像一直做着奇怪的梦\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}ずっと変な夢を見てたような気がするんだけど
|
||||
Dialogue: 0,0:00:48.32,0:00:50.63,Default,NTP,0000,0000,0000,,别人的人生中…梦\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}別の人の人生の…夢
|
||||
Dialogue: 0,0:00:51.45,0:00:52.74,Default,NTP,0000,0000,0000,,这是什么\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}何だ これ
|
||||
Dialogue: 0,0:00:54.78,0:00:55.44,Default,NTP,0000,0000,0000,,这个,这个\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}これって
|
||||
Dialogue: 0,0:00:56.72,0:00:57.72,Default,NTP,0000,0000,0000,,这难道是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}これってもしかして
|
||||
Dialogue: 0,0:00:58.08,0:00:59.33,Default,NTP,0000,0000,0000,,我们在梦中\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}俺達は夢の中で
|
||||
Dialogue: 0,0:01:00.14,0:01:01.20,Default,NTP,0000,0000,0000,,替换着\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}入れ替わってる
|
||||
Dialogue: 0,0:01:07.37,0:01:08.30,Default,NTP,0000,0000,0000,,确实的事情\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}確かなことが
|
||||
Dialogue: 0,0:01:08.76,0:01:09.54,Default,NTP,0000,0000,0000,,只有一个\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}一つだけある
|
||||
Dialogue: 0,0:01:10.33,0:01:11.04,Default,NTP,0000,0000,0000,,我们是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}私達は
|
||||
Dialogue: 0,0:01:11.42,0:01:12.32,Default,NTP,0000,0000,0000,,见面的话绝对\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}会えば絶対
|
||||
Dialogue: 0,0:01:12.68,0:01:13.53,Default,NTP,0000,0000,0000,,马上就明白\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}すぐにわかる
|
||||
Dialogue: 0,0:01:14.25,0:01:15.28,Default,NTP,0000,0000,0000,,我想说\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}言おうと思ったんだ
|
||||
Dialogue: 0,0:01:16.08,0:01:17.58,Default,NTP,0000,0000,0000,,你是世界的无论在哪里\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}お前が世界のどこにいても
|
||||
Dialogue: 0,0:01:17.95,0:01:19.05,Default,NTP,0000,0000,0000,,一定要去见你\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}必ず会いに行くって
|
||||
Dialogue: 0,0:01:20.14,0:01:20.94,Default,NTP,0000,0000,0000,,你是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}あなたは
|
||||
Dialogue: 0,0:01:21.36,0:01:21.80,Default,NTP,0000,0000,0000,,谁\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}誰
|
||||
Dialogue: 0,0:01:22.20,0:01:22.76,Default,NTP,0000,0000,0000,,你是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}お前は
|
||||
Dialogue: 0,0:01:23.48,0:01:24.04,Default,NTP,0000,0000,0000,,谁\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}誰だ
|
||||
Dialogue: 0,0:01:25.69,0:01:26.47,Default,NTP,0000,0000,0000,,你的名字是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}君の名は
|
||||
@@ -1,69 +0,0 @@
|
||||
var vConsole = new VConsole();
|
||||
|
||||
var art = new Artplayer({
|
||||
container: '.artplayer-app',
|
||||
url: 'https://artplayer.org/assets/sample/video.mp4',
|
||||
title: 'One More Time One More Chance',
|
||||
poster: '/assets/sample/poster.jpg',
|
||||
autoSize: true,
|
||||
loop: true,
|
||||
mutex: true,
|
||||
theme: '#ffad00',
|
||||
fullscreen: true,
|
||||
fullscreenWeb: true,
|
||||
miniProgressBar: true,
|
||||
moreVideoAttr: {
|
||||
playsInline: true,
|
||||
'webkit-playsinline': true,
|
||||
'x5-video-player-type': 'h5',
|
||||
'x5-video-player-fullscreen': false,
|
||||
'x5-video-orientation': 'portraint',
|
||||
},
|
||||
subtitle: {
|
||||
url: '/assets/sample/subtitle.srt',
|
||||
style: {
|
||||
color: '#fff',
|
||||
fontSize: '14px',
|
||||
},
|
||||
},
|
||||
layers: [
|
||||
{
|
||||
html: `<img style="width: 50px" src="/assets/sample/layer.png">`,
|
||||
click: function () {
|
||||
console.info('You clicked on the custom layer');
|
||||
},
|
||||
style: {
|
||||
position: 'absolute',
|
||||
top: '10px',
|
||||
right: '10px',
|
||||
opacity: '.9',
|
||||
},
|
||||
},
|
||||
],
|
||||
icons: {
|
||||
loading: '<img src="./assets/img/ploading.gif">',
|
||||
state: '<img src="./assets/img/state.svg">',
|
||||
},
|
||||
plugins: [
|
||||
artplayerPluginDanmuku({
|
||||
danmuku: '/assets/sample/danmuku.xml',
|
||||
speed: 5,
|
||||
maxlength: 100,
|
||||
margin: [10, 70],
|
||||
opacity: 1,
|
||||
fontSize: 14,
|
||||
synchronousPlayback: false,
|
||||
}),
|
||||
],
|
||||
whitelist: ['*'],
|
||||
});
|
||||
|
||||
Artplayer.config.events.forEach(function (item) {
|
||||
art.on('video:' + item, function (event) {
|
||||
console.log('video: ' + event.type);
|
||||
});
|
||||
});
|
||||
|
||||
if (Artplayer.utils.isWechat) {
|
||||
document.querySelector('.tip').textContent = '微信环境需手动触发播放';
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><i><chatserver></chatserver><chatid>11724691</chatid><mission></mission><maxlimit></maxlimit><state></state><real_name></real_name><source></source><d p="0.465,5,25,26214,1480410348,11,e6d2b8ad,2704552969">泷:三叶,请记住我的名字“I LOVE YOU”</d><d p="0.465,5,25,16777215,1480410348,11,e6d2b8ad,2704553613">泷:三叶,请记住我的名字“I LOVE YOU”</d><d p="0.465,5,25,26112,1480410348,11,e6d2b8ad,2704554207">泷:三叶,请记住我的名字“I LOVE YOU”</d><d p="0.465,5,25,153,1480410349,11,e6d2b8ad,2704554619">泷:三叶,请记住我的名字“I LOVE YOU”</d><d p="0.465,5,25,6750054,1480410349,11,e6d2b8ad,2704555293">泷:三叶,请记住我的名字“I LOVE YOU”</d><d p="0,1,25,16777215,1480507709,1,f1118a60,2707380543"> 被秀了一脸恩爱</d><d p="0,1,25,16777215,1480507733,11,71176b2b,2707448679">和素未相识的网友一起配对啦!有点小激动~</d><d p="0.397,1,25,16777215,1480507736,11,30ae2d68,2707456541">配对成功,领到票了!~感谢B站!</d><d p="0.998,4,25,16711680,1480511354,11,784632ed,2707517761">长理携手同行~君之名</d><d p="0.464,5,25,16711680,1480511374,11,b430db82,2707587437">南宁单身狗的愤怒!!!!抢不到票!只能买!!!</d><d p="0,5,25,6750156,1485234066,11,e3205a8,2892019964">真·神作</d><d p="0.659,5,25,16777215,1494846439,11,6f2da951,3360883360">小僚机,我知道你会来看</d><d p="0.216,5,25,15138834,1627771015,1,ec179f6,52758493762945027">十个在哭,九个在狂笑(指鬼畜)</d><d p="1.103,1,25,16777215,1479974691,11,34d8ddf9,2689553545">我要把我欠的票都还了</d><d p="1.101,5,25,15138834,1479982003,11,7a51ca7e,2689798191">新海诚的票该还了!</d><d p="1.186,5,25,16711680,1480179684,11,9b7de097,2697536623">清露,牵手一起看吧</d><d p="1.242,5,25,41194,1480413988,1,1bf2e5d0,2704646713">呐,媳妇,我们一起看吧,然后订婚吧</d><d p="1.236,5,25,16777215,1480507737,1,4c53bc94,2707460573">你们能够理解我找妹子但是她登陆不上</d><d p="1.236,5,25,16777215,1480507737,11,4c53bc94,2707462659">最后迫不得已和室友配对成功,妹子又能登陆了</d><d p="1.984,1,25,16777215,1480842316,1,9ec9710f,2719145455">诚哥已经暴走碾压票房了</d><d p="1.362,5,25,16737843,1480932398,11,11000a3,2722220923">希望下辈子可以做个东京的帅哥</d><d p="1.687,1,25,16776960,1480939732,11,9d428cc8,2722641857">你的名字并出示你的驾驶证,你已经违规超速</d><d p="1.024,5,25,16777215,1481346068,11,a1d2e4fd,2735207423">希望下辈子可以做个东京的帅哥</d><d p="1.382,5,25,16707842,1487761657,9,d1f803de,3034151580">你的名字,茨木童子</d><d p="1.336,5,25,15138834,1501816307,1,116cf666,3647711960">结果跟基友看了。。。</d><d p="1.819,5,25,16777215,1523157002,11,42ca01f4,4446088750">bgm是黄昏之时 32秒开始</d><d p="1.662,4,25,9487136,1563115700,10,234a8c6a,18860487968030784">看的时候几乎从中间就开始哭,哭到坐车回家的路上还是在哭</d><d p="1.415,5,25,15138834,1626699746,1,ec179f6,52196839793360899">一个被鬼畜区玩坏的新海诚作品预告</d><d p="2.977,1,25,16777215,1479711804,8,a95074f6,2681576151">把之前欠诚哥的电影票还了!!!!</d><d p="2.403,1,25,14811775,1479711820,1,540181fb,2681602949">今晚逃晚自习来看</d><d p="2.261,1,25,16777215,1479867045,7,57aabaf6,2686476547">一天看 十次的节奏</d><d p="2.914,1,25,16777215,1479996640,11,6d5943e4,2690508451">已订票!!!坐标成都!!</d><d p="2.746,5,25,65535,1480064712,11,6719b12f,2692368809">清晨,我睁开眼睛时</d><d p="2.542,1,25,16777215,1480158460,7,b69f3e5a,2696198143">看完超级感动!!!!想和喜欢的人一起去看!!!你的名字是——SXY</d><d p="2.363,5,25,16776960,1480165758,5,c160358f,2696604905">钟晋我们一起去看吧</d><d p="2.311,5,25,16777215,1480233862,4,8017a98f,2699305393">荧荧。我们一起去看好吗。</d><d p="2.036,4,18,16777215,1480345885,7,d948d805,2703226509">目が覚めると</d><d p="2.601,1,25,41194,1480413988,1,1bf2e5d0,2704647585">呐,媳妇,我们一起看吧,然后订婚吧</d><d p="2.527,1,25,10079232,1480417658,11,2805d07,2704838747">小祁啊~好想和你一起去看啊</d><d p="2.98,1,25,16777215,1480507716,9,7c74b51c,2707397713">Morphine,其实Sekka想跟你一起去</d><d p="2.683,5,25,14811775,1480507722,9,4c28c99,2707414993">好的 安徒生</d><d p="2.12,5,25,16711680,1480507737,1,3c70614c,2707461715">邓云遥,我们一起去看吧~</d><d p="2.813,1,25,16777215,1480511374,6,1be1c658,2707587439">宝贝,咱俩一起看</d><d p="2.618,5,25,6737151,1480511393,11,2168da58,2707658573">同南宁,估计又得自己去淘票了!</d><d p="2.159,1,25,16777215,1480518663,9,e4a4c1fc,2707915557">不知道为什么只是看见这个开头就有种想哭的感</d><d p="2.03,1,25,14811775,1480536244,9,b647f440,2708348593">没抢到票。。。Line truncated
|
||||
@@ -1,97 +1,49 @@
|
||||
[Script Info]
|
||||
; This is an Advanced Sub Station Alpha v4+ script.
|
||||
Title: phpNOQ5Gi
|
||||
ScriptType: v4.00+
|
||||
Collisions: Normal
|
||||
PlayDepth: 0
|
||||
[Script Info]
|
||||
; // 此字幕由爱幕生成
|
||||
Synch Point:1
|
||||
ScriptType:v4.00+
|
||||
Collisions:Normal
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
Style: Default,Arial,20,&H00FFFFFF,&H0300FFFF,&H00000000,&H02000000,0,0,0,0,100,100,0,0,1,2,1,2,10,10,10,1
|
||||
Style: Default, Microsoft YaHei, 20, &H00FFFFFF, &H000092FE, &H00000000, &H82000000, 0, 0, 0, 0, 100, 100, 0, 0, 1, 1, 2, 2, 10, 10, 30, 134
|
||||
Style: Style1, Microsoft YaHei, 20, &H0000DCFC, &H0000DCFC, &H00000000, &H82000000, 0, 0, 0, 0, 100, 100, 1, 0, 1, 1, 2, 2, 10, 10, 30, 134
|
||||
Style: Style2, ZCOOL KuaiLe, 20, &H0000DDA4, &H0000DDA4, &H00334D19, &H82000000, 0, 0, 0, 0, 100, 100, 1, 0, 4, 1, 3, 2, 10, 10, 50, 134
|
||||
Style: Style3, Source Han Sans CN Medium, 28, &H009E14AB, &H009E14AB, &H00009EFB, &H82000000, 0, 0, 0, 0, 100, 100, 1, 0, 1, 1, 2, 2, 10, 10, 100, 134
|
||||
|
||||
[Events]
|
||||
Format: Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect, Text
|
||||
Dialogue: 0,0:00:01.50,0:00:03.95,Default,,0,0,0,,歌名:One More Time,One More Chance\N〖愿往事重来〗
|
||||
Dialogue: 0,0:00:04.00,0:00:05.95,Default,,0,0,0,,【新海诚动画】『秒速5センチメートル』\N《秒速5厘米》主题曲
|
||||
Dialogue: 0,0:00:06.00,0:00:08.95,Default,,0,0,0,,编曲:森俊之
|
||||
Dialogue: 0,0:00:09.00,0:00:11.95,Default,,0,0,0,,作词|作曲|演唱:山崎まさよし <山崎将义>
|
||||
Dialogue: 0,0:00:12.00,0:00:15.95,Default,,0,0,0,,
|
||||
Dialogue: 0,0:00:16.00,0:00:20.25,Default,,0,0,0,,これ以上何をう失(し)なえば\N【还要再失去什么】
|
||||
Dialogue: 0,0:00:20.30,0:00:23.25,Default,,0,0,0,,心は许(ゆる)されるの\N【才能让心得到宽恕?】
|
||||
Dialogue: 0,0:00:23.30,0:00:27.25,Default,,0,0,0,,どれ程(ほど)の痛(いた)みならば\N【还要再怎样痛苦】
|
||||
Dialogue: 0,0:00:27.30,0:00:30.25,Default,,0,0,0,,もう一度君に会(あ)える\N【才能与你再次相见】
|
||||
Dialogue: 0,0:00:30.30,0:00:33.25,Default,,0,0,0,,One more time
|
||||
Dialogue: 0,0:00:33.30,0:00:37.95,Default,,0,0,0,,季节(きせつ)よ うつろわないで\N【不愿看到季节的变迁】
|
||||
Dialogue: 0,0:00:38.00,0:00:41.05,Default,,0,0,0,,One more time
|
||||
Dialogue: 0,0:00:41.10,0:00:45.25,Default,,0,0,0,,ふざけあった时间(じかん)よ\N【曾与你嬉闹的时光啊】
|
||||
Dialogue: 0,0:00:45.30,0:00:49.25,Default,,0,0,0,,くいちがうときはいつも\N【每次争执的时候】
|
||||
Dialogue: 0,0:00:49.30,0:00:53.10,Default,,0,0,0,,仆が先(さき)に折(お)れたね\N【总是我先让步】
|
||||
Dialogue: 0,0:00:53.15,0:00:56.25,Default,,0,0,0,,わがままな性格(せいかく)が\N【你那任性的性格】
|
||||
Dialogue: 0,0:00:56.30,0:00:59.25,Default,,0,0,0,,なおさら爱(いと)しくさせた\N【反而令你更加可爱】
|
||||
Dialogue: 0,0:00:59.30,0:01:02.95,Default,,0,0,0,,One more chance
|
||||
Dialogue: 0,0:01:03.00,0:01:07.25,Default,,0,0,0,,记忆(きおく)に足(あし)を取(と)られて\N【回忆绊住我的脚步】
|
||||
Dialogue: 0,0:01:07.30,0:01:10.25,Default,,0,0,0,,One more chance
|
||||
Dialogue: 0,0:01:10.30,0:01:14.95,Default,,0,0,0,,次(つぎ)の场所を选(えら)べない\N【无法选择下个地方】
|
||||
Dialogue: 0,0:01:15.00,0:01:18.25,Default,,0,0,0,,いつでも捜(さが)しているよ\N【总是在一直寻觅】
|
||||
Dialogue: 0,0:01:18.30,0:01:21.95,Default,,0,0,0,,どっかに君の姿(すがた)を\N【寻觅着你的身影】
|
||||
Dialogue: 0,0:01:22.00,0:01:23.95,Default,,0,0,0,,向(むか)いのホーム\N【对面的月台上】
|
||||
Dialogue: 0,0:01:24.00,0:01:25.95,Default,,0,0,0,,路地裏(ろじうら)の窓(まど)\N【在小巷的窗口里】
|
||||
Dialogue: 0,0:01:26.00,0:01:29.25,Default,,0,0,0,,こんなとこにいるはずもないのに\N【尽管明知道你不可能在那里】
|
||||
Dialogue: 0,0:01:29.30,0:01:33.25,Default,,0,0,0,,愿(ねが)いがもしも叶(かな)うなら\N【若愿望能够实现】
|
||||
Dialogue: 0,0:01:33.30,0:01:36.55,Default,,0,0,0,,いますぐ君のもとへ\N【好想马上去到你身边】
|
||||
Dialogue: 0,0:01:36.60,0:01:40.25,Default,,0,0,0,,できないことは もう何もない\N【如今我再也不会有丝毫退缩】
|
||||
Dialogue: 0,0:01:40.30,0:01:47.30,Default,,0,0,0,,すべてかけて抱きしめてみせるよ\N【我会不顾一切将你紧紧拥抱】
|
||||
Dialogue: 0,0:01:47.35,0:01:51.95,Default,,0,0,0,,
|
||||
Dialogue: 0,0:01:52.00,0:01:55.25,Default,,0,0,0,,
|
||||
Dialogue: 0,0:01:55.30,0:01:59.25,Default,,0,0,0,,寂(さび)しさ纷(まぎ)らすだけなら\N【如果只是为了排遣寂寞】
|
||||
Dialogue: 0,0:01:59.30,0:02:02.95,Default,,0,0,0,,谁でもいいはずなのに\N【其实不管是谁都无所谓】
|
||||
Dialogue: 0,0:02:03.00,0:02:07.25,Default,,0,0,0,,星が落(お)ちそうな夜(よる)だから\N【唯有在星辰仿佛要坠落的夜晚】
|
||||
Dialogue: 0,0:02:07.30,0:02:10.25,Default,,0,0,0,,自分(じぶん)をいつわれない\N【我无法欺骗自己】
|
||||
Dialogue: 0,0:02:10.30,0:02:13.25,Default,,0,0,0,,One more time
|
||||
Dialogue: 0,0:02:13.30,0:02:17.25,Default,,0,0,0,,季节(きせつ)よ うつろわないで\N【不愿看到季节的变迁】
|
||||
Dialogue: 0,0:02:17.30,0:02:20.25,Default,,0,0,0,,One more time
|
||||
Dialogue: 0,0:02:20.30,0:02:24.60,Default,,0,0,0,,ふざけあった时间(じかん)よ\N【曾与你嬉闹的时光啊】
|
||||
Dialogue: 0,0:02:24.65,0:02:25.25,Default,,0,0,0,,
|
||||
Dialogue: 0,0:02:25.30,0:02:29.05,Default,,0,0,0,,いつでも捜(さが)しているよ\N【总是在一直寻觅】
|
||||
Dialogue: 0,0:02:29.10,0:02:32.25,Default,,0,0,0,,どっかに君(きみ)の姿(すがた)を\N【寻觅着你的身影】
|
||||
Dialogue: 0,0:02:32.30,0:02:34.25,Default,,0,0,0,,交差点(こうさてん)でも\N【每个十字路口】
|
||||
Dialogue: 0,0:02:34.30,0:02:36.25,Default,,0,0,0,,梦の中でも 【每次梦境之中】
|
||||
Dialogue: 0,0:02:36.30,0:02:39.95,Default,,0,0,0,,こんなとこにいるはずもないのに\N【尽管明知道你不可能在那里】
|
||||
Dialogue: 0,0:02:40.00,0:02:43.25,Default,,0,0,0,,奇迹(きせき)がもしも起(お)こるなら\N【若奇迹将会发生】
|
||||
Dialogue: 0,0:02:43.30,0:02:46.95,Default,,0,0,0,,今すぐ君に见せたい\N【我希望马上就能见到你】
|
||||
Dialogue: 0,0:02:47.00,0:02:50.25,Default,,0,0,0,,新しい朝(あさ) これからの仆\N【无论崭新的清晨 还是今后的自己】
|
||||
Dialogue: 0,0:02:50.30,0:02:57.25,Default,,0,0,0,,言えなかった「好き」という言叶も\N【或是那句没能说出口的「喜欢你」】
|
||||
Dialogue: 0,0:02:57.30,0:03:04.45,Default,,0,0,0,,
|
||||
Dialogue: 0,0:03:04.50,0:03:05.95,Default,,0,0,0,,
|
||||
Dialogue: 0,0:03:06.00,0:03:13.95,Default,,0,0,0,,夏の想い出がまわる\N【夏日的回忆在脑海中回旋】
|
||||
Dialogue: 0,0:03:14.00,0:03:20.95,Default,,0,0,0,,ふいに消(き)えた鼓动(こどう)\N【刹那间消失的悸动】
|
||||
Dialogue: 0,0:03:21.00,0:03:24.95,Default,,0,0,0,,いつでも捜(さが)しているよ\N【总是在一直寻觅】
|
||||
Dialogue: 0,0:03:25.00,0:03:27.95,Default,,0,0,0,,どっかに君の姿(すがた)を\N【寻觅着你的身影】
|
||||
Dialogue: 0,0:03:28.00,0:03:29.95,Default,,0,0,0,,明(あ)け方(がた)の街(まち)\N【在拂晓的街头】
|
||||
Dialogue: 0,0:03:30.00,0:03:31.95,Default,,0,0,0,,桜木町(さくらぎちょう)で\N【在种满樱树的小镇】
|
||||
Dialogue: 0,0:03:32.00,0:03:35.95,Default,,0,0,0,,こんなとこに来(く)るはずもないのに\N【尽管明知道你不可能在那里】
|
||||
Dialogue: 0,0:03:36.00,0:03:39.25,Default,,0,0,0,,愿(ねが)いがもしも叶(かな)うなら\N【若愿望能够实现】
|
||||
Dialogue: 0,0:03:39.30,0:03:43.05,Default,,0,0,0,,今すぐ君のもとへ\N【现在马上去到你身边】
|
||||
Dialogue: 0,0:03:43.10,0:03:46.80,Default,,0,0,0,,できないことは もう何(なに)もない\N【如今我再也不会有丝毫退缩】
|
||||
Dialogue: 0,0:03:46.85,0:03:50.60,Default,,0,0,0,,すべてかけて抱きしめてみせるよ\N【我会不顾一切紧紧将你拥抱】
|
||||
Dialogue: 0,0:03:50.65,0:03:54.25,Default,,0,0,0,,いつでも捜(さが)しているよ\N【总是在一直寻觅】
|
||||
Dialogue: 0,0:03:54.30,0:03:57.70,Default,,0,0,0,,どっかに君のかけらを\N【寻觅着你的片断】
|
||||
Dialogue: 0,0:03:57.75,0:03:59.25,Default,,0,0,0,,旅先(たびさき)の店(みせ)\N【在旅途中的小店】
|
||||
Dialogue: 0,0:03:59.30,0:04:01.45,Default,,0,0,0,,新闻(しんぶん)の隅(すみ)\N【在报纸的角落】
|
||||
Dialogue: 0,0:04:01.50,0:04:04.95,Default,,0,0,0,,こんなとこにあるはずもないのに\N【尽管明知道你不可能在那里】
|
||||
Dialogue: 0,0:04:05.00,0:04:08.25,Default,,0,0,0,,奇迹(きせき)がもしも起(お)こるなら\N【若奇迹将会发生】
|
||||
Dialogue: 0,0:04:08.30,0:04:12.25,Default,,0,0,0,,今すぐ君に见せたい\N【我希望现在就能见到你】
|
||||
Dialogue: 0,0:04:12.30,0:04:16.05,Default,,0,0,0,,新しい朝(あさ) これからの仆\N【无论崭新的清晨 还是今后的自己】
|
||||
Dialogue: 0,0:04:16.10,0:04:19.40,Default,,0,0,0,,言えなかった「好き」という言叶も\N【或是那句没能说出口的「喜欢你」】
|
||||
Dialogue: 0,0:04:19.45,0:04:19.95,Default,,0,0,0,,
|
||||
Dialogue: 0,0:04:20.00,0:04:22.95,Default,,0,0,0,,いつでも捜(さが)してしまう\N【总是在一直寻觅】
|
||||
Dialogue: 0,0:04:23.00,0:04:26.95,Default,,0,0,0,,どっかに君の笑颜(えがお)を\N【寻觅着你的笑容】
|
||||
Dialogue: 0,0:04:27.00,0:04:30.25,Default,,0,0,0,,急行(きゅうこう)待ちの 踏切(ふみきり)あたり\N【哪怕在等待列车通过的铁路道口】
|
||||
Dialogue: 0,0:04:30.30,0:04:34.25,Default,,0,0,0,,こんなとこにいるはずもないのに\N【虽然明明知道你不可能在那里】
|
||||
Dialogue: 0,0:04:34.30,0:04:37.95,Default,,0,0,0,,命(いのち)が缲(く)り返(かえ)すならば\N【如果生命能够重来】
|
||||
Dialogue: 0,0:04:38.00,0:04:41.05,Default,,0,0,0,,何度(なんど)も君のもとへ\N【无论几次我都要去你身边】
|
||||
Dialogue: 0,0:04:41.10,0:04:45.15,Default,,0,0,0,,欲(ほ)しいものなど もう何もない\N【那时我一定别无所求】
|
||||
Dialogue: 0,0:04:45.20,0:04:52.75,Default,,0,0,0,,君のほかに大切なものなど\N【再也没有什么比你更加重要】
|
||||
Dialogue: 0,0:04:52.80,0:05:10.95,Default,,0,0,0,,
|
||||
Dialogue: 0,0:05:11.00,0:05:15.45,Default,,0,0,0,,
|
||||
Dialogue: 0,0:05:15.50,0:05:25.50,Default,,0,0,0,,--终わり--
|
||||
Dialogue: 0,0:00:00.31,0:00:00.84,Style1,NTP,0000,0000,0000,,那一天\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}あの日
|
||||
Dialogue: 0,0:00:01.28,0:00:02.22,Style2,NTP,0000,0000,0000,,星星降落的日子\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}星が降った日
|
||||
Dialogue: 0,0:00:03.15,0:00:04.41,Style3,NTP,0000,0000,0000,,那简直是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}それはまるで
|
||||
Dialogue: 0,0:00:04.45,0:00:04.97,Default,NTP,0000,0000,0000,,简直\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}まるで
|
||||
Dialogue: 0,0:00:05.12,0:00:06.30,Default,NTP,0000,0000,0000,,像梦中的景色一样\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}夢の景色のように
|
||||
Dialogue: 0,0:00:07.44,0:00:08.98,Default,NTP,0000,0000,0000,,美丽的景色\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}美しい眺めだった
|
||||
Dialogue: 0,0:00:24.60,0:00:25.09,Default,NTP,0000,0000,0000,,放学后\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}放課後
|
||||
Dialogue: 0,0:00:25.70,0:00:26.26,Default,NTP,0000,0000,0000,,不好\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}悪い
|
||||
Dialogue: 0,0:00:26.48,0:00:27.68,Default,NTP,0000,0000,0000,,我今天开始打工\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}おれ今日これからバイト
|
||||
Dialogue: 0,0:00:29.34,0:00:31.69,Default,NTP,0000,0000,0000,,已经讨厌这样的乡下了\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}もうこんな田舎嫌だよー
|
||||
Dialogue: 0,0:00:31.97,0:00:33.53,Default,NTP,0000,0000,0000,,讨厌这样的人生\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}こんな人生嫌だ
|
||||
Dialogue: 0,0:00:33.93,0:00:37.97,Default,NTP,0000,0000,0000,,来世请让我成为东京的帅哥吧\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}来世は東京のイケメン男子にしてくださーい
|
||||
Dialogue: 0,0:00:42.08,0:00:42.87,Default,NTP,0000,0000,0000,,哪里\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}どこ
|
||||
Dialogue: 0,0:00:43.05,0:00:44.17,Default,NTP,0000,0000,0000,,那么说来\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}そういえば
|
||||
Dialogue: 0,0:00:44.55,0:00:47.08,Default,NTP,0000,0000,0000,,我觉得好像一直做着奇怪的梦\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}ずっと変な夢を見てたような気がするんだけど
|
||||
Dialogue: 0,0:00:48.32,0:00:50.63,Default,NTP,0000,0000,0000,,别人的人生中…梦\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}別の人の人生の…夢
|
||||
Dialogue: 0,0:00:51.45,0:00:52.74,Default,NTP,0000,0000,0000,,这是什么\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}何だ これ
|
||||
Dialogue: 0,0:00:54.78,0:00:55.44,Default,NTP,0000,0000,0000,,这个,这个\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}これって
|
||||
Dialogue: 0,0:00:56.72,0:00:57.72,Default,NTP,0000,0000,0000,,这难道是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}これってもしかして
|
||||
Dialogue: 0,0:00:58.08,0:00:59.33,Default,NTP,0000,0000,0000,,我们在梦中\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}俺達は夢の中で
|
||||
Dialogue: 0,0:01:00.14,0:01:01.20,Default,NTP,0000,0000,0000,,替换着\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}入れ替わってる
|
||||
Dialogue: 0,0:01:07.37,0:01:08.30,Default,NTP,0000,0000,0000,,确实的事情\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}確かなことが
|
||||
Dialogue: 0,0:01:08.76,0:01:09.54,Default,NTP,0000,0000,0000,,只有一个\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}一つだけある
|
||||
Dialogue: 0,0:01:10.33,0:01:11.04,Default,NTP,0000,0000,0000,,我们是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}私達は
|
||||
Dialogue: 0,0:01:11.42,0:01:12.32,Default,NTP,0000,0000,0000,,见面的话绝对\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}会えば絶対
|
||||
Dialogue: 0,0:01:12.68,0:01:13.53,Default,NTP,0000,0000,0000,,马上就明白\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}すぐにわかる
|
||||
Dialogue: 0,0:01:14.25,0:01:15.28,Default,NTP,0000,0000,0000,,我想说\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}言おうと思ったんだ
|
||||
Dialogue: 0,0:01:16.08,0:01:17.58,Default,NTP,0000,0000,0000,,你是世界的无论在哪里\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}お前が世界のどこにいても
|
||||
Dialogue: 0,0:01:17.95,0:01:19.05,Default,NTP,0000,0000,0000,,一定要去见你\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}必ず会いに行くって
|
||||
Dialogue: 0,0:01:20.14,0:01:20.94,Default,NTP,0000,0000,0000,,你是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}あなたは
|
||||
Dialogue: 0,0:01:21.36,0:01:21.80,Default,NTP,0000,0000,0000,,谁\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}誰
|
||||
Dialogue: 0,0:01:22.20,0:01:22.76,Default,NTP,0000,0000,0000,,你是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}お前は
|
||||
Dialogue: 0,0:01:23.48,0:01:24.04,Default,NTP,0000,0000,0000,,谁\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}誰だ
|
||||
Dialogue: 0,0:01:25.69,0:01:26.47,Default,NTP,0000,0000,0000,,你的名字是\N{\fs12}{\3c&&H00000000&}{\c&&H000092FE&}君の名は
|
||||
@@ -0,0 +1,135 @@
|
||||
1
|
||||
00:00:00,306 --> 00:00:00,844
|
||||
那一天
|
||||
|
||||
2
|
||||
00:00:01,280 --> 00:00:02,220
|
||||
星星降落的日子
|
||||
|
||||
3
|
||||
00:00:03,148 --> 00:00:04,412
|
||||
那简直是
|
||||
|
||||
4
|
||||
00:00:04,446 --> 00:00:04,966
|
||||
简直
|
||||
|
||||
5
|
||||
00:00:05,120 --> 00:00:06,300
|
||||
像梦中的景色一样
|
||||
|
||||
6
|
||||
00:00:07,438 --> 00:00:08,978
|
||||
美丽的景色
|
||||
|
||||
7
|
||||
00:00:24,596 --> 00:00:25,089
|
||||
放学后
|
||||
|
||||
8
|
||||
00:00:25,705 --> 00:00:26,261
|
||||
不好
|
||||
|
||||
9
|
||||
00:00:26,475 --> 00:00:27,679
|
||||
我今天开始打工
|
||||
|
||||
10
|
||||
00:00:29,345 --> 00:00:31,689
|
||||
已经讨厌这样的乡下了
|
||||
|
||||
11
|
||||
00:00:31,969 --> 00:00:33,527
|
||||
讨厌这样的人生
|
||||
|
||||
12
|
||||
00:00:33,927 --> 00:00:37,970
|
||||
来世请让我成为东京的帅哥吧
|
||||
|
||||
13
|
||||
00:00:42,083 --> 00:00:42,874
|
||||
哪里
|
||||
|
||||
14
|
||||
00:00:43,052 --> 00:00:44,166
|
||||
那么说来
|
||||
|
||||
15
|
||||
00:00:44,554 --> 00:00:47,078
|
||||
我觉得好像一直做着奇怪的梦
|
||||
|
||||
16
|
||||
00:00:48,324 --> 00:00:50,626
|
||||
别人的人生中…梦
|
||||
|
||||
17
|
||||
00:00:51,452 --> 00:00:52,740
|
||||
这是什么
|
||||
|
||||
18
|
||||
00:00:54,778 --> 00:00:55,442
|
||||
这个,这个
|
||||
|
||||
19
|
||||
00:00:56,724 --> 00:00:57,724
|
||||
这难道是
|
||||
|
||||
20
|
||||
00:00:58,076 --> 00:00:59,328
|
||||
我们在梦中
|
||||
|
||||
21
|
||||
00:01:00,136 --> 00:01:01,202
|
||||
替换着
|
||||
|
||||
22
|
||||
00:01:07,369 --> 00:01:08,297
|
||||
确实的事情
|
||||
|
||||
23
|
||||
00:01:08,757 --> 00:01:09,541
|
||||
只有一个
|
||||
|
||||
24
|
||||
00:01:10,325 --> 00:01:11,037
|
||||
我们是
|
||||
|
||||
25
|
||||
00:01:11,425 --> 00:01:12,317
|
||||
见面的话绝对
|
||||
|
||||
26
|
||||
00:01:12,681 --> 00:01:13,531
|
||||
马上就明白
|
||||
|
||||
27
|
||||
00:01:14,255 --> 00:01:15,279
|
||||
我想说
|
||||
|
||||
28
|
||||
00:01:16,075 --> 00:01:17,579
|
||||
你是世界的无论在哪里
|
||||
|
||||
29
|
||||
00:01:17,955 --> 00:01:19,051
|
||||
一定要去见你
|
||||
|
||||
30
|
||||
00:01:20,141 --> 00:01:20,943
|
||||
你是
|
||||
|
||||
31
|
||||
00:01:21,361 --> 00:01:21,803
|
||||
谁
|
||||
|
||||
32
|
||||
00:01:22,197 --> 00:01:22,759
|
||||
你是
|
||||
|
||||
33
|
||||
00:01:23,483 --> 00:01:24,039
|
||||
谁
|
||||
|
||||
34
|
||||
00:01:25,693 --> 00:01:26,465
|
||||
你的名字是
|
||||
@@ -0,0 +1,135 @@
|
||||
1
|
||||
00:00:00,306 --> 00:00:00,844
|
||||
あの日
|
||||
|
||||
2
|
||||
00:00:01,280 --> 00:00:02,220
|
||||
星が降った日
|
||||
|
||||
3
|
||||
00:00:03,148 --> 00:00:04,412
|
||||
それはまるで
|
||||
|
||||
4
|
||||
00:00:04,446 --> 00:00:04,966
|
||||
まるで
|
||||
|
||||
5
|
||||
00:00:05,120 --> 00:00:06,300
|
||||
夢の景色のように
|
||||
|
||||
6
|
||||
00:00:07,438 --> 00:00:08,978
|
||||
美しい眺めだった
|
||||
|
||||
7
|
||||
00:00:24,596 --> 00:00:25,089
|
||||
放課後
|
||||
|
||||
8
|
||||
00:00:25,705 --> 00:00:26,261
|
||||
悪い
|
||||
|
||||
9
|
||||
00:00:26,475 --> 00:00:27,679
|
||||
おれ今日これからバイト
|
||||
|
||||
10
|
||||
00:00:29,345 --> 00:00:31,689
|
||||
もうこんな田舎嫌だよー
|
||||
|
||||
11
|
||||
00:00:31,969 --> 00:00:33,527
|
||||
こんな人生嫌だ
|
||||
|
||||
12
|
||||
00:00:33,927 --> 00:00:37,970
|
||||
来世は東京のイケメン男子にしてくださーい
|
||||
|
||||
13
|
||||
00:00:42,083 --> 00:00:42,874
|
||||
どこ
|
||||
|
||||
14
|
||||
00:00:43,052 --> 00:00:44,166
|
||||
そういえば
|
||||
|
||||
15
|
||||
00:00:44,554 --> 00:00:47,078
|
||||
ずっと変な夢を見てたような気がするんだけど
|
||||
|
||||
16
|
||||
00:00:48,324 --> 00:00:50,626
|
||||
別の人の人生の…夢
|
||||
|
||||
17
|
||||
00:00:51,452 --> 00:00:52,740
|
||||
何だ これ
|
||||
|
||||
18
|
||||
00:00:54,778 --> 00:00:55,442
|
||||
これって
|
||||
|
||||
19
|
||||
00:00:56,724 --> 00:00:57,724
|
||||
これってもしかして
|
||||
|
||||
20
|
||||
00:00:58,076 --> 00:00:59,328
|
||||
俺達は夢の中で
|
||||
|
||||
21
|
||||
00:01:00,136 --> 00:01:01,202
|
||||
入れ替わってる
|
||||
|
||||
22
|
||||
00:01:07,369 --> 00:01:08,297
|
||||
確かなことが
|
||||
|
||||
23
|
||||
00:01:08,757 --> 00:01:09,541
|
||||
一つだけある
|
||||
|
||||
24
|
||||
00:01:10,325 --> 00:01:11,037
|
||||
私達は
|
||||
|
||||
25
|
||||
00:01:11,425 --> 00:01:12,317
|
||||
会えば絶対
|
||||
|
||||
26
|
||||
00:01:12,681 --> 00:01:13,531
|
||||
すぐにわかる
|
||||
|
||||
27
|
||||
00:01:14,255 --> 00:01:15,279
|
||||
言おうと思ったんだ
|
||||
|
||||
28
|
||||
00:01:16,075 --> 00:01:17,579
|
||||
お前が世界のどこにいても
|
||||
|
||||
29
|
||||
00:01:17,955 --> 00:01:19,051
|
||||
必ず会いに行くって
|
||||
|
||||
30
|
||||
00:01:20,141 --> 00:01:20,943
|
||||
あなたは
|
||||
|
||||
31
|
||||
00:01:21,361 --> 00:01:21,803
|
||||
誰
|
||||
|
||||
32
|
||||
00:01:22,197 --> 00:01:22,759
|
||||
お前は
|
||||
|
||||
33
|
||||
00:01:23,483 --> 00:01:24,039
|
||||
誰だ
|
||||
|
||||
34
|
||||
00:01:25,693 --> 00:01:26,465
|
||||
君の名は
|
||||
@@ -1,402 +1,169 @@
|
||||
1
|
||||
00:00:01,500 --> 00:00:03,950
|
||||
One More Time,One More Chance
|
||||
愿往事重来
|
||||
1
|
||||
00:00:00,306 --> 00:00:00,844
|
||||
那一天
|
||||
あの日
|
||||
|
||||
2
|
||||
00:00:04,000 --> 00:00:05,950
|
||||
秒速5センチメートル
|
||||
秒速5厘米
|
||||
00:00:01,280 --> 00:00:02,220
|
||||
星星降落的日子
|
||||
星が降った日
|
||||
|
||||
3
|
||||
00:00:06,000 --> 00:00:08,950
|
||||
编曲:森俊之
|
||||
00:00:03,148 --> 00:00:04,412
|
||||
那简直是
|
||||
それはまるで
|
||||
|
||||
4
|
||||
00:00:09,000 --> 00:00:11,950
|
||||
山崎まさよし
|
||||
山崎将义
|
||||
00:00:04,446 --> 00:00:04,966
|
||||
简直
|
||||
まるで
|
||||
|
||||
5
|
||||
00:00:12,000 --> 00:00:15,950
|
||||
|
||||
00:00:05,120 --> 00:00:06,300
|
||||
像梦中的景色一样
|
||||
夢の景色のように
|
||||
|
||||
6
|
||||
00:00:16,000 --> 00:00:20,250
|
||||
これ以上何をう失(し)なえば
|
||||
还要再失去什么
|
||||
00:00:07,438 --> 00:00:08,978
|
||||
美丽的景色
|
||||
美しい眺めだった
|
||||
|
||||
7
|
||||
00:00:20,300 --> 00:00:23,250
|
||||
心は许(ゆる)されるの
|
||||
才能让心得到宽恕?
|
||||
00:00:24,596 --> 00:00:25,089
|
||||
放学后
|
||||
放課後
|
||||
|
||||
8
|
||||
00:00:23,300 --> 00:00:27,250
|
||||
どれ程(ほど)の痛(いた)みならば
|
||||
还要再怎样痛苦
|
||||
00:00:25,705 --> 00:00:26,261
|
||||
不好
|
||||
悪い
|
||||
|
||||
9
|
||||
00:00:27,300 --> 00:00:30,250
|
||||
もう一度君に会(あ)える
|
||||
才能与你再次相见
|
||||
00:00:26,475 --> 00:00:27,679
|
||||
我今天开始打工
|
||||
おれ今日これからバイト
|
||||
|
||||
10
|
||||
00:00:30,300 --> 00:00:33,250
|
||||
One more time
|
||||
00:00:29,345 --> 00:00:31,689
|
||||
已经讨厌这样的乡下了
|
||||
もうこんな田舎嫌だよー
|
||||
|
||||
11
|
||||
00:00:33,300 --> 00:00:37,950
|
||||
季节(きせつ)よ うつろわないで
|
||||
不愿看到季节的变迁
|
||||
00:00:31,969 --> 00:00:33,527
|
||||
讨厌这样的人生
|
||||
こんな人生嫌だ
|
||||
|
||||
12
|
||||
00:00:38,000 --> 00:00:41,050
|
||||
One more time
|
||||
00:00:33,927 --> 00:00:37,970
|
||||
来世请让我成为东京的帅哥吧
|
||||
来世は東京のイケメン男子にしてくださーい
|
||||
|
||||
13
|
||||
00:00:41,100 --> 00:00:45,250
|
||||
ふざけあった时间(じかん)よ
|
||||
曾与你嬉闹的时光啊
|
||||
00:00:42,083 --> 00:00:42,874
|
||||
哪里
|
||||
どこ
|
||||
|
||||
14
|
||||
00:00:45,300 --> 00:00:49,250
|
||||
くいちがうときはいつも
|
||||
每次争执的时候
|
||||
00:00:43,052 --> 00:00:44,166
|
||||
那么说来
|
||||
そういえば
|
||||
|
||||
15
|
||||
00:00:49,300 --> 00:00:53,100
|
||||
仆が先(さき)に折(お)れたね
|
||||
总是我先让步
|
||||
00:00:44,554 --> 00:00:47,078
|
||||
我觉得好像一直做着奇怪的梦
|
||||
ずっと変な夢を見てたような気がするんだけど
|
||||
|
||||
16
|
||||
00:00:53,150 --> 00:00:56,250
|
||||
わがままな性格(せいかく)が
|
||||
你那任性的性格
|
||||
00:00:48,324 --> 00:00:50,626
|
||||
别人的人生中…梦
|
||||
別の人の人生の…夢
|
||||
|
||||
17
|
||||
00:00:56,300 --> 00:00:59,250
|
||||
なおさら爱(いと)しくさせた
|
||||
反而令你更加可爱
|
||||
00:00:51,452 --> 00:00:52,740
|
||||
这是什么
|
||||
何だ これ
|
||||
|
||||
18
|
||||
00:00:59,300 --> 00:01:02,950
|
||||
One more chance
|
||||
00:00:54,778 --> 00:00:55,442
|
||||
这个,这个
|
||||
これって
|
||||
|
||||
19
|
||||
00:01:03,000 --> 00:01:07,250
|
||||
记忆(きおく)に足(あし)を取(と)られて
|
||||
回忆绊住我的脚步
|
||||
00:00:56,724 --> 00:00:57,724
|
||||
这难道是
|
||||
これってもしかして
|
||||
|
||||
20
|
||||
00:01:07,300 --> 00:01:10,250
|
||||
One more chance
|
||||
00:00:58,076 --> 00:00:59,328
|
||||
我们在梦中
|
||||
俺達は夢の中で
|
||||
|
||||
21
|
||||
00:01:10,300 --> 00:01:14,950
|
||||
次(つぎ)の场所を选(えら)べない
|
||||
无法选择下个地方
|
||||
00:01:00,136 --> 00:01:01,202
|
||||
替换着
|
||||
入れ替わってる
|
||||
|
||||
22
|
||||
00:01:15,000 --> 00:01:18,250
|
||||
いつでも捜(さが)しているよ
|
||||
总是在一直寻觅
|
||||
00:01:07,369 --> 00:01:08,297
|
||||
确实的事情
|
||||
確かなことが
|
||||
|
||||
23
|
||||
00:01:18,300 --> 00:01:21,950
|
||||
どっかに君の姿(すがた)を
|
||||
寻觅着你的身影
|
||||
00:01:08,757 --> 00:01:09,541
|
||||
只有一个
|
||||
一つだけある
|
||||
|
||||
24
|
||||
00:01:22,000 --> 00:01:23,950
|
||||
向(むか)いのホーム
|
||||
对面的月台上
|
||||
00:01:10,325 --> 00:01:11,037
|
||||
我们是
|
||||
私達は
|
||||
|
||||
25
|
||||
00:01:24,000 --> 00:01:25,950
|
||||
路地裏(ろじうら)の窓(まど)
|
||||
在小巷的窗口里
|
||||
00:01:11,425 --> 00:01:12,317
|
||||
见面的话绝对
|
||||
会えば絶対
|
||||
|
||||
26
|
||||
00:01:26,000 --> 00:01:29,250
|
||||
こんなとこにいるはずもないのに
|
||||
尽管明知道你不可能在那里
|
||||
00:01:12,681 --> 00:01:13,531
|
||||
马上就明白
|
||||
すぐにわかる
|
||||
|
||||
27
|
||||
00:01:29,300 --> 00:01:33,250
|
||||
愿(ねが)いがもしも叶(かな)うなら
|
||||
若愿望能够实现
|
||||
00:01:14,255 --> 00:01:15,279
|
||||
我想说
|
||||
言おうと思ったんだ
|
||||
|
||||
28
|
||||
00:01:33,300 --> 00:01:36,550
|
||||
いますぐ君のもとへ
|
||||
好想马上去到你身边
|
||||
00:01:16,075 --> 00:01:17,579
|
||||
你是世界的无论在哪里
|
||||
お前が世界のどこにいても
|
||||
|
||||
29
|
||||
00:01:36,600 --> 00:01:40,250
|
||||
できないことは もう何もない
|
||||
如今我再也不会有丝毫退缩
|
||||
00:01:17,955 --> 00:01:19,051
|
||||
一定要去见你
|
||||
必ず会いに行くって
|
||||
|
||||
30
|
||||
00:01:40,300 --> 00:01:47,300
|
||||
すべてかけて抱きしめてみせるよ
|
||||
我会不顾一切将你紧紧拥抱
|
||||
00:01:20,141 --> 00:01:20,943
|
||||
你是
|
||||
あなたは
|
||||
|
||||
31
|
||||
00:01:47,350 --> 00:01:51,950
|
||||
|
||||
00:01:21,361 --> 00:01:21,803
|
||||
谁
|
||||
誰
|
||||
|
||||
32
|
||||
00:01:52,000 --> 00:01:55,250
|
||||
|
||||
00:01:22,197 --> 00:01:22,759
|
||||
你是
|
||||
お前は
|
||||
|
||||
33
|
||||
00:01:55,300 --> 00:01:59,250
|
||||
寂(さび)しさ纷(まぎ)らすだけなら
|
||||
如果只是为了排遣寂寞
|
||||
00:01:23,483 --> 00:01:24,039
|
||||
谁
|
||||
誰だ
|
||||
|
||||
34
|
||||
00:01:59,300 --> 00:02:02,950
|
||||
谁でもいいはずなのに
|
||||
其实不管是谁都无所谓
|
||||
|
||||
35
|
||||
00:02:03,000 --> 00:02:07,250
|
||||
星が落(お)ちそうな夜(よる)だから
|
||||
唯有在星辰仿佛要坠落的夜晚
|
||||
|
||||
36
|
||||
00:02:07,300 --> 00:02:10,250
|
||||
自分(じぶん)をいつわれない
|
||||
我无法欺骗自己
|
||||
|
||||
37
|
||||
00:02:10,300 --> 00:02:13,250
|
||||
One more time
|
||||
|
||||
38
|
||||
00:02:13,300 --> 00:02:17,250
|
||||
季节(きせつ)よ うつろわないで
|
||||
不愿看到季节的变迁
|
||||
|
||||
39
|
||||
00:02:17,300 --> 00:02:20,250
|
||||
One more time
|
||||
|
||||
40
|
||||
00:02:20,300 --> 00:02:24,600
|
||||
ふざけあった时间(じかん)よ
|
||||
曾与你嬉闹的时光啊
|
||||
|
||||
41
|
||||
00:02:24,650 --> 00:02:25,250
|
||||
|
||||
|
||||
42
|
||||
00:02:25,300 --> 00:02:29,050
|
||||
いつでも捜(さが)しているよ
|
||||
总是在一直寻觅
|
||||
|
||||
43
|
||||
00:02:29,100 --> 00:02:32,250
|
||||
どっかに君(きみ)の姿(すがた)を
|
||||
寻觅着你的身影
|
||||
|
||||
44
|
||||
00:02:32,300 --> 00:02:34,250
|
||||
交差点(こうさてん)でも
|
||||
每个十字路口
|
||||
|
||||
45
|
||||
00:02:34,300 --> 00:02:36,250
|
||||
梦の中でも 每次梦境之中
|
||||
|
||||
46
|
||||
00:02:36,300 --> 00:02:39,950
|
||||
こんなとこにいるはずもないのに
|
||||
尽管明知道你不可能在那里
|
||||
|
||||
47
|
||||
00:02:40,000 --> 00:02:43,250
|
||||
奇迹(きせき)がもしも起(お)こるなら
|
||||
若奇迹将会发生
|
||||
|
||||
48
|
||||
00:02:43,300 --> 00:02:46,950
|
||||
今すぐ君に见せたい
|
||||
我希望马上就能见到你
|
||||
|
||||
49
|
||||
00:02:47,000 --> 00:02:50,250
|
||||
新しい朝(あさ) これからの仆
|
||||
无论崭新的清晨 还是今后的自己
|
||||
|
||||
50
|
||||
00:02:50,300 --> 00:02:57,250
|
||||
言えなかった「好き」という言叶も
|
||||
或是那句没能说出口的「喜欢你」
|
||||
|
||||
51
|
||||
00:02:57,300 --> 00:03:04,450
|
||||
|
||||
|
||||
52
|
||||
00:03:04,500 --> 00:03:05,950
|
||||
|
||||
|
||||
53
|
||||
00:03:06,000 --> 00:03:13,950
|
||||
夏の想い出がまわる
|
||||
夏日的回忆在脑海中回旋
|
||||
|
||||
54
|
||||
00:03:14,000 --> 00:03:20,950
|
||||
ふいに消(き)えた鼓动(こどう)
|
||||
刹那间消失的悸动
|
||||
|
||||
55
|
||||
00:03:21,000 --> 00:03:24,950
|
||||
いつでも捜(さが)しているよ
|
||||
总是在一直寻觅
|
||||
|
||||
57
|
||||
00:03:25,000 --> 00:03:27,950
|
||||
どっかに君の姿(すがた)を
|
||||
寻觅着你的身影
|
||||
|
||||
58
|
||||
00:03:28,000 --> 00:03:29,950
|
||||
明(あ)け方(がた)の街(まち)
|
||||
在拂晓的街头
|
||||
|
||||
59
|
||||
00:03:30,000 --> 00:03:31,950
|
||||
桜木町(さくらぎちょう)で
|
||||
在种满樱树的小镇
|
||||
|
||||
60
|
||||
00:03:32,000 --> 00:03:35,950
|
||||
こんなとこに来(く)るはずもないのに
|
||||
尽管明知道你不可能在那里
|
||||
|
||||
61
|
||||
00:03:36,000 --> 00:03:39,250
|
||||
愿(ねが)いがもしも叶(かな)うなら
|
||||
若愿望能够实现
|
||||
|
||||
62
|
||||
00:03:39,300 --> 00:03:43,050
|
||||
今すぐ君のもとへ
|
||||
现在马上去到你身边
|
||||
|
||||
63
|
||||
00:03:43,100 --> 00:03:46,800
|
||||
できないことは もう何(なに)もない
|
||||
如今我再也不会有丝毫退缩
|
||||
|
||||
64
|
||||
00:03:46,850 --> 00:03:50,600
|
||||
すべてかけて抱きしめてみせるよ
|
||||
我会不顾一切紧紧将你拥抱
|
||||
|
||||
65
|
||||
00:03:50,650 --> 00:03:54,250
|
||||
いつでも捜(さが)しているよ
|
||||
总是在一直寻觅
|
||||
|
||||
66
|
||||
00:03:54,300 --> 00:03:57,700
|
||||
どっかに君のかけらを
|
||||
寻觅着你的片断
|
||||
|
||||
67
|
||||
00:03:57,750 --> 00:03:59,250
|
||||
旅先(たびさき)の店(みせ)
|
||||
在旅途中的小店
|
||||
|
||||
68
|
||||
00:03:59,300 --> 00:04:01,450
|
||||
新闻(しんぶん)の隅(すみ)
|
||||
在报纸的角落
|
||||
|
||||
69
|
||||
00:04:01,500 --> 00:04:04,950
|
||||
こんなとこにあるはずもないのに
|
||||
尽管明知道你不可能在那里
|
||||
|
||||
70
|
||||
00:04:05,000 --> 00:04:08,250
|
||||
奇迹(きせき)がもしも起(お)こるなら
|
||||
若奇迹将会发生
|
||||
|
||||
71
|
||||
00:04:08,300 --> 00:04:12,250
|
||||
今すぐ君に见せたい
|
||||
我希望现在就能见到你
|
||||
|
||||
72
|
||||
00:04:12,300 --> 00:04:16,050
|
||||
新しい朝(あさ) これからの仆
|
||||
无论崭新的清晨 还是今后的自己
|
||||
|
||||
73
|
||||
00:04:16,100 --> 00:04:19,400
|
||||
言えなかった「好き」という言叶も
|
||||
或是那句没能说出口的「喜欢你」
|
||||
|
||||
74
|
||||
00:04:19,450 --> 00:04:19,950
|
||||
|
||||
|
||||
75
|
||||
00:04:20,000 --> 00:04:22,950
|
||||
いつでも捜(さが)してしまう
|
||||
总是在一直寻觅
|
||||
|
||||
76
|
||||
00:04:23,000 --> 00:04:26,950
|
||||
どっかに君の笑颜(えがお)を
|
||||
寻觅着你的笑容
|
||||
|
||||
77
|
||||
00:04:27,000 --> 00:04:30,250
|
||||
急行(きゅうこう)待ちの 踏切(ふみきり)あたり
|
||||
哪怕在等待列车通过的铁路道口
|
||||
|
||||
78
|
||||
00:04:30,300 --> 00:04:34,250
|
||||
こんなとこにいるはずもないのに
|
||||
虽然明明知道你不可能在那里
|
||||
|
||||
79
|
||||
00:04:34,300 --> 00:04:37,950
|
||||
命(いのち)が缲(く)り返(かえ)すならば
|
||||
如果生命能够重来
|
||||
|
||||
80
|
||||
00:04:38,000 --> 00:04:41,050
|
||||
何度(なんど)も君のもとへ
|
||||
无论几次我都要去你身边
|
||||
|
||||
81
|
||||
00:04:41,100 --> 00:04:45,150
|
||||
欲(ほ)しいものなど もう何もない
|
||||
那时我一定别无所求
|
||||
|
||||
82
|
||||
00:04:45,200 --> 00:04:52,750
|
||||
君のほかに大切なものなど
|
||||
再也没有什么比你更加重要
|
||||
|
||||
83
|
||||
00:04:52,800 --> 00:05:10,950
|
||||
|
||||
|
||||
84
|
||||
00:05:11,000 --> 00:05:15,450
|
||||
|
||||
|
||||
85
|
||||
00:05:15,500 --> 00:05:25,500
|
||||
--终わり--
|
||||
|
||||
00:01:25,693 --> 00:01:26,465
|
||||
你的名字是
|
||||
君の名は
|
||||
@@ -1,404 +1,171 @@
|
||||
WEBVTT
|
||||
WEBVTT
|
||||
|
||||
1
|
||||
00:00:01.500 --> 00:00:03.950
|
||||
歌名:One More Time,One More Chance
|
||||
愿往事重来
|
||||
00:00:00.306 --> 00:00:00.844
|
||||
那一天
|
||||
あの日
|
||||
|
||||
2
|
||||
00:00:04.000 --> 00:00:05.950
|
||||
秒速5センチメートル
|
||||
秒速5厘米
|
||||
00:00:01.280 --> 00:00:02.220
|
||||
星星降落的日子
|
||||
星が降った日
|
||||
|
||||
3
|
||||
00:00:06.000 --> 00:00:08.950
|
||||
编曲:森俊之
|
||||
00:00:03.148 --> 00:00:04.412
|
||||
那简直是
|
||||
それはまるで
|
||||
|
||||
4
|
||||
00:00:09.000 --> 00:00:11.950
|
||||
山崎まさよし
|
||||
山崎将义
|
||||
00:00:04.446 --> 00:00:04.966
|
||||
简直
|
||||
まるで
|
||||
|
||||
5
|
||||
00:00:12.000 --> 00:00:15.950
|
||||
|
||||
00:00:05.120 --> 00:00:06.300
|
||||
像梦中的景色一样
|
||||
夢の景色のように
|
||||
|
||||
6
|
||||
00:00:16.000 --> 00:00:20.250
|
||||
これ以上何をう失(し)なえば
|
||||
还要再失去什么
|
||||
00:00:07.438 --> 00:00:08.978
|
||||
美丽的景色
|
||||
美しい眺めだった
|
||||
|
||||
7
|
||||
00:00:20.300 --> 00:00:23.250
|
||||
心は许(ゆる)されるの
|
||||
才能让心得到宽恕?
|
||||
00:00:24.596 --> 00:00:25.089
|
||||
放学后
|
||||
放課後
|
||||
|
||||
8
|
||||
00:00:23.300 --> 00:00:27.250
|
||||
どれ程(ほど)の痛(いた)みならば
|
||||
还要再怎样痛苦
|
||||
00:00:25.705 --> 00:00:26.261
|
||||
不好
|
||||
悪い
|
||||
|
||||
9
|
||||
00:00:27.300 --> 00:00:30.250
|
||||
もう一度君に会(あ)える
|
||||
才能与你再次相见
|
||||
00:00:26.475 --> 00:00:27.679
|
||||
我今天开始打工
|
||||
おれ今日これからバイト
|
||||
|
||||
10
|
||||
00:00:30.300 --> 00:00:33.250
|
||||
One more time
|
||||
00:00:29.345 --> 00:00:31.689
|
||||
已经讨厌这样的乡下了
|
||||
もうこんな田舎嫌だよー
|
||||
|
||||
11
|
||||
00:00:33.300 --> 00:00:37.950
|
||||
季节(きせつ)よ うつろわないで
|
||||
不愿看到季节的变迁
|
||||
00:00:31.969 --> 00:00:33.527
|
||||
讨厌这样的人生
|
||||
こんな人生嫌だ
|
||||
|
||||
12
|
||||
00:00:38.000 --> 00:00:41.050
|
||||
One more time
|
||||
00:00:33.927 --> 00:00:37.970
|
||||
来世请让我成为东京的帅哥吧
|
||||
来世は東京のイケメン男子にしてくださーい
|
||||
|
||||
13
|
||||
00:00:41.100 --> 00:00:45.250
|
||||
ふざけあった时间(じかん)よ
|
||||
曾与你嬉闹的时光啊
|
||||
00:00:42.083 --> 00:00:42.874
|
||||
哪里
|
||||
どこ
|
||||
|
||||
14
|
||||
00:00:45.300 --> 00:00:49.250
|
||||
くいちがうときはいつも
|
||||
每次争执的时候
|
||||
00:00:43.052 --> 00:00:44.166
|
||||
那么说来
|
||||
そういえば
|
||||
|
||||
15
|
||||
00:00:49.300 --> 00:00:53.100
|
||||
仆が先(さき)に折(お)れたね
|
||||
总是我先让步
|
||||
00:00:44.554 --> 00:00:47.078
|
||||
我觉得好像一直做着奇怪的梦
|
||||
ずっと変な夢を見てたような気がするんだけど
|
||||
|
||||
16
|
||||
00:00:53.150 --> 00:00:56.250
|
||||
わがままな性格(せいかく)が
|
||||
你那任性的性格
|
||||
00:00:48.324 --> 00:00:50.626
|
||||
别人的人生中…梦
|
||||
別の人の人生の…夢
|
||||
|
||||
17
|
||||
00:00:56.300 --> 00:00:59.250
|
||||
なおさら爱(いと)しくさせた
|
||||
反而令你更加可爱
|
||||
00:00:51.452 --> 00:00:52.740
|
||||
这是什么
|
||||
何だ これ
|
||||
|
||||
18
|
||||
00:00:59.300 --> 00:01:02.950
|
||||
One more chance
|
||||
00:00:54.778 --> 00:00:55.442
|
||||
这个,这个
|
||||
これって
|
||||
|
||||
19
|
||||
00:01:03.000 --> 00:01:07.250
|
||||
记忆(きおく)に足(あし)を取(と)られて
|
||||
回忆绊住我的脚步
|
||||
00:00:56.724 --> 00:00:57.724
|
||||
这难道是
|
||||
これってもしかして
|
||||
|
||||
20
|
||||
00:01:07.300 --> 00:01:10.250
|
||||
One more chance
|
||||
00:00:58.076 --> 00:00:59.328
|
||||
我们在梦中
|
||||
俺達は夢の中で
|
||||
|
||||
21
|
||||
00:01:10.300 --> 00:01:14.950
|
||||
次(つぎ)の场所を选(えら)べない
|
||||
无法选择下个地方
|
||||
00:01:00.136 --> 00:01:01.202
|
||||
替换着
|
||||
入れ替わってる
|
||||
|
||||
22
|
||||
00:01:15.000 --> 00:01:18.250
|
||||
いつでも捜(さが)しているよ
|
||||
总是在一直寻觅
|
||||
00:01:07.369 --> 00:01:08.297
|
||||
确实的事情
|
||||
確かなことが
|
||||
|
||||
23
|
||||
00:01:18.300 --> 00:01:21.950
|
||||
どっかに君の姿(すがた)を
|
||||
寻觅着你的身影
|
||||
00:01:08.757 --> 00:01:09.541
|
||||
只有一个
|
||||
一つだけある
|
||||
|
||||
24
|
||||
00:01:22.000 --> 00:01:23.950
|
||||
向(むか)いのホーム
|
||||
对面的月台上
|
||||
00:01:10.325 --> 00:01:11.037
|
||||
我们是
|
||||
私達は
|
||||
|
||||
25
|
||||
00:01:24.000 --> 00:01:25.950
|
||||
路地裏(ろじうら)の窓(まど)
|
||||
在小巷的窗口里
|
||||
00:01:11.425 --> 00:01:12.317
|
||||
见面的话绝对
|
||||
会えば絶対
|
||||
|
||||
26
|
||||
00:01:26.000 --> 00:01:29.250
|
||||
こんなとこにいるはずもないのに
|
||||
尽管明知道你不可能在那里
|
||||
00:01:12.681 --> 00:01:13.531
|
||||
马上就明白
|
||||
すぐにわかる
|
||||
|
||||
27
|
||||
00:01:29.300 --> 00:01:33.250
|
||||
愿(ねが)いがもしも叶(かな)うなら
|
||||
若愿望能够实现
|
||||
00:01:14.255 --> 00:01:15.279
|
||||
我想说
|
||||
言おうと思ったんだ
|
||||
|
||||
28
|
||||
00:01:33.300 --> 00:01:36.550
|
||||
いますぐ君のもとへ
|
||||
好想马上去到你身边
|
||||
00:01:16.075 --> 00:01:17.579
|
||||
你是世界的无论在哪里
|
||||
お前が世界のどこにいても
|
||||
|
||||
29
|
||||
00:01:36.600 --> 00:01:40.250
|
||||
できないことは もう何もない
|
||||
如今我再也不会有丝毫退缩
|
||||
00:01:17.955 --> 00:01:19.051
|
||||
一定要去见你
|
||||
必ず会いに行くって
|
||||
|
||||
30
|
||||
00:01:40.300 --> 00:01:47.300
|
||||
すべてかけて抱きしめてみせるよ
|
||||
我会不顾一切将你紧紧拥抱
|
||||
00:01:20.141 --> 00:01:20.943
|
||||
你是
|
||||
あなたは
|
||||
|
||||
31
|
||||
00:01:47.350 --> 00:01:51.950
|
||||
|
||||
00:01:21.361 --> 00:01:21.803
|
||||
谁
|
||||
誰
|
||||
|
||||
32
|
||||
00:01:52.000 --> 00:01:55.250
|
||||
|
||||
00:01:22.197 --> 00:01:22.759
|
||||
你是
|
||||
お前は
|
||||
|
||||
33
|
||||
00:01:55.300 --> 00:01:59.250
|
||||
寂(さび)しさ纷(まぎ)らすだけなら
|
||||
如果只是为了排遣寂寞
|
||||
00:01:23.483 --> 00:01:24.039
|
||||
谁
|
||||
誰だ
|
||||
|
||||
34
|
||||
00:01:59.300 --> 00:02:02.950
|
||||
谁でもいいはずなのに
|
||||
其实不管是谁都无所谓
|
||||
|
||||
35
|
||||
00:02:03.000 --> 00:02:07.250
|
||||
星が落(お)ちそうな夜(よる)だから
|
||||
唯有在星辰仿佛要坠落的夜晚
|
||||
|
||||
36
|
||||
00:02:07.300 --> 00:02:10.250
|
||||
自分(じぶん)をいつわれない
|
||||
我无法欺骗自己
|
||||
|
||||
37
|
||||
00:02:10.300 --> 00:02:13.250
|
||||
One more time
|
||||
|
||||
38
|
||||
00:02:13.300 --> 00:02:17.250
|
||||
季节(きせつ)よ うつろわないで
|
||||
不愿看到季节的变迁
|
||||
|
||||
39
|
||||
00:02:17.300 --> 00:02:20.250
|
||||
One more time
|
||||
|
||||
40
|
||||
00:02:20.300 --> 00:02:24.600
|
||||
ふざけあった时间(じかん)よ
|
||||
曾与你嬉闹的时光啊
|
||||
|
||||
41
|
||||
00:02:24.650 --> 00:02:25.250
|
||||
|
||||
|
||||
42
|
||||
00:02:25.300 --> 00:02:29.050
|
||||
いつでも捜(さが)しているよ
|
||||
总是在一直寻觅
|
||||
|
||||
43
|
||||
00:02:29.100 --> 00:02:32.250
|
||||
どっかに君(きみ)の姿(すがた)を
|
||||
寻觅着你的身影
|
||||
|
||||
44
|
||||
00:02:32.300 --> 00:02:34.250
|
||||
交差点(こうさてん)でも
|
||||
每个十字路口
|
||||
|
||||
45
|
||||
00:02:34.300 --> 00:02:36.250
|
||||
梦の中でも 每次梦境之中
|
||||
|
||||
46
|
||||
00:02:36.300 --> 00:02:39.950
|
||||
こんなとこにいるはずもないのに
|
||||
尽管明知道你不可能在那里
|
||||
|
||||
47
|
||||
00:02:40.000 --> 00:02:43.250
|
||||
奇迹(きせき)がもしも起(お)こるなら
|
||||
若奇迹将会发生
|
||||
|
||||
48
|
||||
00:02:43.300 --> 00:02:46.950
|
||||
今すぐ君に见せたい
|
||||
我希望马上就能见到你
|
||||
|
||||
49
|
||||
00:02:47.000 --> 00:02:50.250
|
||||
新しい朝(あさ) これからの仆
|
||||
无论崭新的清晨 还是今后的自己
|
||||
|
||||
50
|
||||
00:02:50.300 --> 00:02:57.250
|
||||
言えなかった「好き」という言叶も
|
||||
或是那句没能说出口的「喜欢你」
|
||||
|
||||
51
|
||||
00:02:57.300 --> 00:03:04.450
|
||||
|
||||
|
||||
52
|
||||
00:03:04.500 --> 00:03:05.950
|
||||
|
||||
|
||||
53
|
||||
00:03:06.000 --> 00:03:13.950
|
||||
夏の想い出がまわる
|
||||
夏日的回忆在脑海中回旋
|
||||
|
||||
54
|
||||
00:03:14.000 --> 00:03:20.950
|
||||
ふいに消(き)えた鼓动(こどう)
|
||||
刹那间消失的悸动
|
||||
|
||||
55
|
||||
00:03:21.000 --> 00:03:24.950
|
||||
いつでも捜(さが)しているよ
|
||||
总是在一直寻觅
|
||||
|
||||
56
|
||||
00:03:25.000 --> 00:03:27.950
|
||||
どっかに君の姿(すがた)を
|
||||
寻觅着你的身影
|
||||
|
||||
57
|
||||
00:03:28.000 --> 00:03:29.950
|
||||
明(あ)け方(がた)の街(まち)
|
||||
在拂晓的街头
|
||||
|
||||
58
|
||||
00:03:30.000 --> 00:03:31.950
|
||||
桜木町(さくらぎちょう)で
|
||||
在种满樱树的小镇
|
||||
|
||||
59
|
||||
00:03:32.000 --> 00:03:35.950
|
||||
こんなとこに来(く)るはずもないのに
|
||||
尽管明知道你不可能在那里
|
||||
|
||||
60
|
||||
00:03:36.000 --> 00:03:39.250
|
||||
愿(ねが)いがもしも叶(かな)うなら
|
||||
若愿望能够实现
|
||||
|
||||
61
|
||||
00:03:39.300 --> 00:03:43.050
|
||||
今すぐ君のもとへ
|
||||
现在马上去到你身边
|
||||
|
||||
62
|
||||
00:03:43.100 --> 00:03:46.800
|
||||
できないことは もう何(なに)もない
|
||||
如今我再也不会有丝毫退缩
|
||||
|
||||
63
|
||||
00:03:46.850 --> 00:03:50.600
|
||||
すべてかけて抱きしめてみせるよ
|
||||
我会不顾一切紧紧将你拥抱
|
||||
|
||||
64
|
||||
00:03:50.650 --> 00:03:54.250
|
||||
いつでも捜(さが)しているよ
|
||||
总是在一直寻觅
|
||||
|
||||
65
|
||||
00:03:54.300 --> 00:03:57.700
|
||||
どっかに君のかけらを
|
||||
寻觅着你的片断
|
||||
|
||||
66
|
||||
00:03:57.750 --> 00:03:59.250
|
||||
旅先(たびさき)の店(みせ)
|
||||
在旅途中的小店
|
||||
|
||||
67
|
||||
00:03:59.300 --> 00:04:01.450
|
||||
新闻(しんぶん)の隅(すみ)
|
||||
在报纸的角落
|
||||
|
||||
68
|
||||
00:04:01.500 --> 00:04:04.950
|
||||
こんなとこにあるはずもないのに
|
||||
尽管明知道你不可能在那里
|
||||
|
||||
69
|
||||
00:04:05.000 --> 00:04:08.250
|
||||
奇迹(きせき)がもしも起(お)こるなら
|
||||
若奇迹将会发生
|
||||
|
||||
70
|
||||
00:04:08.300 --> 00:04:12.250
|
||||
今すぐ君に见せたい
|
||||
我希望现在就能见到你
|
||||
|
||||
71
|
||||
00:04:12.300 --> 00:04:16.050
|
||||
新しい朝(あさ) これからの仆
|
||||
无论崭新的清晨 还是今后的自己
|
||||
|
||||
72
|
||||
00:04:16.100 --> 00:04:19.400
|
||||
言えなかった「好き」という言叶も
|
||||
或是那句没能说出口的「喜欢你」
|
||||
|
||||
73
|
||||
00:04:19.450 --> 00:04:19.950
|
||||
|
||||
|
||||
74
|
||||
00:04:20.000 --> 00:04:22.950
|
||||
いつでも捜(さが)してしまう
|
||||
总是在一直寻觅
|
||||
|
||||
75
|
||||
00:04:23.000 --> 00:04:26.950
|
||||
どっかに君の笑颜(えがお)を
|
||||
寻觅着你的笑容
|
||||
|
||||
76
|
||||
00:04:27.000 --> 00:04:30.250
|
||||
急行(きゅうこう)待ちの 踏切(ふみきり)あたり
|
||||
哪怕在等待列车通过的铁路道口
|
||||
|
||||
77
|
||||
00:04:30.300 --> 00:04:34.250
|
||||
こんなとこにいるはずもないのに
|
||||
虽然明明知道你不可能在那里
|
||||
|
||||
78
|
||||
00:04:34.300 --> 00:04:37.950
|
||||
命(いのち)が缲(く)り返(かえ)すならば
|
||||
如果生命能够重来
|
||||
|
||||
79
|
||||
00:04:38.000 --> 00:04:41.050
|
||||
何度(なんど)も君のもとへ
|
||||
无论几次我都要去你身边
|
||||
|
||||
80
|
||||
00:04:41.100 --> 00:04:45.150
|
||||
欲(ほ)しいものなど もう何もない
|
||||
那时我一定别无所求
|
||||
|
||||
81
|
||||
00:04:45.200 --> 00:04:52.750
|
||||
君のほかに大切なものなど
|
||||
再也没有什么比你更加重要
|
||||
|
||||
82
|
||||
00:04:52.800 --> 00:05:10.950
|
||||
|
||||
|
||||
83
|
||||
00:05:11.000 --> 00:05:15.450
|
||||
|
||||
|
||||
84
|
||||
00:05:15.500 --> 00:05:25.500
|
||||
--终わり--
|
||||
|
||||
00:01:25.693 --> 00:01:26.465
|
||||
你的名字是
|
||||
君の名は
|
||||
|
Before Width: | Height: | Size: 753 KiB After Width: | Height: | Size: 419 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 4.7 KiB |