在 Android 上播放音频
Play Audio on Android
关于这个主题的许多问题的答案对我没有帮助!这不是音频需要首先通过点击或任何其他类型的操作启动的问题。
我想在我的网站上播放一些不同的短 mp3。我发现的最佳方法如下。它适用于 Internet Explorer 和 Chrome(其他未测试的桌面浏览器)以及 iOS 的移动设备。但不是 Android.
在我的 html 中,我初始化了一个音频设备:
<audio id="mp3play" src=""></audio>
仅用于定义名称"mp3play"。
在 html 的 header 我有以下 javascript:
<SCRIPT language=JavaScript>
<!--
function play(name) {
var oAudio = document.getElementById("mp3play");
oAudio.stop;
oAudio.src = name;
oAudio.play();
}
//-->
现在我可以使用以下命令调用播放器 link:
<a href="javascript:play('stuff/voc/WAVvow/011001.MP3');"
即使在 Android 上也能正常工作。
但出于特殊要求,我不使用 mp3 的文件名。我制作了一个 Perl 脚本来根据计算传递 pm3 数据。为此,我使用以下 link:
<a href="javascript:play('../cgi-bin/playmp3.pl?185004');"
此 Perl 代码 "playmp3.pl" 发送 header 然后是完整的 mp3 数据:
($entry[0] has a pointer to the desired data, $entry[1] the length)
open(DAT, "<../wbtde/DictData/dv8.dat");
binmode DAT;
seek(DAT, $entry[0], 0);
read(DAT, $mp3, $entry[1]); # Lesen des Eintrages
close DAT;
print "Content-type: audio/mpeg\n\n";
print $mp3;
这在 IE、Chrome 和 iOS 浏览器上也能正常工作,但在 Android 上不行。
我也可以直接用
调用脚本
www.mysite.com/cgi-bin/playmp3.pl?185004
这在 IE、Chrome 和 iOS 浏览器上也能正常工作,但在 Android 上不行。 Android 告诉我它不能播放这种类型的内容。但是内容类型 audio/mpeg3 也没有播放。
这是 Android 错误日志,当我只点击一个 link 时:
D/CDX_Player( 2402): >>>>>>>> CedarX Player Version: 00010707
I/CedarPlayerWrapper( 2402): setDataSource('http://www.example.com/cgi-bin/playmp3.pl?062013')
I/ChromiumHTTPDataSource( 2402): connect to http://www.example.com/cgi-bin/playmp3.pl?062013 @0
W/MediaPlayer( 967): info/warning (701, 0)
I/MediaPlayer( 967): Info (701,0)
D/sft_http_stream( 2402): reset stream
I/NuCachedSource2( 2402): ERROR_END_OF_STREAM
W/demux_http( 2402): unknown file format!
E/demux_http( 2402): open error, destroy stream handle
E/DemuxSftNetwork_Component( 2402): cedar demuxer open error
E/CedarXPlayer( 2402): CedarXPlayer:prepare error!
E/MediaPlayer( 967): error (1, -2147483648)
E/MediaPlayer( 967): Error (1,-2147483648)
I/CDX_Player( 2402): cancel prepare!
D/CDX_Player( 2402): >>>>>>>> CedarX Player Version: 00010707
I/CedarPlayerWrapper( 2402): setDataSource('http://www.example.com/cgi-bin/playmp3.pl?062013')
W/MediaPlayer( 967): info/warning (701, 0)
I/ChromiumHTTPDataSource( 2402): connect to http://www.example.com/cgi-bin/playmp3.pl?062013 @0
I/MediaPlayer( 967): Info (701,0)
D/sft_http_stream( 2402): reset stream
I/NuCachedSource2( 2402): ERROR_END_OF_STREAM
W/demux_http( 2402): unknown file format!
E/demux_http( 2402): open error, destroy stream handle
E/DemuxSftNetwork_Component( 2402): cedar demuxer open error
E/CedarXPlayer( 2402): CedarXPlayer:prepare error!
E/MediaPlayer( 967): error (1, -2147483648)
E/MediaPlayer( 967): Error (1,-2147483648)
I/CDX_Player( 2402): cancel prepare!
再试一次:
我已将 Perl 脚本的输出保存到名称为 "test.MP3" 的文件中。然后我在我的 html 中准备了一个 link as
<a href="javascript:play('stuff/test.MP3');"
这适用于 Android!所以我可以假设 Perl 脚本的输出是正确的。
是内容类型的问题吗?
是不是文件名的问题(.pl 而不是 mp3)?
是文件名!
幸运的是 Android 接受向 Perl 调用添加“.mp3”:
www.mysite.com/cgi-bin/playmp3.pl?185004.mp3
我已经更改了 Perl 脚本以删除该添加项,现在它适用于所有平台。
关于这个主题的许多问题的答案对我没有帮助!这不是音频需要首先通过点击或任何其他类型的操作启动的问题。
我想在我的网站上播放一些不同的短 mp3。我发现的最佳方法如下。它适用于 Internet Explorer 和 Chrome(其他未测试的桌面浏览器)以及 iOS 的移动设备。但不是 Android.
在我的 html 中,我初始化了一个音频设备:
<audio id="mp3play" src=""></audio>
仅用于定义名称"mp3play"。
在 html 的 header 我有以下 javascript:
<SCRIPT language=JavaScript>
<!--
function play(name) {
var oAudio = document.getElementById("mp3play");
oAudio.stop;
oAudio.src = name;
oAudio.play();
}
//-->
现在我可以使用以下命令调用播放器 link:
<a href="javascript:play('stuff/voc/WAVvow/011001.MP3');"
即使在 Android 上也能正常工作。
但出于特殊要求,我不使用 mp3 的文件名。我制作了一个 Perl 脚本来根据计算传递 pm3 数据。为此,我使用以下 link:
<a href="javascript:play('../cgi-bin/playmp3.pl?185004');"
此 Perl 代码 "playmp3.pl" 发送 header 然后是完整的 mp3 数据:
($entry[0] has a pointer to the desired data, $entry[1] the length)
open(DAT, "<../wbtde/DictData/dv8.dat");
binmode DAT;
seek(DAT, $entry[0], 0);
read(DAT, $mp3, $entry[1]); # Lesen des Eintrages
close DAT;
print "Content-type: audio/mpeg\n\n";
print $mp3;
这在 IE、Chrome 和 iOS 浏览器上也能正常工作,但在 Android 上不行。
我也可以直接用
调用脚本www.mysite.com/cgi-bin/playmp3.pl?185004
这在 IE、Chrome 和 iOS 浏览器上也能正常工作,但在 Android 上不行。 Android 告诉我它不能播放这种类型的内容。但是内容类型 audio/mpeg3 也没有播放。
这是 Android 错误日志,当我只点击一个 link 时:
D/CDX_Player( 2402): >>>>>>>> CedarX Player Version: 00010707
I/CedarPlayerWrapper( 2402): setDataSource('http://www.example.com/cgi-bin/playmp3.pl?062013')
I/ChromiumHTTPDataSource( 2402): connect to http://www.example.com/cgi-bin/playmp3.pl?062013 @0
W/MediaPlayer( 967): info/warning (701, 0)
I/MediaPlayer( 967): Info (701,0)
D/sft_http_stream( 2402): reset stream
I/NuCachedSource2( 2402): ERROR_END_OF_STREAM
W/demux_http( 2402): unknown file format!
E/demux_http( 2402): open error, destroy stream handle
E/DemuxSftNetwork_Component( 2402): cedar demuxer open error
E/CedarXPlayer( 2402): CedarXPlayer:prepare error!
E/MediaPlayer( 967): error (1, -2147483648)
E/MediaPlayer( 967): Error (1,-2147483648)
I/CDX_Player( 2402): cancel prepare!
D/CDX_Player( 2402): >>>>>>>> CedarX Player Version: 00010707
I/CedarPlayerWrapper( 2402): setDataSource('http://www.example.com/cgi-bin/playmp3.pl?062013')
W/MediaPlayer( 967): info/warning (701, 0)
I/ChromiumHTTPDataSource( 2402): connect to http://www.example.com/cgi-bin/playmp3.pl?062013 @0
I/MediaPlayer( 967): Info (701,0)
D/sft_http_stream( 2402): reset stream
I/NuCachedSource2( 2402): ERROR_END_OF_STREAM
W/demux_http( 2402): unknown file format!
E/demux_http( 2402): open error, destroy stream handle
E/DemuxSftNetwork_Component( 2402): cedar demuxer open error
E/CedarXPlayer( 2402): CedarXPlayer:prepare error!
E/MediaPlayer( 967): error (1, -2147483648)
E/MediaPlayer( 967): Error (1,-2147483648)
I/CDX_Player( 2402): cancel prepare!
再试一次: 我已将 Perl 脚本的输出保存到名称为 "test.MP3" 的文件中。然后我在我的 html 中准备了一个 link as
<a href="javascript:play('stuff/test.MP3');"
这适用于 Android!所以我可以假设 Perl 脚本的输出是正确的。
是内容类型的问题吗?
是不是文件名的问题(.pl 而不是 mp3)?
是文件名!
幸运的是 Android 接受向 Perl 调用添加“.mp3”:
www.mysite.com/cgi-bin/playmp3.pl?185004.mp3
我已经更改了 Perl 脚本以删除该添加项,现在它适用于所有平台。