teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

参考ページ・コードを追加しました。

2020/06/27 22:43

投稿

syukun2
syukun2

スコア24

title CHANGED
File without changes
body CHANGED
@@ -3,4 +3,56 @@
3
3
  ビデオをmp4で録画・保存することはできますか?
4
4
  もしくは、WebMをmp4に変換する方法を紹介していただけたら助かります。
5
5
 
6
- よろしくお願いします。
6
+ よろしくお願いします。
7
+
8
+ 参考ページ:
9
+ [https://qiita.com/niisan-tokyo/items/fa6ff649a9a3312148bc](https://qiita.com/niisan-tokyo/items/fa6ff649a9a3312148bc)
10
+
11
+ コード:
12
+ ```Javascript
13
+ var video = document.getElementById('video')// 適当にvideoタグのオブジェクトを取得
14
+ var constrains = { video: true, audio: true }// 映像・音声を取得するかの設定
15
+ navigator.mediaDevices.getUserMedia(constrains)
16
+ .then(function(stream) {
17
+ video.srcObject = stream // streamはユーザーのカメラとマイクの情報で、これをvideoの入力ソースにする
18
+ video.play()
19
+ })
20
+ .catch(function(err) {
21
+ console.log("An error occured! " + err)
22
+ })
23
+ // まずはユーザーのカメラ・マイクへのアクセスを実施
24
+ navigator.mediaDevices.getUserMedia(constrains)
25
+ .then(function (stream) {
26
+ recorder = new MediaRecorder(stream) // 映像の入力ソースをユーザーのデバイスから取得
27
+ recorder.ondataavailable = function (e) {
28
+ var testvideo = document.getElementById('test')
29
+ testvideo.setAttribute('controls', '')
30
+ testvideo.setAttribute('width', width)
31
+ testvideo.setAttribute('height', height)
32
+ var outputdata = window.URL.createObjectURL(e.data) // videoタグが扱えるように、記録データを加工
33
+ testvideo.src = outputdata // テスト用のビデオのソースに記録データを設置
34
+ }
35
+ })
36
+
37
+ startbutton.addEventListener('click', function(ev){
38
+ recorder.start()
39
+ ev.preventDefault()
40
+ }, false);
41
+
42
+ stopbutton.addEventListener('click', function(ev) {
43
+ recorder.stop()
44
+ })
45
+
46
+ downloadbutton.addEventListener('click', function(ev) {
47
+ console.log(record_data)
48
+ var blob = new Blob(record_data, { type: 'video/webm' })// 録画ファイルをblob形式に出力
49
+ var url = window.URL.createObjectURL(blob) // データにアクセスするためのURLを作成
50
+ var a = document.createElement('a') // download属性を持ったaタグをクリックするとダウンロードができるので、それをシミュレートする
51
+ document.body.appendChild(a)
52
+ a.style = 'display:none'
53
+ a.href = url;
54
+ a.download = 'test.webm'
55
+ a.click()
56
+ window.URL.revokeObjectURL(url)
57
+ })
58
+ ```