Enviar um servidor MediaStream para hospedar com o WebRTC depois de ser capturado pelo getUserMedia
Estou captando dados de áudio usando {[[1]} e quero enviá-lo para o meu servidor para que eu possa salvá-lo como uma bolha em um campo MySQL.
Isto é tudo o que estou a tentar fazer. Eu fiz várias tentativas para fazer isso usando WebRTC, mas eu nem sei neste momento se isso é certo ou mesmo a melhor maneira de fazer isso. Alguém me pode ajudar? Aqui está o código que estou a usar para capturar o áudio do microfone.navigator.getUserMedia({
video:false,
audio:true,
},function(mediaStream){
// output mediaStream to speakers:
var mediaStreamSource=audioContext.createMediaStreamSource(mediaStream);
mediaStreamSource.connect(audioContext.destintion);
// send mediaStream to server:
// WebRTC code? not sure about this...
var RTCconfig={};
var conn=new RTCPeerConnection(RTCconfig);
// ???
},function(error){
console.log('getUserMedia() fail.');
console.log(error);
});
Como posso enviar isto para o servidor?
Depois de pesquisar no Google, estive a investigar WebRTC
, mas isso parece ser apenas uma comunicação entre pares [[14] - na verdade, Agora estou olhando mais para isso, eu acho que este é o caminho a seguir. Parece ser a maneira de se comunicar do navegador do cliente até o servidor Web host, mas nada que eu tente chega perto de funcionar.
estive a ver a documentação do W3C (que estou a achar demasiado abstracta), e tenho andado através disto artigo sobre o HTML5 Rocks (que levanta mais perguntas do que respostas). Parece que preciso de um método de sinalização, alguém pode aconselhar qual é o melhor método de sinalização para enviar medíastreams, XHR, XMPP, SIP, Socket.io ou outra coisa?
O que vou precisar no servidor para suportar o recebimento do WebRTC? O meu servidor está a correr uma pilha de lâmpadas básicas. Além disso, é melhor esperar até que o {[[2]} esteja terminado de gravar antes que eu o envie para o servidor, ou é melhor enviar o mediaStream
Como está a ser gravado? Quero saber se vou fazer isto da maneira certa. Eu escrevi uploaders de arquivos em javascript e HTML5, mas o upload de um desses {[[6]} parece hellishly mais complicado e eu não tenho certeza se estou me aproximando direito.
2 answers
Não pode enviar o fluxo ao vivo em si enquanto ele está em execução. Isto é porque é uma corrente ao vivo.
Então, isso deixa-te com algumas opções.- gravar o fluxo de áudio usando um dos muitos gravadores lá fora gravar funciona bastante bem. Espere até que o fluxo esteja completo e, em seguida, upload o arquivo.
- enviar blocos menores de áudio gravado com um temporizador e juntá-los novamente do lado do servidor. Este é um exemplo de este
- envie os pacotes de áudio à medida que ocorrem através de websockets para o seu servidor para que possa manipulá-los e fundi-los lá. a minha versão do RecordRTC Faz isto.
- Faça uma ligação de pares com o seu servidor para que ele possa agarrar a transmissão raw da rtp e você possa gravar a transmissão usando algum código de nível inferior. Isto pode ser feito facilmente com o Janus-Gateway.
O Firefox tem realmente uma solução própria para gravar mas não é suportado no chrome, por isso pode não funcionar na sua situação.
Como um aparte, o método de sinalização mencionado é para sessão construir / destruir e realmente não tem nada a ver com a própria mídia. Você só se preocuparia com isso se estivesse usando possivelmente a solução número 4 mostrada acima.
Uma boa API para si seria MediaRecorder API mas é menos suportada do que a API de áudio Web, por isso pode fazê-lo usando um ScriptNode ou usar Gravador.js (ou base nele para construir o seu próprio scriptnode).