Comment enregistrer d'une webcam et audio en utilisant webRTC et un serveur de base de la connexion Homologue
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 .record()
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 aussi.
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>
- J'ai le même problème. Est la méthode getRecordedData() de travail pour vous ? Il n'est pas sur mon nouveau-mise à jour des navigateurs.
- Non - j'ai essayé Google "Canaries" aussi.
- Ouais je vais garder un œil sur elle - je vais mettre à jour ce fil quand il y a une solution adéquate.
- si vous avez la solution de la question ci-dessus s'il vous plaît partager avec moi, Merci
- Quelqu'un a été en mesure d'obtenir à la MediaStream octets par certains côté serveur RTC magie?
- Openvidu openvidu.io
Vous devez vous connecter pour publier un commentaire.
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
LGPLApache 2.0EDIT 1
Depuis ce post, nous avons ajouté un nouveau tutoriel qui montre comment ajouter l'enregistreur dans un couple de scénarios
Avertissement: je fais partie de l'équipe qui développe Kurento.
S'il vous plaît, vérifiez la RecordRTC
RecordRTC est sous licence MIT sur github.
Je crois que l'aide kurento ou d'autres Mcu juste pour l'enregistrement de vidéos serait peu exagérer, surtout compte tenu du fait que Chrome a MediaRecorder prise en charge des API de v47 et Firefox depuis v25. Donc, à ce stade, vous pourriez même pas besoin d'une source externe bibliothèque js pour faire le travail, essayez cette démo, je l'ai fait pour enregistrer de la vidéo/audio à l'aide de MediaRecorder:
Démo - serait de travailler dans chrome et firefox (intentionnellement laissé de côté en poussant blob de code serveur)
Github le Code Source
Si l'exécution de firefox, vous pouvez le tester ici même( chrome besoins
https
):JS:
CSS:
HTML:
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.
Vous pouvez utiliser RecordRTC-ensemble, qui est basé sur RecordRTC.
Il prend en charge l'enregistrement vidéo et audio ensemble dans des fichiers séparés. Vous aurez besoin de l'outil comme
ffmpeg
pour fusionner deux fichiers en un seul sur le serveur.Web Serveur D'Appel 4 pouvez enregistrer WebRTC audio et vidéo à conteneur WebM.
L'enregistrement est effectué à l'aide de codec Vorbis pour l'audio avec le codec VP8 pour la vidéo.
Iniitial WebRTC codecs sont Opus ou G. 711 et VP8. Ainsi, le serveur d'enregistrement nécessite Opus/G. 711 pour Vorbis côté serveur de transcodage ou VP8-H. 264 transcodage si il est nécessaire d'utiliser un autre récipient, c'est à dire AVI.
Découvrez Janus. Voici un enregistrement de la démo:
https://janus.conf.meetecho.com/recordplaytest.html
Contrairement à Kurento, dont le développement a ralenti sévèrement après la Twilio acquisition, Janus est toujours activement développé et pris en charge.
Pour l'enregistrement je n'ai pas assez de connaissances sur ce sujet,
Mais j'ai trouvé cela sur Git hub-
Sur la Ligne numéro 89 dans mon cas, le code OnrecordComplete effectivement ajouter un lien de fichier d'enregistrement, si vous cliquez sur ce lien, il va commencer le téléchargement, vous pouvez enregistrer ce chemin d'accès à votre serveur en tant que fichier.
L'Enregistrement du code ressemble à ceci
La blobUrl contient le chemin d'accès. J'ai résolu mon problème avec cela, espérons que quelqu'un va trouver cela utile
Techniquement, vous pouvez utiliser FFMPEG sur le backend de mix vidéo et audio