Skip to content

Commit

Permalink
変換後の修正
Browse files Browse the repository at this point in the history
  • Loading branch information
mfuji09 committed Aug 23, 2022
1 parent dbe6249 commit 860ca4e
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 34 deletions.
4 changes: 2 additions & 2 deletions files/ja/web/api/mediadeviceinfo/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ translation_of: Web/API/MediaDeviceInfo
---
{{APIRef("WebRTC")}}

**`MediaDevicesInfo`**インタフェースは 1 つメディアが入力か出力のデバイスであるかを示す情報を含みます。{{domxref("MediaDevices.enumerateDevices", "navigator.mediaDevices.enumerateDevices()")}}の呼び出しによって取得できるデバイスの一覧は、`MediaDeviceInfo`オブジェクトの配列であり、1 つの要素が 1 つのメディアデバイスになります。
**`MediaDevicesInfo`** インタフェースは 1 つメディアが入力か出力のデバイスであるかを示す情報を含みます。{{domxref("MediaDevices.enumerateDevices", "navigator.mediaDevices.enumerateDevices()")}}の呼び出しによって取得できるデバイスの一覧は、`MediaDeviceInfo`オブジェクトの配列であり、1 つの要素が 1 つのメディアデバイスになります。

## プロパティ

Expand Down Expand Up @@ -73,7 +73,7 @@ audioinput: Built-in Microphone id=r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=
| -------------------------------------------------------------------------------------------------------- | ------------------------------------ | -------- |
| {{SpecName('Media Capture', '#idl-def-MediaDeviceInfo', 'MediaDevicesInfo')}} | {{Spec2('Media Capture')}} | 初版 |

## ブラウザ互換性
## ブラウザーの互換性

{{Compat("api.MediaDeviceInfo")}}

Expand Down
2 changes: 1 addition & 1 deletion files/ja/web/api/mediarecorder/mediarecorder/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ var mediaRecorder = new MediaRecorder(stream[, options]);

- **`stream`**
- : 記録される {{domxref("MediaStream")}}。 このソースメディアは、{{domxref("MediaDevices.getUserMedia", "navigator.mediaDevices.getUserMedia()")}} を使用して作成したストリーム、または {{HTMLElement("audio")}}、{{HTMLElement("video")}}、{{HTMLElement("canvas")}} 要素から取得できます。
- **`options` **{{optional_inline}}
- **`options`** {{optional_inline}}

- : 以下のプロパティを含むことができる辞書オブジェクト。

Expand Down
2 changes: 1 addition & 1 deletion files/ja/web/api/mediarecorder/start/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ MediaStream Recording API の一部である {{domxref("MediaRecorder")}} のメ

ソースストリームが終了すると、`state``"inactive"` に設定され、データ収集は停止します。 最後の {{event("dataavailable")}} イベントが `MediaRecorder` に送られ、その後に {{event("stop")}} イベントが続きます。

> **Note:** ****: ブラウザーが記録を開始または記録を続行できない場合は、{{domxref("DOMError")}} イベントを発生*させよう*とし、続いて収集した Blob を含む {{domxref("MediaRecorder.dataavailable")}} イベントと {{domxref("MediaRecorder.stop")}} イベントを発生*させよう*とします。
> **Note:** ブラウザーが記録を開始または記録を続行できない場合は、{{domxref("DOMError")}} イベントを発生*させよう*とし、続いて収集した Blob を含む {{domxref("MediaRecorder.dataavailable")}} イベントと {{domxref("MediaRecorder.stop")}} イベントを発生*させよう*とします。
## 構文

Expand Down
2 changes: 1 addition & 1 deletion files/ja/web/api/mediastream_recording_api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ MediaStream Recording API は、{{domxref("MediaRecorder")}} という 1 つの
6. ソースメディアの再生が停止すると、録画は自動的に停止します。
7. {{domxref("MediaRecorder.stop()")}} を呼び出すことで、いつでも録画を停止できます。

