Wer*_*eta 16 cordova peerjs ionic
我正在尝试在我正在创建的phonegap应用程序中实现音频调用.我正在使用PeerJS让2个客户端连接.这部分正在运作.但问题在于为媒体流创建的URL.它看起来像这样:
<audio src="blob:file%3A///6212fd77-7d1e-46ba-9abe-cfe96d414b28"></audio>
Run Code Online (Sandbox Code Playgroud)
而不是像:
<audio src="blob:http%3A///url-to-server.com/6212fd77-7d1e-46ba-9abe-cfe96d414b28"></audio>
Run Code Online (Sandbox Code Playgroud)
这就是为什么两台设备都没有听到任何消息(我正在使用genymotion和我的智能手机进行测试).
但奇怪的是,当我在浏览器和手机中进行测试时,它可以正常工作.当我在笔记本电脑中使用内置麦克风讲话时,我会在手机上听到它.但是当我用手机说话时,笔记本电脑上没有任何声音.
作为参考,当我选择播放媒体流的音频元素时,这就是我所得到的:
<audio src="blob:http%3A//localhost%3A8100/861180b2-2c12-4134-a6da-89fcb40ef372"></audio>
Run Code Online (Sandbox Code Playgroud)
不确定这是否真的是问题.
我正在使用离子来开发应用程序,它可以与crosswalk顺利集成,基本上只是将最近的Chrome浏览器与你的应用程序打包在一起,这样它就可以毫无问题地使用闪亮的新东西.
这是请求麦克风的代码:
function getAudio(successCallback, errorCallback){
navigator.getUserMedia({
audio: true,
video: false
}, successCallback, errorCallback);
}
Run Code Online (Sandbox Code Playgroud)
然后每当有人发起呼叫时我都会打电话:
getAudio(
function(MediaStream){
console.log('now calling ' + to);
var call = peer.call(to, MediaStream);
call.on('stream', onReceiveStream);
});
Run Code Online (Sandbox Code Playgroud)
然后onReceiveStream将媒体流转换为URL,然后将其分配给音频元素:
function onReceiveStream(stream){
var audio = document.querySelector('audio');
audio.src = window.URL.createObjectURL(stream);
audio.onloadedmetadata = function(e){
console.log('now playing the audio');
audio.play();
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?提前致谢.
更新
似乎真正的问题是无法从手机中捕获音频,因为它在navigator.getUserMedia调用时不会请求访问麦克风.我确认navigator.getUserMedia在使用genymotion进行测试时可以访问.虽然它也没有要求在genymotion中访问.我正在使用recordRTC作为垫片提供者.
更新2
好吧,我放弃了这个.它真的不可能要求麦克风.我现在正在尝试的是PhoneRTC.但我再次陷入困境.我安装插件时它没有建立.有关更多详细信息,请在项目Github页面上查看此问题:https: //github.com/alongubkin/phonertc/issues/151
要访问手机资源,您必须在 AndroidManifest.xml 上声明它,以便最终用户在安装应用程序时知道它。
Cordova 和/或 Phongap 插件构建一个应用程序,即使您没有将它们用作 webview 库,因此您必须在清单中请求许可。
对于麦克风和摄像头的权限是:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Run Code Online (Sandbox Code Playgroud)
但似乎有些插件也做了一些技巧,还需要一个:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2535 次 |
| 最近记录: |