2013-05-01 19 views
27

Chromeを使用して、ブラウザからビデオ(ウェブカメラ)とオーディオ(マイク)をキャプチャし、ビデオファイルとしてストリームを保存できますか?HTML5 getUserMediaレコードウェブカメラ、オーディオとビデオの両方

私はこれを使って、後で見ることができるファイルにシンプルな(30秒)メッセージ(ビデオとオーディオの両方)を記録できるビデオ/光沢のようなアプリケーションを作成したいと考えています。

私はドキュメントを読みましたが、両方のオーディオをキャプチャする方法についての例はまだありません&ビデオ、ビデオファイルに結果を保存する方法がまだ見つかりませんでした。

誰が도와ますか?

答えて

1

次を使用します。

<input type="file" accept="image/*;capture=camera"> \\ Snapshot 
<input type="file" accept="video/*;capture=camcorder"> \\ Video 
<input type="file" accept="audio/*;capture=microphone"> \\ Audio 

そして、私の知る限り一緒にオーディオとビデオを記録し、それらを保存するためにそのような方法はありません承知していますようにPHPで、通常のファイルとして

+0

getUserMediaコールではどのように動作しますか? –

+0

多分こちらをご覧くださいhttp://www.html5rocks.com/jp/tutorials/getusermedia/intro/ – AgeDeO

+0

これはHTMLメディアキャプチャの仕様ですが、残念ながらモバイルデバイスでのみ動作します。これは、音声のみを記録しようとしているiOS上ではまだビデオレコーダーを起動するという例外がありますが、かなりうまく動作します。 –

12

あなたのオーディオを保存するために有効utillityはgetUserMedia()ストリーム(まだ実装下)を記録するためのWebRTC APIです。 Webアプリケーションは、ライブオーディオ/ビデオセッションからファイルを作成することができます。

<script language="javascript" type="text/javascript"> 
function onVideoFail(e) { 
    console.log('webcam fail!', e); 
    }; 

function hasGetUserMedia() { 
    // Note: Opera is unprefixed. 
    return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || 
      navigator.mozGetUserMedia || navigator.msGetUserMedia); 
} 

if (hasGetUserMedia()) { 
    // Good to go! 
} else { 
    alert('getUserMedia() is not supported in your browser'); 
} 

window.URL = window.URL || window.webkitURL; 
navigator.getUserMedia = navigator.getUserMedia || 
         navigator.webkitGetUserMedia || 
          navigator.mozGetUserMedia || 
          navigator.msGetUserMedia; 

var video = document.querySelector('video'); 
var streamRecorder; 
var webcamstream; 

if (navigator.getUserMedia) { 
    navigator.getUserMedia({audio: true, video: true}, function(stream) { 
    video.src = window.URL.createObjectURL(stream); 
    webcamstream = stream; 
// streamrecorder = webcamstream.record(); 
    }, onVideoFail); 
} else { 
    alert ('failed'); 
} 

function startRecording() { 
    streamRecorder = webcamstream.record(); 
    setTimeout(stopRecording, 10000); 
} 
function stopRecording() { 
    streamRecorder.getRecordedData(postVideoToServer); 
} 
function postVideoToServer(videoblob) { 

    var data = {}; 
    data.video = videoblob; 
    data.metadata = 'test metadata'; 
    data.action = "upload_video"; 
    jQuery.post("http://www.foundthru.co.uk/uploadvideo.php", data, onUploadSuccess); 
} 
function onUploadSuccess() { 
    alert ('video uploaded'); 
} 

</script> 

<div id="webcamcontrols"> 
    <button class="recordbutton" onclick="startRecording();">RECORD</button> 
</div> 

http://www.w3.org/TR/mediastream-recording/

+8

あなたはそのコードをどこでテストしましたか? AFAIKこれはまだどんなブラウザでも実装されていません... –

+0

上記のpostVideoToServer()は本当に動作するのでしょうか、それとも将来的には動作すると思われましたか? – kheya

+5

上記のコードで 'webcamstream.record()'は関数ではありません。エラーをスローする – Haseeb

2

これは、これはクロムをサポートし、音声+映像を記録するためのライブラリを提供し、私のgithubのレポで、最終的にチャンク

  1. としてサーバーにコンテンツをアップロードOpera
  2. ブロブがスライスされてアップロードされるため、アップロード時間が短縮されます

Html_Audio_Video_Recorder

3

ウェブ上のオーディオおよびビデオを記録するためのいくつかの生産準備ができて解決策は現在ありません。

デスクトップブラウザ

MediaRecorderのAPI(HTML)

MediaRecorderのAPI(MediaStreamのレコーダー)は、ウェブカメラへのアクセスとis supported by Firefox 30+ and Chrome 49+ためgetUserMedia()に依存しています。

Flashクライアント+ RTMPメディアサーバー

あなたは(フラッシュが必要になります。swf)アプリケーションを使用して、訪問者のウェブカメラとマイクをキャプチャし、生のビデオとオーディオのデータをコーデック(H.264、Spark、Nellymoser ASAO、Speexを使用)でエンコードし、は、(rtmp経由)をメディアサーバーに送信します。

データがストリーミングされるため、録画を停止するとすぐに、すべてのデータがメディアセブラーにアップロードされます(アップロード時間なし)。別の利点は、クライアントコンピュータがクラッシュした場合でもビデオが失われないことです。

あなたは、メディアサーバーには、少なくとも3つのオプションがあります。

  1. Red5は、フリーでオープンソースです(私は個人的にそれで記録プロセスにコードのパッチを貢献していると私はそれは素晴らしい作品を保証することができます)
  2. Wowza($ 65 /月)
  3. Adobe Media Server Pro($ 4500)
  4. メディアサーバーが受信

(再びストリーミングスルー/ RTMPありませんhttpを介して)、使用されるクライアントおよびメディアサーバで使用されるコーデックに応じて、オーディオおよびビデオデータはmp4、flvまたはf4vファイルに多重化されます。

このフラッシュクライアント+メディアサーバ記録処理 - 2002年

モバイルブラウザにはFlash Player 6以降かなりうまく働いている

HTMLメディアは

あなたはHTMLのメディアキャプチャを使用することができますキャプチャ(explained here with screenshots)を使用して、デバイスのネイティブビデオ録画アプリとコーデックを使用してビデオを録画します。 HTMLメディアキャプチャはローカルで(デバイス上で)記録し、次にファイルをWebサーバーにアップロードします(通常のHTTPアップロードプロセス)。

iPhoneのなどのiOSデバイスでSafariでHTMLメディアキャプチャを使用すると、Androidで再生できない.movファイルが作成されます。解決策は、FFmpegを使用してそれを.mp4サーバー側に変換することです。

AndroidブラウザでHTMLメディアキャプチャを使用すると、最終結果はiPhoneで再生可能な.mp4ファイルになります。古いAndroid携帯の中には、.3gpのファイルを作成するものもあります。

デスクトップ上のFlashクライアント+メディアサーバーとモバイル上のHTMLメディアキャプチャの両方を実装する商用ソリューションは、HDFVRです。

関連する問題