- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我一直在搜索这个主题,但一无所获。我应该在网页上加载一定数量的 .m4a
文件,每个文件都在一个单独的播放器中。我找到并实现了 jplayer
,它声称可以处理格式。我决定默认使用 flash 回退以避免向后不兼容。 jplayer 示例中提供的示例 m4a 文件 (http://www.jplayer.org/audio/m4a/TSP-01-Cro_magnon_man.m4a
) 工作正常,但我还没有播放任何我拥有的文件。
我对所有文件运行了 file
unix 命令。 jplayer 的示例文件返回:
ISO 媒体,MPEG v4 系统,版本 2
非工作文件返回以下之一:
ISO 媒体、MPEG v4 系统、3GPP
ISO 媒体,MPEG v4 系统,版本 1
ISO 媒体、MPEG v4 系统、iTunes AAC-LC
我使用以下 PHP Controller 代码加载音频文件。我需要这样做才能“重写”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 格式。有没有人遇到过类似的问题?
最佳答案
DRM 问题
MIME 类型
您域的服务器必须为所有媒体 URL 提供正确的 MIME 类型(内容类型)。
未能提供正确的 MIME 类型将使媒体无法在某些 HTML5 浏览器上运行。这是仅影响 Firefox 和 Opera 的问题的常见原因。其他浏览器没有那么严格,但如果您在任何浏览器上播放媒体时遇到问题,应始终检查 MIME 类型是否正确。
媒体 MIME 类型
MP3: audio/mpeg
MP4: audio/mp4 video/mp4
OGG: audio/ogg video/ogg
WebM: audio/webm video/webm
WAV: audio/wav
如果您对音频和视频媒体使用通用扩展名,例如 audio.mp4 和 video.mp4,则只需为它们使用 MIME 类型的视频版本。即,视频/mp4
在 Apache 服务器上,您可以使用 .htaccess 文件根据文件扩展名设置 MIME 类型:
# AddType TYPE/SUBTYPE EXTENSION
AddType audio/mpeg mp3
AddType audio/mp4 m4a
AddType audio/ogg ogg
AddType audio/ogg oga
AddType audio/webm webma
AddType audio/wav wav
AddType video/mp4 mp4
AddType video/mp4 m4v
AddType video/ogg ogv
AddType video/webm webm
AddType video/webm webmv
3。字节范围请求
您的服务器必须启用范围请求。通过查看服务器的响应是否在其 header 中包含 Accept-Ranges 可以很容易地检查这一点。大多数 HTML5 浏览器都可以在下载过程中寻找新的文件位置,因此服务器必须允许请求新的范围。
无法接受字节范围请求会导致某些 HTML5 浏览器出现问题。通常无法从文件中读取持续时间,因为某些格式需要读取文件的开头和结尾才能知道其持续时间。如果服务器上未启用 Range 请求,Chrome 往往是问题最多的浏览器,但所有浏览器都会有一些问题,即使只是您必须等待所有媒体加载后再跳到接近尾端.
已知此问题会影响默认配置的 Jetty 6 服务器。
https://groups.google.com/d/msg/jplayer/nSM2UmnSKKA/bC-l3k0pCPMJ
尝试限制对媒体文件的访问时要小心。用户必须可以通过互联网访问媒体 URL,并且其响应必须采用预期的格式。
使用服务器响应来禁用本地媒体缓存可能会导致某些 HTML5 浏览器出现问题。这可能会导致媒体持续时间未知,这将在 jPlayer 的持续时间中显示为 NaN。
如果您在后端施展魔法以使其更安全,它们会确保您接受上述字节范围请求。
是的,我刚刚复制/粘贴了常见问题解答,对此一无所知
关于php - 播放特定格式的 m4a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12584584/
有没有办法使用 Clojure format(基于 java.util.Formatter)或 cl-format(基于 Common Lisp 的format) 以编程方式设置空格填充?如果您事先知
我正在尝试创建一个用户实体以及数据/文件(pdf格式)。上传并保存到数据库很好,但是当我让用户进入 postman 时尝试发送获取请求方法,然后在数据字段中显示一些糟糕的数据,而且我无法在数据库中看到
我必须将值为 {"STX","ETX"} 的普通字符串数组转换为十六进制值,并且我应该根据 http://www.asciitable.com/ 得到 {2,3} . 最佳答案 听起来你想要一个 Ma
我想格式化我的代码,但不确定哪种格式类型最适合我的项目需要。 我发现仅对于 dart 和 flutter 项目(我都有),有不止一个选项可用于格式化编程语言/框架中预先构建的代码。 Dart : da
我已经尝试了多个代码,例如这样 Sub DateFixer() Application.ScreenUpdating = False Application.Calculation =
SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.add("wt","csv"); server.query(query)
我有一个包含多个字符串的数据库,我从查询中获取了这些记录,并且我在 QString 中收到了这种格式的数据: "Mon, 13 Nov 2017 09:48:45 +0000" 所以,我需要根据文化来
我有一个 Delphi 2007 DBGrid,我想让用户以更新的 Excel 格式 (OOXML) 保存它,但我的标准是用户不需要安装 Excel。有没有人知道任何已经这样做的组件?是的,我已经搜索
我正在我们的普通 html 站点旁边创建一个移动站点。使用 rails 3.1。移动站点在子域 m.site.com 中访问。 我已经定义了移动格式(Mime::Type.register_alias
我正在尝试使用 xmlstarlet 格式化 xml 文件,但我不想创建新的 xml 文件。 我试过了 xmlstarlet fo --inplace --indent-tab --omit-decl
我在 A 列中有一个带有文本的电子表格。 例如 A1=MY TEXT1 A2=MY TEXT2 A3=MY TEXT3 A4=MY TEXT4 A5=MY TEXT5 我想在文本的前后添加撇号 结果是
我想做一些源代码转换(自动导入列表清理),我想保留注释和格式。我听说过一些关于解析器这样做的事情,我认为是 ghc 解析器。 看起来我可以通过从文件中提取内容来使用 hs-src-exts Langu
我在 Excel 中工作,我想根据另一张表中的列表找出一张表中是否有匹配项。 我已将值粘贴到列表中,并希望从另一张表中返回它们的相应值。包含字母和数字的单元格可以正常工作(例如:D5765000),但
我有一个 DurationField在我的模型中定义为 day0 = models.DurationField('Duration for Monday', default=datetime.time
我正在为我的应用程序开发 WMI 查询。它需要为给定的 VID/PID 找到分配的虚拟 COM 端口。使用 WMI Code Creator 我发现...... 命名空间:root\CIMV2 类:W
我试图弄清楚如何使用 NSTextList,但除了 this SO question 之外,在网上几乎没有找到有用的信息。和 the comment in this blog . 使用这个我已经能够创
我要查询all_objects表在哪里last_ddl_time='01 jan 2010'但它拒绝日期格式... 任何机构给我查询的确切格式? 最佳答案 正如 AKF 所说,您应该使用 Trunc除
我试图在我的应用程序中实现聊天功能。我使用了 2 个 JEditorPane。一个用于保存聊天记录,另一个用于将聊天发送到前一个 JEditorPane。 JEditorPane 是 text/h
我在大学里修了一个编译器类(class),内容非常丰富,很有趣,尽管也很多工作。既然给了我们要实现的语言规范,所以我学不到的一件事就是语言设计。我现在正在考虑创建一种有趣的简单玩具语言,以便我可以玩耍
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我是一名优秀的程序员,十分优秀!