我一直在寻找这个话题,但一无所获.我应该在网页上加载一定数量的.m4a文件,每个文件都在一个单独的播放器中.我找到并实现了jplayer,声称处理格式.我决定默认使用闪回后备来避免向后不兼容. jplayer的示例(http://www.jplayer.org/audio/m4a/TSP-01-Cro_magnon_man.m4a)中提供的示例m4a文件工作正常,而我还没有设法播放我拥有的任何文件.
我在所有文件上运行了unix命令. jplayer的示例文件返回:
> ISO Media,MPEG v4系统,版本2
非工作文件返回以下之一:
> ISO Media,3GPP>
ISO Media,版本1>
ISO Media,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标识的每个音频文件,会发生以下情况:
玩家似乎正确加载,DOM根据jplayer重新排列,但是在播放按钮的压力下没有任何反应.代表网络没有发现错误,文件正确传递但内容未播放且未发出警告或错误.实际上,我唯一能听到这些文件的方法是下载它们并在QuickTime中打开它们,因为甚至Chrome都不会播放它们.另一方面,Safari很乐意加载和播放文件,但不在网站内.遗憾的是,我不能直接控制上传文件的内容,因为它们来自iOS / Android应用程序,并且客户端出于某种原因请求.m4a格式.有没有人遇到类似的问题?