我一直在寻找有关该主题的时间,但一无所获。我应该在网页上加载一定数量的.m4a
文件,每个文件都在一个单独的播放器中。我找到并实现jplayer
了,它声称可以处理格式。我决定默认使用 flash 回退以避免向后不兼容。jplayer 的示例 ( http://www.jplayer.org/audio/m4a/TSP-01-Cro_magnon_man.m4a
) 中提供的示例 m4a 文件工作正常,而我没有设法播放我拥有的任何文件。
我file
对所有文件运行了 unix 命令。jplayer 的示例文件返回:
ISO Media, MPEG v4 system, version 2
非工作文件返回以下内容之一:
ISO Media, MPEG v4 system, 3GPP
ISO Media, MPEG v4 system, version 1
ISO Media, MPEG v4 system, iTunes AAC-LC
我使用以下 PHP 控制器代码加载音频文件。我需要这样做才能“重写” URL 并隐藏文件的实际 URI。
header('Content-Type: audio/mp4');
header('Content-Disposition: inline; filename=xxxxxxxxxxTrack'.$id.'.m4a');
echo file_get_contents(MVC::siteRoot().'/'.$filename);
(MVC::siteRoot() 返回存储脚本的物理目录。)我也Content-Type: audio/mp4a-latm
再次尝试无济于事。我使用以下代码加载 jplayer:
$('.jp-jplayer').each(function() {
$(this).jPlayer({
ready: function () {
console.log($(this).attr('data-src'));
$(this).jPlayer("setMedia", {
m4a: $(this).attr('data-src')
});
$("#insp").jPlayerInspector({jPlayer:$(this)});
},
swfPath: "<?=MVC::httpRoot();?>/gui/swf/Jplayer.swf",
supplied: 'm4a',
wmode: 'window',
solution:"flash",
errorAlerts:true,
warningAlerts:true,
cssSelectorAncestor: '#' +
$(this).attr('id').replace('jquery_jplayer','jp_container')
});
});
在 DOM 方面,对于由渐进式数字 $i 标识的每个音频文件,会发生以下情况:
<div id="jquery_jplayer_<?=$i?>" class="jp-jplayer" data-src="<?=MVC::httpRoot()?>/get/audio/<?=$traccia['audioid']?>"></div>
<div id="jp_container_<?=$i?>" class="jp-audio">[...]
播放器似乎加载正确,DOM 根据 jplayer 重新排列,但按下播放按钮时没有任何反应。代表网络未发现错误,文件已正确传递但内容未播放且未发出警告或错误。实际上,我收听文件的唯一方法是下载它们并在 QuickTime 中打开它们,因为即使 Chrome 也不会播放它们。另一方面,Safari 会很乐意加载和播放文件,但不会在网站内。遗憾的是,我无法直接控制上传文件的内容,因为它们来自 iOS/Android 应用程序,并且客户端出于某种原因请求了 .m4a 格式。有没有人遇到过类似的问题?