Chrome=を使用して、ブラウザからビデオ(ウェブカメラ)とオーディオ(マイク)をキャプチャし、ストリームをビデオファイルとして保存することはできますか?
これを使用して、ユーザーが後で見ることができるファイルに簡単な(30秒)メッセージ(ビデオとオーディオの両方)を記録できるビデオ/フォトブースのようなアプリケーションを作成したいと思います。
私はドキュメントを読みましたが、オーディオとビデオの両方をキャプチャする方法の例を(まだ)見ていません。また、結果をビデオファイルに保存する方法をまだ見つけていません。
誰が助けることができますか?
MediaStreamRecorderは、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>
私が知る限り、オーディオとビデオを一緒に記録し、1つのファイルとして保存する方法はありません。オーディオをwavファイルとして、ビデオをwebmファイルとしてキャプチャして保存することができます。
ビデオの保存方法に関する素晴らしい投稿です。 http://ericbidelman.tumblr.com/post/31486670538/creating-webm-video-from-getusermedia
そして、あなたのオーディオを保存するための便利なユーティリティ
現在、Webでオーディオとビデオを記録するためのいくつかのプロダクション対応ソリューションがあります。
MediaRecorder API(HTML)
MediaRecorder API(MediaStream Recorder)は、WebカメラへのアクセスをgetUserMedia()
に依存しています。 Firefox 30以降およびChrome 49 + でサポートされています。
フラッシュクライアント+ rtmpメディアサーバー
Webページに埋め込まれ、訪問者のWebカメラとマイクをキャプチャし、生のビデオとオーディオデータをエンコードするFlash(.swf)アプリケーションが必要です(組み込みコーデック:H.264、Spark、Nellymoser ASAOおよびSpeexを使用)および記録されたデータを(rtmp経由で)メディアサーバーにストリーミングします。
データはストリーミングされるため、記録を停止するとすぐに、すべてのデータはすでにメディアサーバー上にあります(アップロード時間なし)。もう1つの利点は、クライアントコンピューターがクラッシュしてもビデオが失われないことです。
メディアサーバーには少なくとも3つのオプションがあります。
メディアサーバーは、(httpではなくstreaming/rtmpを介して)データを受信し、クライアントで使用されるコーデックと使用されるメディアサーバーに応じて、オーディオおよびビデオデータはmp4、flvまたはf4vファイルで多重化されます。
このFlashクライアント+メディアサーバーの記録プロセス-2002年のFlash Player 6以降、かなりうまく機能しています。
HTML Media Capture
HTML Media Capture( ここでスクリーンショットで説明 )を使用して、デバイスのネイティブのビデオ録画アプリとコーデックを使用してビデオを録画できます。 HTML Media Captureはローカルで(デバイス上で)レコードを作成し、ファイルをWebサーバーにアップロードします(通常のHTTPアップロードプロセス)。
iPhoneなどのiOSデバイスのSafariでHTML Media Captureを使用すると、Androidでは再生できない.movファイルが作成されます。解決策は、FFmpegを使用して.mp4サーバー側に変換することです。
AndroidブラウザーでHTML Media Captureを使用すると、最終結果はiPhoneで再生可能な.mp4ファイルになります。一部の古いAndroid電話は.3gpを作成しますファイル。
両方(デスクトップ上のFlashクライアント+メディアサーバーとモバイル上のHTML Media Capture)を実装する商用ソリューションは、 [〜#〜] hdfvr [〜#〜] です。
これは私のgithubリポジトリで、オーディオ+ビデオを記録するためのライブラリを提供し、最終的にコンテンツをチャンクとしてサーバーにアップロードします
以下を使用します。
<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で通常のファイルとして扱います