Windows phone 7 使用phonegap/Cordova媒体播放MP3
我的问题:Windows phone 7 使用phonegap/Cordova媒体播放MP3,windows-phone-7,cordova,cordova-2.0.0,Windows Phone 7,Cordova,Cordova 2.0.0,我的问题: [...] GapBrowser_Navigated :: /app/www/index.html 'UI Task' (Managed): Loaded 'System.ServiceModel.Web.dll' 'UI Task' (Managed): Loaded 'System.ServiceModel.dll' Log:"onDeviceReady. You should see this message in Visual Studio's output window."
[...]
GapBrowser_Navigated :: /app/www/index.html
'UI Task' (Managed): Loaded 'System.ServiceModel.Web.dll'
'UI Task' (Managed): Loaded 'System.ServiceModel.dll'
Log:"onDeviceReady. You should see this message in Visual Studio's output window."
'UI Task' (Managed): Loaded 'Microsoft.Xna.Framework.dll'
Log:"playMP3() counter 0"
'UI Task' (Managed): Loaded 'System.SR.dll'
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 1}"
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 2}"
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 2, \"value\": 2.141}"
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 4}"
Log:"playMP3() counter 1"
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.IOException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.IsolatedStorage.IsolatedStorageException' occurred in mscorlib.dll
Log:"media on status :: {\"id\": \"2de3388c-bbb6-d896-9e27-660f1402bc2a\", \"msg\": 9, \"value\": 5}"
Log:"onDeviceReady. You should see this message in Visual Studio's output window."
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
Log:"playMP32() counter 0"
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
Log:"playMP32() counter 1"
Log:"playMP3() counter 2"
INFO: startPlayingAudio could not find mediaPlayer for b60fa266-d105-a295-a5be-fa2c6b824bc1
A first chance exception of type 'System.ArgumentException' occurred in System.Windows.dll
Error: El parámetro es incorrecto.
Log:"playMP32() counter 3"
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
我使用科尔多瓦的媒体课程。
MP3文件只播放一次(第一次)
代码:
[...]
GapBrowser_Navigated :: /app/www/index.html
'UI Task' (Managed): Loaded 'System.ServiceModel.Web.dll'
'UI Task' (Managed): Loaded 'System.ServiceModel.dll'
Log:"onDeviceReady. You should see this message in Visual Studio's output window."
'UI Task' (Managed): Loaded 'Microsoft.Xna.Framework.dll'
Log:"playMP3() counter 0"
'UI Task' (Managed): Loaded 'System.SR.dll'
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 1}"
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 2}"
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 2, \"value\": 2.141}"
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 4}"
Log:"playMP3() counter 1"
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.IOException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.IsolatedStorage.IsolatedStorageException' occurred in mscorlib.dll
Log:"media on status :: {\"id\": \"2de3388c-bbb6-d896-9e27-660f1402bc2a\", \"msg\": 9, \"value\": 5}"
Log:"onDeviceReady. You should see this message in Visual Studio's output window."
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
Log:"playMP32() counter 0"
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
Log:"playMP32() counter 1"
Log:"playMP3() counter 2"
INFO: startPlayingAudio could not find mediaPlayer for b60fa266-d105-a295-a5be-fa2c6b824bc1
A first chance exception of type 'System.ArgumentException' occurred in System.Windows.dll
Error: El parámetro es incorrecto.
Log:"playMP32() counter 3"
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
将此代码添加到Cordova Starter项目以重现我的问题:
var playCounter = 0;
function playMP3(){
console.log("playMP3() counter " + playCounter);
var my_media = new Media("app/www/test.mp3");//ressource buildAction == content
my_media.play();
playCounter++;
}
[...]
<p onclick="playMP3();">Click to Play MP3</p>
我的配置:
[...]
GapBrowser_Navigated :: /app/www/index.html
'UI Task' (Managed): Loaded 'System.ServiceModel.Web.dll'
'UI Task' (Managed): Loaded 'System.ServiceModel.dll'
Log:"onDeviceReady. You should see this message in Visual Studio's output window."
'UI Task' (Managed): Loaded 'Microsoft.Xna.Framework.dll'
Log:"playMP3() counter 0"
'UI Task' (Managed): Loaded 'System.SR.dll'
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 1}"
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 2}"
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 2, \"value\": 2.141}"
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 4}"
Log:"playMP3() counter 1"
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.IOException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.IsolatedStorage.IsolatedStorageException' occurred in mscorlib.dll
Log:"media on status :: {\"id\": \"2de3388c-bbb6-d896-9e27-660f1402bc2a\", \"msg\": 9, \"value\": 5}"
Log:"onDeviceReady. You should see this message in Visual Studio's output window."
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
Log:"playMP32() counter 0"
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
Log:"playMP32() counter 1"
Log:"playMP3() counter 2"
INFO: startPlayingAudio could not find mediaPlayer for b60fa266-d105-a295-a5be-fa2c6b824bc1
A first chance exception of type 'System.ArgumentException' occurred in System.Windows.dll
Error: El parámetro es incorrecto.
Log:"playMP32() counter 3"
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
- cordova-1.6.1.js
- 卢米亚800
- WP 7.5(7.10.7740.16)
[...]
GapBrowser_Navigated :: /app/www/index.html
'UI Task' (Managed): Loaded 'System.ServiceModel.Web.dll'
'UI Task' (Managed): Loaded 'System.ServiceModel.dll'
Log:"onDeviceReady. You should see this message in Visual Studio's output window."
'UI Task' (Managed): Loaded 'Microsoft.Xna.Framework.dll'
Log:"playMP3() counter 0"
'UI Task' (Managed): Loaded 'System.SR.dll'
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 1}"
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 2}"
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 2, \"value\": 2.141}"
Log:"media on status :: {\"id\": \"fa123123-bc55-a266-f447-8881bd32e2aa\", \"msg\": 1, \"value\": 4}"
Log:"playMP3() counter 1"
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.IOException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.IsolatedStorage.IsolatedStorageException' occurred in mscorlib.dll
Log:"media on status :: {\"id\": \"2de3388c-bbb6-d896-9e27-660f1402bc2a\", \"msg\": 9, \"value\": 5}"
Log:"onDeviceReady. You should see this message in Visual Studio's output window."
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
Log:"playMP32() counter 0"
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
Log:"playMP32() counter 1"
Log:"playMP3() counter 2"
INFO: startPlayingAudio could not find mediaPlayer for b60fa266-d105-a295-a5be-fa2c6b824bc1
A first chance exception of type 'System.ArgumentException' occurred in System.Windows.dll
Error: El parámetro es incorrecto.
Log:"playMP32() counter 3"
INFO: startPlayingAudio could not find mediaPlayer for 71888b14-86fe-4769-95c9-a9bb05d5555b
- 取消激活应用程序(关闭屏幕)
- 重新激活应用程序(打开屏幕)
- ->你还有一次机会
- 播放test2.mp3,可以很好地回放
- 根本不播放test.mp3李>
- 这是您播放的第一个有效文件
function onDeviceReady()
{
document.getElementById("welcomeMsg").innerHTML += "Cordova is ready! version=" + window.device.cordova;
console.log("onDeviceReady. You should see this message in Visual Studio's output window.");
my_media = new Media("app/www/test.mp3");//ressource buildAction == content
my_media2 = new Media("app/www/test2.mp3");//ressource buildAction == content
}
var playCounter = 0;
var my_media = null;
function playMP3(){
console.log("playMP3() counter " + playCounter);
my_media.play();
playCounter++;
}
var my_media2 = null;
function playMP32(){
console.log("playMP32() counter " + playCounter);
my_media2.play();
playCounter++;
}
</script>
[...]
<p onclick="playMP3();">Click to Play MP3</p>
<p onclick="playMP32();">Click to Play MP3 2</p>
更新:Cordova 2.0.0
我用2.0.0的测试用例更新了Apache bug报告
有人能复制这个吗
链接到错误报告:
我看到您在第二次单击时收到一个IsolatedStorageException,这使我认为第一个
媒体
实例正在打开该文件,从而阻止再次访问该文件
我建议确保每个文件只创建一个Media
实例,或者先看看是否有办法处置旧实例
以下是我将尝试的内容(但我尚未测试):
var playCounter=0;
//已将my_媒体移到此处,因此不会重新创建它
var my_media=新媒体(“app/www/test.mp3”)//ressource buildAction==内容
函数playm3(){
log(“playm3()计数器”+播放计数器);
我的媒体播放();
playCounter++;
}
[...]
单击以播放MP3
我不确定答案是正确的,因为我没有尝试过,但把它看作是一次头脑风暴。
首先使用var my_media=new media(src、onSuccess、onError)创建音频代码>ctor,如果成功,只需播放它,如果出现错误,请首先尝试使用媒体释放它。释放代码
如果你知道要发布的其他事件或动作,那就更合适了
编辑:我刚刚注意到,您没有对媒体使用stop
,您也可以在需要时尝试使用它,例如playm3()的开头,如果媒体不为空,请尝试先停止它
干杯。我认为问题可能在于Silverlight每页只允许一个媒体实例的限制……而且由于PG/Cordova本质上是一个单页webBrowser实例,它只能有一个媒体实例。我正在构建一个XNA SoundEffect插件来解决这个问题。差点忘了。。。这符合我的目的。希望有帮助;-)
WP7.5/Cordova 1.9.0
要求:据我所知,仅适用于.wav文件。我必须转换我的.mp3文件,因为它们会抛出丑陋的异常
插件:C#:
Javascript:使用:
//NOTE: Allows you to pre-load sound effect files
//initialize pgSoundFX plugin
if (!navigator.plugins) {
console.log("plugIns do not exist!");
navigator.plugins = {};
}
navigator.plugins.pgSoundFX.loadSound("www/audio/file1.wav", "item1");
navigator.plugins.pgSoundFX.loadSound("www/audio/file2.wav", "item2");
navigator.plugins.pgSoundFX.loadSound("www/audio/file3.wav", "item3");
:
:
//NOTE: Play whenever needed
navigator.plugins.pgSoundFX.playSound("item1");
当然,您的文件位置(www/audio/)、名称(file1等)和引用名称(item1等)都是您想要的。和大多数人一样,有很多方法可以改进这段代码……请放心。我的用例预加载了5个.wav文件,大小从28k到364k不等,并在整个用户游戏中播放它们。是一个Cordova bug
由PurpuleColle在其gitHub回购协议中解决。请参阅对错误报告的评论。我尝试了GitHub的最新版本(1.8 rc1)。相同的问题。注意:问题与1.8相同,但错误不同。如果您关心此问题,我会将其报告给Apache:不适用于1.6.1。如果只播放一个文件,请使用1.8.0rc1。(不能使用其他媒体实例加载其他文件)。日志:System.Windows.dll中出现“System.ArgumentException”类型的第一次意外异常;错误:EL PARAARMetre EnSimeTo。但是你能按这个按钮多次按问题播放一个声音吗?播放多个不同的声音会让事情变得更复杂,因为你说一次不能有多个媒体实例。在每个播放按钮开始时,您需要检查my_media是否为null,如果不是null,则停止并可能释放(如@Onur_TOPAL所说),然后创建一个新实例。不管怎样,这是我的猜测。让我们澄清一下:只有第一个要播放的文件才能工作(如果你让实例保持活动状态,你可以多次播放)。如果您尝试播放其他文件(通过创建新的媒体实例),则无法播放。release().stop()无法解决此问题。您可能需要提出新问题或更改此问题,以反映您想要播放多个不同的声音。此问题与一个mp3有关,因为这是再现错误的最简单情况。显然,我的应用程序中有不止一个mp3,我想不止一次地播放它们。也许我不清楚,我不会在同一时间播放它们(混音器),而是一个接一个地播放(在btn上单击)。谢谢你的输入。我试过打电话了,停。在重新创建对象之前释放并“=null”:不成功。如果您的代码仍然与问题中的代码相同(我的意思是媒体变量是本地的),这些函数将无法工作。你应该像奥斯汀的回答一样把它定义为全球性的。如果它作为全局变量仍然不起作用,我完全不知道。谢谢你的回答。更新:从2.1开始,文件会播放,但是回调实现有缺陷。请参阅错误报告:更新:错误已修复并合并。