101 votes

Comment enregistrer une webcam et de l'audio à l'aide de webRTC et d'une connexion Peer basée sur un serveur

Je voudrais enregistrer les utilisateurs de webcam et audio et l'enregistrer dans un fichier sur le serveur. Ces fichiers pourront ensuite servir à d'autres utilisateurs.

Je n'ai pas de problèmes avec la lecture, cependant, je vais avoir des problèmes pour obtenir le contenu de l'enregistrement.

Ma compréhension est que le getUserMedia .enregistrer() la fonction n'a pas encore été écrite seulement une proposition a été faite pour elle jusqu'à présent.

Je voudrais créer un pair de connexion sur mon serveur à l'aide de la PeerConnectionAPI. Je comprends que c'est très orthodoxe, mais je pense qu'il devrait être possible de créer un pair sur le serveur et d'enregistrer ce que le client-peer envoie.

Si c'est possible, je dois être en mesure d'enregistrer ces données au format flv ou tout autre format vidéo.

Ma préférence est fait pour enregistrer la webcam + audio côté client, pour permettre au client de ré-enregistrement de vidéos si ils n'aimaient pas leur première tentative avant de le télécharger. Cela pourrait aussi permettre d'interruptions dans la connexion de réseau. J'ai vu un bout de code qui permet l'enregistrement de l'individu 'images' a partir de la webcam par l'envoi des données à la toile, c'est cool, mais j'ai besoin de l'audio.

Voici le code côté client j'ai pour l'instant:

  <video autoplay></video>

<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 x = new XMLHttpRequest();
    x.open('POST', 'uploadMessage');
    x.send(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">
    <a class="recordbutton" href="javascript:startRecording();">RECORD</a>
</div>

50voto

igracia Points 138

Vous devriez vraiment avoir un coup d'oeil à Kurento. Il fournit un WebRTC infrastructure de serveur qui vous permet d'enregistrer à partir d'un WebRTC nourrir et beaucoup plus. Vous pouvez aussi trouver des exemples pour l'application de la planification de ici. Il est vraiment facile d'ajouter des capacités d'enregistrement de la démo, et de stocker le fichier multimédia dans un URI (disque local ou où).

Le projet est sous licence LGPL.

Avertissement: je fais partie de l'équipe qui développe Kurento.

18voto

Dmitry Points 184

S'il vous plaît, vérifiez le RecordRTC

RecordRTC est sous licence MIT sur github .

8voto

Konga Raju Points 3352

oui, comme vous l'avez compris, MediaStreamRecorder est actuellement pas implémenté.

MediaStreamRecorder est une API WebRTC pour l'enregistrement getUserMedia() des flux . Il permet d'applications web pour créer un fichier à partir d'un live audio/vidéo de la session.

alternativement, vous pouvez faire comme ceci http://ericbidelman.tumblr.com/post/31486670538/creating-webm-video-from-getusermedia mais l'audio est partie manquante.

4voto

Mifeng Points 872

Vous pouvez utiliser RecordRTC-together , basé sur RecordRTC.

Il prend en charge l'enregistrement vidéo et audio ensemble dans des fichiers séparés. Vous aurez besoin d’un outil tel que ffmpeg pour fusionner deux fichiers en un seul sur le serveur.

-6voto

EugeneB Points 1

Techniquement, vous pouvez utiliser FFMPEG sur le backend pour mixer vidéo et audio

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X