关于这个主题的许多问题的答案对我没有帮助!这不是首先需要通过点击或任何其他类型的操作来启动音频的问题。
我想在我的网站上播放一些不同的短mp3。我发现的最佳方法如下。它适用于Internet Explorer和Chrome(未经测试的其他桌面浏览器)以及iOS版移动设备。但不是在Android上。
在我的html中,我初始化了一个音频设备:
<audio id="mp3play" src=""></audio>
仅用于定义名称&#34; mp3play&#34;。
在html的标题中,我有以下javascript:
<SCRIPT language=JavaScript>
<!--
function play(name) {
var oAudio = document.getElementById("mp3play");
oAudio.stop;
oAudio.src = name;
oAudio.play();
}
//-->
现在我可以使用以下链接调用播放器:
<a href="javascript:play('stuff/voc/WAVvow/011001.MP3');"
即使在Android上也能正常使用。
但是对于特殊要求,我不使用mp3的文件名。我已经制作了一个Perl脚本来根据计算提供pm3数据。为此,我使用以下链接:
<a href="javascript:play('../cgi-bin/playmp3.pl?185004');"
这个Perl代码&#34; playmp3.pl&#34;发送标题,然后发送完整的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错误日志:
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脚本的输出保存到名为&#34; test.MP3&#34;的文件中。然后我在我的html中准备了一个链接
<a href="javascript:play('stuff/test.MP3');"
这适用于Android!所以我可以假设Perl脚本的输出是正确的。
这是内容类型的问题吗?
这是文件名的问题(.pl而不是mp3)吗?
答案 0 :(得分:0)
这是文件名!
幸运的是,Android接受了Perl调用的附加“.mp3”:
www.mysite.com/cgi-bin/playmp3.pl?185004.mp3
我已经更改了Perl脚本以删除该添加,现在它可以在所有平台上运行。