質問編集履歴
4
PHPタグ外し
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
3
試したことの追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -140,6 +140,9 @@
|
|
140
140
|
### 試したこと
|
141
141
|
|
142
142
|
何種類か動画を差し替えて試したところ、2回目のfetchの容量が10mbに満たない場合は読み込みに成功しました
|
143
|
+
また、2回目のfetch分を別ファイルとしてphpを介さずapacheから取得してみましたが、同様にfetchが完了しませんでした。
|
144
|
+
おそらくchromeの独自仕様のせいだと思うんですが如何せん情報がないもので。
|
145
|
+
なにかわかる方いらっしゃいましたらよろしくおねがいします。
|
143
146
|
|
144
147
|
### 補足情報(FW/ツールのバージョンなど)
|
145
148
|
・サーバー
|
2
タイトル変更:エラー明記
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
ChromeでのみFetchが完了しない
|
1
|
+
Chromeでのみ「CAUTION: request is not finished yet! 」でFetchが完了しない
|
body
CHANGED
File without changes
|
1
mac版chrome,firefoxのスクリーンショットを追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,8 +7,12 @@
|
|
7
7
|
chromeでのみ、2度目のfetchが完了しません。
|
8
8
|
chrome(v94.0.4606.81) on windows10
|
9
9
|

|
10
|
+
chrome(v92.0.4515.159) on macos bigsur(v11.6)
|
11
|
+

|
10
12
|
firefox(v93.0) on windows10
|
11
13
|

|
14
|
+
firefox(v93.0) on macos bigsur(v11.6)
|
15
|
+

|
12
16
|
safari(v15.0) on macos bigsur(v11.6)
|
13
17
|

|
14
18
|
※1回目のfetchで取得した分に関しては再生できてます。
|
@@ -21,7 +25,7 @@
|
|
21
25
|
<meta charset="utf-8">
|
22
26
|
|
23
27
|
<script type="text/javascript">
|
24
|
-
|
28
|
+
var FILE = "";//request url
|
25
29
|
var chunk_size = 10 * 1024 * 1024; // 10mb
|
26
30
|
var current_chunk = 1;
|
27
31
|
var file_size = chunk_size+1;
|
@@ -45,18 +49,14 @@
|
|
45
49
|
console.log('mediaSource readyState: ' + this.readyState);
|
46
50
|
|
47
51
|
var readChunk = async(chunk)=> {
|
48
|
-
console.log(chunk);
|
49
52
|
const req = await fetch(FILE,{headers:{'Range':'bytes='+(chunk*chunk_size)+'-'+(((chunk+1)*chunk_size<=file_size)?((chunk+1)*chunk_size-1):(file_size-1))}});
|
50
53
|
const res = await req.arrayBuffer();
|
51
|
-
console.log(chunk);
|
52
54
|
for(let value of req.headers.entries()){
|
53
55
|
if (value[0]=='content-range') {
|
54
56
|
file_size = parseInt(value[1].split("/").pop());
|
55
57
|
}
|
56
58
|
}
|
57
|
-
console.log(chunk);
|
58
59
|
sourceBuffer.appendBuffer(new Uint8Array(res));
|
59
|
-
console.log(chunk);
|
60
60
|
};
|
61
61
|
|
62
62
|
sourceBuffer.addEventListener('update', async function(e) {
|
@@ -88,7 +88,7 @@
|
|
88
88
|
}
|
89
89
|
is_buffering=true;
|
90
90
|
if (video.buffered.end(0)-60<video.currentTime&¤t_chunk < Math.ceil(file_size/chunk_size)) {
|
91
|
-
await readChunk(current_chunk);
|
91
|
+
await readChunk(current_chunk);//おそらくここのfetchで止まってる
|
92
92
|
current_chunk++;
|
93
93
|
}
|
94
94
|
is_buffering=false;
|
@@ -111,7 +111,9 @@
|
|
111
111
|
```php
|
112
112
|
<?php
|
113
113
|
/*
|
114
|
+
|
114
115
|
認証処理とかパスの生成(略)
|
116
|
+
|
115
117
|
ダウンロード処理(ResumeDownload):https://gist.github.com/kosinix/4cf0d432638817888149
|
116
118
|
|
117
119
|
*/
|