我从xml rss feed获取了一些网址。 rss对音频或视频文件没有区别,它们都来自同一个标签。如何区分音频或视频网址是否提供播放权?
我将url存储在var
中var url = "http://www.someWeb/someFile.mp3";
我尝试使用jQuery进行搜索:
var search = url.search(/.mp3|.m4a/i);
if (search > -1){
$('#check').text("it is audio");
}else {
$('#check').text("it is video");
}
它适用于大多数情况,但它可能是更多类型的音频文件,总有一些类型的音频,没有扩展......
有没有更好的方法来确定网址是音频还是文件?
答案 0 :(得分:0)
您可以使用php函数get_headers()。您可以使用它来抓取您的一个链接并执行print_r()以查看您在"内容类型"键。
如果可行,请继续为所有文件类型创建一个开关案例,你应该好好去
答案 1 :(得分:0)
这是一个黑暗的镜头,但如果你需要在加载之前知道内容类型,你可以尝试HEAD请求:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4
仅在内容服务支持时才这样做。当然,如果您编写了该服务,那么您可以自己实现。只需发送标题,但省略实际内容。
在接收端,响应标头应包含'内容类型'。
通过此,您可以提取正在传递的内容类型。它通常看起来像这样:
text/plain
image/jpeg
video/mp4
audio/mp3
从前缀确定一般媒体很简单。
答案 2 :(得分:0)
您必须获取HTTP标头字段(此案例的内容类型)。看这里:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
答案 3 :(得分:0)
这有点困难。 我遇到了同样的问题,从RSS源加载内容,可能包含视频或音频。
没有实际请求它就无法知道内容是什么,而且由于我正在使用外部网站的内容,我无法确定它们是否支持HEAD方法。
我目前正在做的是假设URL以文件名结尾,使用扩展名并使用浏览器就绪版https://github.com/broofa/node-mime来获取相应的MIME类型。
获取MIME类型后,我会检查它是以“视频”还是“音频”开头。
以下是代码:
function isVideoByURL(url) {
var filename = url.split('/').pop().split('#')[0].split('?')[0];
if(filename) {
var ext = filename.split('.').pop();
var mimeType = mime.getType(ext);
return mimeType.startsWith('video');
}
return false;
}