6

わかりました、質問をできるだけ明確にするつもりですが、かなり混乱しているので、メッセージが伝わらない場合はお知らせください.

getUserMedia を使用してウェブカメラを使用しようとしていて、これを使用しようとしています

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

キャプチャされた短いビデオを記録します。問題は、新しい MediaRecorder(stream) を定義しようとすると、未定義であると言われることです。私は以前にこの API を使用したことがないので、何が欠けているのかよくわかりません。関連するコードは次のとおりです。

function onVideoFail(e) {
console.log('webcam fail!', e);
};

function hasGetUserMedia() {
    return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||     navigator.mozGetUserMedia || navigator.msGetUserMedia);
}

if (hasGetUserMedia()) {
    window.URL = window.URL || window.webkitURL;
    navigator.getUserMedia = navigator.getUserMedia ||
                        navigator.webkitGetUserMedia ||
                        navigator.mozGetUserMedia ||
                        navigator.msGetUserMedia;


    if (navigator.getUserMedia) {
        navigator.getUserMedia({video: true, audio: false}, function(stream){
        var video = document.querySelector('video');
        var recorder = new MediaRecorder(stream); <<<<<< THIS IS MY PROBLEM SPOT
        video.src = window.URL.createObjectURL(stream);
        video.play();

        // webcamstream = stream;
        // streamrecorder = webcamstream.record();
        }, onVideoFail);
    } else {
    alert('failed');
    }
} else {
alert('getUserMedia() is not supported by this browser!!');
}

私は参考のためにこれを見ようとしてきました:

HTML5 getUserMedia は、オーディオとビデオの両方のウェブカメラを記録します

4

5 に答える 5

6

MediaStream Recording (またはそれが定義する JS オブジェクトの後のMedia Recorder API ) が、デスクトップの 2 つの主要なブラウザーに実装されました。MediaRecorder

  • Firefox 30オーディオ + ビデオ
  • Chrome 47、48 は、chrome://flags で実験的な Web プラットフォームがオンになっている動画専用です
  • Chrome 49オーディオ + ビデオ

コンテナ:

  • どちらも .webm コンテナーに記録します。

ビデオコーデック:

  • どちらも VP8 ビデオを記録します
  • Chrome 49+ は VP9 ビデオを録画できます
  • Chrome 52+ は H.264 ビデオを録画できます

オーディオコーデック:

  • Firefox は Vorbis オーディオ @ 44.1 kHz を記録します
  • Chrome 49 は Opus オーディオ @ 48 kHz を記録します

デモ/GitLab:

これらのデモは、必ず HTTPS または localhost で実行してください。

Chrome 47 以降、getUserMedia() リクエストは安全なオリジン (HTTPS または localhost) からのみ許可されます。

参考文献:

免責事項: 私はビデオ録画を扱うパイプで働いています。

于 2015-12-11T08:17:05.043 に答える
4

MediaStream Recording のデモをsimpl.info/mediarecorderに置きました。

これは現在、Firefox Nightly で動作し、@Apzx が言うように、音声のみです。Chromeに実装する意図があります。

于 2013-09-23T10:18:57.410 に答える
2

バージョン 49 の時点で、Chrome はMediaRecorder APIをサポートするようになりました。MediaStream オブジェクトを記録できるようになりました。残念ながら、文字通り Chrome の最新バージョン (少なくともこの記事の執筆時点) よりも古いブラウザー用に MediaStreams を記録する必要がある製品を構築している場合は、WebRTC メディア サーバー/ゲートウェイを利用する必要があります。

基本的な考え方は、ピア接続がサーバー上でインスタンス化され、ローカル ピアがビデオおよび/またはオーディオ ストリームをその接続オブジェクトにアタッチして、サーバー ピアに送信するというものです。次に、サーバーは着信 WebRTC ストリームをリッスンし、それをファイルに記録します。チェックアウトしたいメディアサーバーのカップル:

私は個人的に Kurento を使用しており、それを使用してストリームを記録しており、大きな成功を収めています。

メディア サーバーを機能させるには、 ICE Candidatesのシグナリングと処理を処理する独自のアプリ サーバーを起動する必要があります。これは非常に単純で、Kurento にはNode と Java を使用した非常に優れた例がいくつかあります。

一般の視聴者を対象としており、メディア サーバーを使用している場合は、おそらく STUN または TURN サーバーも必要になるでしょう。これらのサーバーは、基本的にネットワーク トポロジを使用して、メディア サーバーのパブリック IP とクライアントのパブリック IP を取得します。いずれかの端 (メディアサーバーまたはクライアント) が対称 NATの背後にある場合、STUN サーバーでは不十分であり、TURN サーバーを使用する必要があることに注意してください (無料のサーバーはここにあります)。詳細は省きますが、TURN サーバーがリレー ゲートウェイであるのに対し、STUN サーバーはシグナリング ゲートウェイとして機能することを覚えておくとよいでしょう。つまり、メディア ストリームは文字通り TURN サーバーを通過しますが、メディア ストリームは RTC ピア接続から他の接続に直接渡されます。

うまくいけば、これは役に立ちました。RTC 記録機能が本当に必要な場合は、長い道のりを歩むことになるので、それだけの価値があることを確認してください。

于 2016-03-24T23:54:44.583 に答える
0

Chrome が MediaStream Recording の機能を大まかにエミュレートするための回避策があるRecordRTCも参照してください。Firefox のドキュメントはこちら

于 2015-04-22T04:25:55.523 に答える