2017-07-11 9 views
1

我々はHTTP/1.0HTTP/1.1要求を作成したい場合は、例えば応答は離散メディアフラグメントだろう例えば与えられたメディアリソースの35秒、.webmまたは.oggオーディオまたは.mp4ビデオを通じて20000 20 100000または秒バイトどのように我々はこれを達成するだろうか?例えばメディアフラグメントの任意の部分の範囲要求を作成するにはどうすればよいですか?

let headers = new Headers(); 
let range = 1024 * 1024; 
headers.append("Range", "bytes=0-" + range); 
let request = new Request(url, {headers:headers}); 
fetch(request) 
.then(response => response.blob()) 
.then(data => audio.src = URL.createObjectURL(data)); 

負荷やメディア

let headers = new Headers(); 
let range = 1024 * 1024; 
headers.append("Range", "bytes=" + range + "-" + range * 2); 
let request = new Request(url, {headers:headers}); 
fetch(request) 
.then(response => response.blob()) 
.then(data => audio.src = URL.createObjectURL(data)); 

ログ成功200206応答ステータスを果たしている、しかし<audio>要素でメディアの再生をレンダリングしません。

要求されたメディアフラグメントがメディアの個別の部分である場合、メディアの他の部分なしで再生可能なディスクリートリソースとしてリソースの要求された範囲のみを返す、特定のメディアの範囲要求を作成する方法リソース?

+0

@charlietflはいhttp://plnkr.co/edit/h1MOoIPwgEf0WiHMdm6z ?p = preview – guest271314

+0

206はおそらくそのヘッダーを返さなければならないことを意味すると考えていただけです – charlietfl

+0

@charlietfl d、これには問題があります。他の開発者がどのようにケースに対処するかを見ることに興味があります – guest271314

答えて

1

あなたは単純にできません。

あなたのメディアファイル(メタデータ)のヘッダーは、ブラウザに含まれているデータをデコードできるように、絶対に必要です。

異なるメディアフォーマットでは異なるデータ解析ルールが使用され、データのチャンクは異なる順序で取得され、生データの一部のみを取得するとデータ構造全体が破損します。したがって、一部のファイル形式では、ファイルの先頭部分のみを指定してメディアの先頭部分を再生することができますが、すべてのメディア形式では再生が許可されていないため、読み込みを開始することはまったく期待できません。

のMediaElementのsrctimerange parameterを使用するもののている何ができるか:

#t=[starttime][,endtime]

const url = 'https://upload.wikimedia.org/wikipedia/commons/4/4b/011229beowulf_grendel.ogg'; 
 

 
btn.onclick = e => { 
 
    // fast input check for the demo 
 
    if (max.value > aud.duration) 
 
    max.value = aud.duration; 
 
    if (min.value > max.value) 
 
    min.value = max.value - 1; 
 
    // construct our timerange parameter 
 
    let range = '#t=' + min.value + ',' + max.value; 
 
    // append it to our original url 
 
    aud.src = url + range; 
 
} 
 
btn.onclick();
<audio id="aud" aud controls></audio><br> 
 
<label>start: <input id="min" type="number" value="10" min="0" max="119"></label> 
 
<label>end: <input id="max" type="number" value="20" min="1" max="120"></label> 
 
<button id="btn">re-load</button>

+0

エンドラベルは「終了」にする必要がありますか?はい、Media Fragment URIsに精通しています。個別に再生できるメディアフラグメントの各タイムスライスのレコーディングを作成し、シームレスに再生できる単一のファイルにフラグメントをマージすることは可能ですか?メディアの種類ごとにメディアヘッダーを抽出したり、再作成したりするにはどうすればよいですか? '0 'で始まらない範囲ではなく、' 0 'で始まる範囲を再生することはなぜ可能ですか? – guest271314

+0

@ guest271314では、このメソッドを使用して各スライスの新しいMediaElementを作成し、MediaRecordersと共に 'captureStream'メソッドを使用してこれらのフラグメントをエクスポートすることは明らかです。それらを連結したい場合は、* x1 *より速い速度で録画することができないため、元のソースのcurrentTimeを更新するストリームを1つのストリームで制御する必要があります。 – Kaiido

+0

*あなたがファイル**に必要なすべてのメタデータがこの範囲に含まれていたのは幸運にも幸運だったからです。ファイルの終わりになっていれば、そのファイルから何も再生できませんでした。 – Kaiido

関連する問題