> **Note:** ****: 記録されたメディアのスライスを含む個々の {{domxref("Blob")}} は、必ずしも個別に再生できるわけではありません。 再生する前にメディアを組み立て直す必要があります。
> **Note:** 記録されたメディアのスライスを含む個々の {{domxref("Blob")}} は、必ずしも個別に再生できるわけではありません。 再生する前にメディアを組み立て直す必要があります。
記録中に問題が発生した場合は、{{event("error")}} イベントが `MediaRecorder` に送られます。 {{domxref("MediaRecorder.onerror", "onerror")}} イベントハンドラを設定することで `error` イベントを監視できます。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ translation_of: Web/API/MediaStream_Recording_API/Recording_a_media_element

MediaStream Recording API の使用の記事では、 {{domxref("MediaDevices.getUserMedia()","navigator.mediaDevices.getUserMedia()")}} から返されるように、{{domxref("MediaRecorder")}} インターフェイスを使用してハードウェアデバイスによって生成された {{domxref("MediaStream")}} をキャプチャする方法について説明しましたが、記録する `MediaStream` のソースとして HTML メディア要素({{HTMLElement("audio")}} または {{HTMLElement("video")}})も使用できます。 この記事では、それを実現する例を見ていきます。

## HTML の内容
## メディア要素の録画の例

### HTML

