如何知道网址是音频还是视频?

时间:2014-09-10 09:41:37

标签: php jquery audio video rss

我从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");
}

它适用于大多数情况,但它可能是更多类型的音频文件,总有一些类型的音频,没有扩展......

有没有更好的方法来确定网址是音频还是文件?

4 个答案:

答案 0 :(得分:0)

您可以使用php函数get_headers()。您可以使用它来抓取您的一个链接并执行print_r()以查看您在"内容类型"键。

如果可行,请继续为所有文件类型创建一个开关案例,你应该好好去

http://php.net/manual/en/function.get-headers.php

答案 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;
}