```html hidden
<p>Click the "Start" button to begin video recording for a few seconds. You can stop
the video by clicking the creatively-named "Stop" button. The "Download"
<p>Click the "Start Recording" button to begin video recording for a few seconds. You can stop
recording by clicking the "Stop Recording" button. The "Download"
button will download the received data (although it's in a raw, unwrapped form
that isn't very useful).
</p>
Expand All @@ -33,7 +35,7 @@ MediaStream Recording API の使用の記事では、 {{domxref("MediaDevices.ge
```html
<div class="left">
<div id="startButton" class="button">
Start
Start Recording
</div>
<h2>Preview</h2>
<video id="preview" width="160" height="120" autoplay muted></video>
Expand All @@ -45,7 +47,7 @@ MediaStream Recording API の使用の記事では、 {{domxref("MediaDevices.ge
```html
<div class="right">
<div id="stopButton" class="button">
Stop
Stop Recording
</div>
<h2>Recording</h2>
<video id="recording" width="160" height="120" controls></video>
Expand All @@ -65,8 +67,6 @@ MediaStream Recording API の使用の記事では、 {{domxref("MediaDevices.ge
</div>
```

**CSS content**

```css hidden
body {
font: 14px "Open Sans", "Arial", sans-serif;
Expand Down Expand Up @@ -115,8 +115,6 @@ h2 {
}
```

## JavaScript の内容

それでは、JavaScript コードを見てみましょう。 結局のところ、これがアクションの大部分が起こるところです!

### グローバル変数の設定
Expand All @@ -142,15 +140,15 @@ let recordingTimeMS = 5000;

```js
function log(msg) {
logElement.innerHTML += msg + "\n";
logElement.innerHTML += `${msg}\n`;
}
```

`log()` 関数は、ユーザーと情報を共有できるように、テキスト文字列を {{HTMLElement("div")}} に出力するために使用します。 それほどきれいではありませんが、この仕事は私たちの目的のために行われます。

```js
function wait(delayInMS) {
return new Promise(resolve => setTimeout(resolve, delayInMS));
return new Promise((resolve) => setTimeout(resolve, delayInMS));
}
```

Expand All @@ -165,17 +163,21 @@ function startRecording(stream, lengthInMS) {
let recorder = new MediaRecorder(stream);
let data = [];

recorder.ondataavailable = event => data.push(event.data);
recorder.ondataavailable = (event) => data.push(event.data);
recorder.start();
log(recorder.state + " for " + (lengthInMS/1000) + " seconds...");
log(`${recorder.state} for ${lengthInMS / 1000} seconds`);

let stopped = new Promise((resolve, reject) => {
recorder.onstop = resolve;
recorder.onerror = event => reject(event.name);
recorder.onerror = (event) => reject(event.name);
});

let recorded = wait(lengthInMS).then(
() => recorder.state == "recording" && recorder.stop()
() => {
if (recorder.state === "recording") {
recorder.stop();
}
},
);

return Promise.all([
Expand Down Expand Up @@ -209,7 +211,7 @@ function startRecording(stream, lengthInMS) {

```js
function stop(stream) {
stream.getTracks().forEach(track => track.stop());
stream.getTracks().forEach((track) => track.stop());
}
```

Expand All @@ -220,26 +222,31 @@ function stop(stream) {
それでは、この例で最も複雑なコードを見てみましょう。 開始ボタンをクリックしたときのイベントハンドラです。

```js
startButton.addEventListener("click", function() {
startButton.addEventListener("click", () => {
navigator.mediaDevices.getUserMedia({
video: true,
audio: true
}).then(stream => {
}).then((stream) => {
preview.srcObject = stream;
downloadButton.href = stream;
preview.captureStream = preview.captureStream || preview.mozCaptureStream;
return new Promise(resolve => preview.onplaying = resolve);
return new Promise((resolve) => preview.onplaying = resolve);
}).then(() => startRecording(preview.captureStream(), recordingTimeMS))
.then (recordedChunks => {
.then ((recordedChunks) => {
let recordedBlob = new Blob(recordedChunks, { type: "video/webm" });
recording.src = URL.createObjectURL(recordedBlob);
downloadButton.href = recording.src;
downloadButton.download = "RecordedVideo.webm";

log("Successfully recorded " + recordedBlob.size + " bytes of " +
recordedBlob.type + " media.");
log(`Successfully recorded ${recordedBlob.size} bytes of ${recordedBlob.type} media.`);
})
.catch(log);
.catch((error) => {
if (error.name === "NotFoundError") {
log("Camera or microphone not found. Can't record.");
} else {
log(error);
}
});
}, false);
```

Expand Down Expand Up @@ -267,18 +274,18 @@ startButton.addEventListener("click", function() {
最後のコードでは、{{domxref("EventTarget.addEventListener", "addEventListener()")}} を使用して停止ボタンの {{event("click")}} イベントのハンドラを追加します。

```js
stopButton.addEventListener("click", function() {
stopButton.addEventListener("click", () => {
stop(preview.srcObject);
}, false);
```

これは先ほど説明した [`stop()`](#stopping_the_input_stream) 関数を呼び出すだけです。

## 結果
### 結果

残りの HTML と上に示されていない CSS をすべてまとめると、次のようになり、動作します。

{{ EmbedLiveSample('Example', 600, 440, "", "", "", "camera;microphone") }}
{{ EmbedLiveSample('Example_of_recording_a_media_element', 600, 440, "", "", "", "camera;microphone") }}

API がどのように使用されているかの説明には重要ではないため上で隠されている部分も含めて、{{LiveSampleLink("Example", "すべてのコードを見る")}}ことができます。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ header {
}
```

> **Note:** ****: `calc()` は、最近のブラウザーでも、Internet Explorer 9 に戻っても十分にサポートされています。
> **Note:** `calc()` は、最近のブラウザーでも、Internet Explorer 9 に戻っても十分にサポートされています。
### 表示/非表示のチェックボックスのハック

Expand Down Expand Up @@ -151,7 +151,7 @@ if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
- **Success callback**: このコードは、`getUserMedia` の呼び出しが正常に完了した後に実行されます。
- **Error callback**: 何らかの理由で `getUserMedia` の呼び出しが失敗した場合、このコードが実行されます。

> **Note:** ****: 以下のコードはすべて `getUserMedia` の Success callback 内にあります。
> **Note:** 以下のコードはすべて `getUserMedia` の Success callback 内にあります。
## メディアストリームのキャプチャ

Expand Down Expand Up @@ -185,7 +185,7 @@ mediaRecorder.ondataavailable = function(e) {
}
```

> **Note:** ****: ブラウザーは必要に応じて `dataavailable` イベントを発生させますが、この間隔を制御するために `start()` メソッドを呼び出すときにタイムスライス(例えば `start(10000)` )を含めることも、必要なときに {{domxref("MediaRecorder.requestData()")}} を呼び出してイベントを発生させることもできます。
> **Note:** ブラウザーは必要に応じて `dataavailable` イベントを発生させますが、この間隔を制御するために `start()` メソッドを呼び出すときにタイムスライス(例えば `start(10000)` )を含めることも、必要なときに {{domxref("MediaRecorder.requestData()")}} を呼び出してイベントを発生させることもできます。
最後に、停止ボタンが押されたときに {{domxref("MediaRecorder.stop()")}} メソッドを使用して録音を停止し、アプリの他の場所で使用できるように {{domxref("Blob")}} を完成させます。

Expand Down

0 comments on commit 860ca4e

Please sign in to comment.